public void SourceContainsNullableFields_CanBeReplicated()
        {
            var source = new ClassWithNullables
                         {
                             field1 = null,
                             field2 = new Struct { field1 = "some string", field2 = new Class() }
                         };

            ClassWithNullables result = objectReplicator.Replicate(source);

            Assert.That(result.field1, Is.Null);
            Assert.That(result.field2, Is.Not.Null);
            Assert.That(result.field2.Value.field1, Is.SameAs(source.field2.Value.field1));
            Assert.That(result.field2.Value.field2, Is.Not.SameAs(source.field2.Value.field2));
        }
        public void SourceContainsNullableFields_CanBeReplicated()
        {
            var source = new ClassWithNullables
            {
                field1 = null,
                field2 = new Struct {
                    field1 = "some string", field2 = new Class()
                }
            };

            ClassWithNullables result = objectReplicator.Replicate(source);

            Assert.That(result.field1, Is.Null);
            Assert.That(result.field2, Is.Not.Null);
            Assert.That(result.field2.Value.field1, Is.SameAs(source.field2.Value.field1));
            Assert.That(result.field2.Value.field2, Is.Not.SameAs(source.field2.Value.field2));
        }
        public void SourceIsReplicatedTwice_SecondReplicationIsFaster()
        {
            var source = new ClassWithNullables {
                field2 = new Struct {
                    field2 = new Class()
                }
            };
            var stopwatch = new Stopwatch();

            objectReplicator.Replicate(DateTime.Today);
            objectReplicator.Replicate(DateTime.Today);

            stopwatch.Start();
            objectReplicator.Replicate(source);
            var firstTime = stopwatch.ElapsedTicks;

            stopwatch.Restart();
            objectReplicator.Replicate(source);
            var secondTime = stopwatch.ElapsedTicks;

            stopwatch.Stop();
            Console.Write(firstTime + "\n" + secondTime);
            Assert.That(secondTime, Is.LessThan(firstTime / 10));
        }
        public void SourceIsReplicatedTwice_SecondReplicationIsFaster()
        {
            var source = new ClassWithNullables { field2 = new Struct { field2 = new Class() } };
            var stopwatch = new Stopwatch();
            objectReplicator.Replicate(DateTime.Today);
            objectReplicator.Replicate(DateTime.Today);

            stopwatch.Start();
            objectReplicator.Replicate(source);
            var firstTime = stopwatch.ElapsedTicks;
            stopwatch.Restart();
            objectReplicator.Replicate(source);
            var secondTime = stopwatch.ElapsedTicks;

            stopwatch.Stop();
            Console.Write(firstTime + "\n" + secondTime);
            Assert.That(secondTime, Is.LessThan(firstTime / 10));
        }