示例#1
0
        public void CheckForTypeSafety(int integerStandard, string stringStandard, long longStandard,
                                       int?integerNullable, long?longNullable)
        {
            IChangeLogPlayer <SimpleItem, int> logPlayer = new ChangeLogPlayer <SimpleItem, int>();
            TestDelegate testDelegate = () => logPlayer.Apply(new ChangeLog <int>(), null);

            Assert.That(testDelegate, Throws.TypeOf <ArgumentException>());
        }
示例#2
0
        public void SequencialChanges(int finalInt, int iterations)
        {
            IChangeLogPlayer <SimpleItem, int> logPlayer = new ChangeLogPlayer <SimpleItem, int>();
            ICollection <ChangeLog <int> >     changes   = new LinkedList <ChangeLog <int> >();

            changes.Add(new ChangeLog <int>
            {
                Property           = "IntegerStandard",
                ChangedUtc         = DateTime.UtcNow.AddSeconds(5),
                Value              = finalInt.ToString(),
                FullTypeName       = "JSCloud.LogPlayer.Tests.SimpleItem",
                PropertySystemType = "System.Int32"
            });

            for (var i = 0; i < iterations; i++)
            {
                changes.Add(new ChangeLog <int>
                {
                    Property           = "IntegerStandard",
                    ChangedUtc         = DateTime.UtcNow,
                    Value              = i.ToString(),
                    ObjectId           = i,
                    FullTypeName       = "JSCloud.LogPlayer.Tests.SimpleItem",
                    PropertySystemType = "System.Int32"
                });
            }

            var timer = new Stopwatch();

            timer.Start();
            var SimpleItem = logPlayer.RebuildFromLogs(changes);

            timer.Stop();
            Assert.AreEqual(finalInt, SimpleItem.IntegerStandard);
            Debug.WriteLine($"{timer.ElapsedMilliseconds}ms elapsed");

            Assert.IsTrue(timer.ElapsedMilliseconds <= iterations);
        }
示例#3
0
        public void DetectChanges(int finalInt, int iterations)
        {
            var simpleItemSource = new SimpleItem()
            {
                IntegerNullable = 1, StringStandard = "Hello World", LongNullable = null, ObjectId = 1
            };
            var simpleItemDestination = new SimpleItem()
            {
                IntegerNullable = 2, StringStandard = "Hello World 2", LongNullable = 3, ObjectId = 1
            };

            IChangeLogPlayer <SimpleItem, int> logPlayer = new ChangeLogPlayer <SimpleItem, int>();

            var changes = logPlayer.CalculateChanges(simpleItemSource, simpleItemDestination, 1);

            bool integerNullableFound   = false;
            bool stringStandardFound    = false;
            bool objectIdFound          = false;
            bool longNullableFoundFalse = false;

            foreach (var change in changes)
            {
                integerNullableFound   = integerNullableFound == true || (change.Property == "IntegerNullable" && change.Value == "1");
                stringStandardFound    = stringStandardFound == true || (change.Property == "StringStandard" && change.Value == "Hello World");
                objectIdFound          = objectIdFound == true || (change.Property == "ObjectId");
                longNullableFoundFalse = longNullableFoundFalse == true || (change.Property == "LongNullable" && string.IsNullOrEmpty(change.Value));
            }

            Assert.IsTrue(integerNullableFound);
            Assert.IsTrue(stringStandardFound);
            Assert.IsTrue(longNullableFoundFalse);
            Assert.IsTrue(!objectIdFound);

            TestDelegate testDelegate = () => logPlayer.CalculateChanges(null, null, 1);

            Assert.That(testDelegate, Throws.TypeOf <ArgumentNullException>());
        }
示例#4
0
        public void SimpleBuild(int integerStandard, string stringStandard, long longStandard, int?integerNullable,
                                long?longNullable)
        {
            IChangeLogPlayer <SimpleItem, int> logPlayer = new ChangeLogPlayer <SimpleItem, int>();
            var timer = new Stopwatch();

            timer.Start();
            for (var i = 0; i < 1000; i++)
            {
                IList <ChangeLog <int> > changes = new List <ChangeLog <int> >();
                changes.Add(new ChangeLog <int>
                {
                    ChangeLogId        = null,
                    ChangedBy          = null,
                    Property           = "IntegerStandard",
                    ChangedUtc         = DateTime.UtcNow,
                    Value              = integerStandard.ToString(),
                    FullTypeName       = "JSCloud.LogPlayer.Tests.SimpleItem",
                    PropertySystemType = "System.Int32"
                });
                changes.Add(new ChangeLog <int>
                {
                    ChangeLogId        = null,
                    ChangedBy          = null,
                    Property           = "StringStandard",
                    ChangedUtc         = DateTime.UtcNow,
                    Value              = stringStandard,
                    FullTypeName       = "JSCloud.LogPlayer.Tests.SimpleItem",
                    PropertySystemType = "System.String"
                });
                changes.Add(new ChangeLog <int>
                {
                    ChangeLogId        = null,
                    ChangedBy          = null,
                    Property           = "LongStandard",
                    ChangedUtc         = DateTime.UtcNow,
                    Value              = longStandard.ToString(),
                    FullTypeName       = "JSCloud.LogPlayer.Tests.SimpleItem",
                    PropertySystemType = "System.Int64"
                });
                changes.Add(new ChangeLog <int>
                {
                    ChangeLogId        = null,
                    ChangedBy          = null,
                    Property           = "IntegerNullable",
                    ChangedUtc         = DateTime.UtcNow,
                    Value              = integerNullable?.ToString(),
                    FullTypeName       = "JSCloud.LogPlayer.Tests.SimpleItem",
                    PropertySystemType = "System.Int32"
                });
                changes.Add(new ChangeLog <int>
                {
                    ChangeLogId        = null,
                    ChangedBy          = null,
                    Property           = "LongNullable",
                    ChangedUtc         = DateTime.UtcNow,
                    Value              = longNullable?.ToString(),
                    FullTypeName       = "JSCloud.LogPlayer.Tests.SimpleItem",
                    PropertySystemType = "System.Int32"
                });

                var SimpleItem = logPlayer.RebuildFromLogs(changes);
                Assert.AreEqual(integerStandard, SimpleItem.IntegerStandard);
            }

            timer.Stop();
            Debug.WriteLine($"{timer.ElapsedMilliseconds}ms elapsed");

            Assert.IsTrue(timer.ElapsedMilliseconds < 1000);
        }