public void TestDoubleGettingConverter()
        {
            var converterCollection = new TestConverterCollection <TestDataSource, TestDataDest>(pathFormatterCollection,
                                                                                                 configurator =>
            {
                configurator.Target(x => x.C).Set(x => x.A);
                configurator.Target(x => x.D).Set(x => x.B);
            });
            var recorder = AssignRecorderInitializer.StartAssignRecorder();

            var converter = converterCollection.GetConverter(MutatorsContext.Empty);

            converter(new TestDataSource());
            recorder.Stop();

            var records = recorder.GetRecords();

            Assert.AreEqual(1, records.Count);
            Assert.AreEqual(3, records[0].CompiledCount);
            Assert.AreEqual(2, records[0].ExecutedCount);

            var newRecorder = AssignRecorderInitializer.StartAssignRecorder();

            Assert.AreNotSame(recorder, newRecorder);
            converter = converterCollection.GetConverter(MutatorsContext.Empty);
            converter(new TestDataSource());
            recorder.Stop();

            records = newRecorder.GetRecords();
            Assert.AreEqual(1, records.Count);
            Assert.AreEqual(2, records[0].CompiledCount);
            Assert.AreEqual(2, records[0].ExecutedCount);
        }
        public void TestNotCovered()
        {
            var recorder = AssignRecorderInitializer.StartAssignRecorder();

            var testConfigurator = new TestConverterCollection <TestDataSource, TestDataDest>(pathFormatterCollection,
                                                                                              configurator =>
            {
                configurator.Target(x => x.C).Set(x => x.A);
                configurator.If(x => x.B == 10000).Target(x => x.D).Set(x => x.B);
            });

            var converter  = testConfigurator.GetConverter(MutatorsContext.Empty);
            var actualData = converter(new TestDataSource());

            recorder.Stop();

            Assert.AreEqual(12, actualData.C);
            Assert.AreEqual(2, actualData.D);

            var converterNode = recorder.GetRecords()[0];

            Assert.AreEqual(3, converterNode.CompiledCount);
            Assert.AreEqual(1, converterNode.ExecutedCount);
            Assert.AreEqual(1, converterNode.Records["TestDataDest"].Records["C"].ExecutedCount);
            Assert.AreEqual(0, converterNode.Records["TestDataDest"].Records["D"].ExecutedCount);
        }
Esempio n. 3
0
        public void MultithreadingTest()
        {
            var actualDataList = new ConcurrentBag <TestDataDest>();
            var threads        = new ConcurrentBag <Thread>();

            for (var i = 0; i < 10; i++)
            {
                var thread = new Thread(() =>
                {
                    while (!start)
                    {
                    }

                    try
                    {
                        var recorder  = AssignRecorderInitializer.StartAssignRecorder();
                        var converter = new TestConverterCollection <TestDataSource, TestDataDest>(pathFormatterCollection,
                                                                                                   configurator => { configurator.Target(x => x.C).Set(x => x.A); }).GetConverter(MutatorsContext.Empty);
                        actualDataList.Add(converter(new TestDataSource()));
                        recorder.Stop();
                        Assert.AreEqual(2, recorder.GetRecords()[0].CompiledCount);
                        Assert.AreEqual(1, recorder.GetRecords()[0].ExecutedCount);
                    }
                    catch (Exception e)
                    {
                        lastException = e;
                        Console.WriteLine(e);
                    }
                });
                thread.Start();
                threads.Add(thread);
            }

            start = true;

            foreach (var thread in threads)
            {
                thread.Join();
            }

            Assert.AreEqual(10, actualDataList.Count);
            foreach (var data in actualDataList)
            {
                Assert.AreEqual(12, data.C);
            }

            if (lastException != null)
            {
                throw lastException;
            }
        }
        private static void DoTestSetNull <TSource, TDest>(TestConverterCollection <TSource, TDest> converterCollection, TSource source, int expectedCompiledCount, int expectedExecutedCount) where TDest : new()
        {
            var recorder  = AssignRecorderInitializer.StartAssignRecorder();
            var converter = converterCollection.GetConverter(MutatorsContext.Empty);

            converter(source);
            recorder.Stop();

            var records = recorder.GetRecords();

            Assert.AreEqual(1, records.Count);
            Assert.AreEqual(expectedCompiledCount, records[0].CompiledCount);
            Assert.AreEqual(expectedExecutedCount, records[0].ExecutedCount);
        }
        public void TestStop()
        {
            var recorder = AssignRecorderInitializer.StartAssignRecorder();

            var testConfigurator = new TestConverterCollection <TestDataSource, TestDataDest>(pathFormatterCollection,
                                                                                              configurator =>
            {
                configurator.Target(x => x.C).Set(x => x.A);
                configurator.Target(x => x.D).Set(x => x.B);
            });

            recorder.Stop();
            var converter = testConfigurator.GetConverter(MutatorsContext.Empty);

            converter(new TestDataSource());

            Assert.IsEmpty(recorder.GetRecords());
        }
        public void Test()
        {
            var recorder         = AssignRecorderInitializer.StartAssignRecorder();
            var testConfigurator = new TestConverterCollection <TestDataSource, TestDataDest>(pathFormatterCollection,
                                                                                              configurator =>
            {
                configurator.Target(x => x.C).Set(x => x.A);
                configurator.Target(x => x.D).Set(x => x.B);
            });
            var converter = testConfigurator.GetConverter(MutatorsContext.Empty);

            var testDataSource = new TestDataSource();
            var actualData     = converter(testDataSource);

            recorder.Stop();
            Assert.AreEqual(actualData.C, 12);

            Assert.IsNotEmpty(recorder.GetRecords());

            var converterNode = recorder.GetRecords()[0];

            Assert.AreEqual(1, converterNode.Records.Count);
            Assert.AreEqual("TestConverterCollection`2", converterNode.Name);

            var objectTypeNode = converterNode.Records["TestDataDest"];

            Assert.AreEqual(2, objectTypeNode.Records.Count);
            Assert.AreEqual("TestDataDest", objectTypeNode.Name);

            var dataCNode = objectTypeNode.Records["C"];

            Assert.AreEqual("C", dataCNode.Name);
            Assert.AreEqual(1, dataCNode.Records.Count);
            Assert.AreEqual("source.A", dataCNode.Records["source.A"].Name);

            var dataDNode = objectTypeNode.Records["D"];

            Assert.AreEqual("D", dataDNode.Name);
            Assert.AreEqual(1, dataDNode.Records.Count);
            Assert.AreEqual("source.B", dataDNode.Records["source.B"].Name);
        }
        public void TestCacheConverter()
        {
            var converterCollection = new TestConverterCollection <TestDataSource, TestDataDest>(pathFormatterCollection,
                                                                                                 configurator =>
            {
                configurator.Target(x => x.C).Set(x => x.A);
                configurator.Target(x => x.D).Set(x => x.B);
            });

            var converter = converterCollection.GetConverter(MutatorsContext.Empty);

            Assert.AreSame(converter, converterCollection.GetConverter(MutatorsContext.Empty));

            var recorder = AssignRecorderInitializer.StartAssignRecorder();
            var converterWhileRecording = converterCollection.GetConverter(MutatorsContext.Empty);

            Assert.AreSame(converterWhileRecording, converter);

            recorder.Stop();
            Assert.AreSame(converter, converterCollection.GetConverter(MutatorsContext.Empty));
        }
        public void TestRecordsAreDistinct()
        {
            var recorder = AssignRecorderInitializer.StartAssignRecorder();

            var testConfigurator = new TestConverterCollection <TestDataSource, TestDataDest>(pathFormatterCollection,
                                                                                              configurator =>
            {
                configurator.Target(x => x.C).Set(x => x.A);
                configurator.Target(x => x.D).Set(x => x.B);
            });

            var converter = testConfigurator.GetConverter(MutatorsContext.Empty);

            converter(new TestDataSource());
            converter(new TestDataSource());
            recorder.Stop();

            var converterNode = recorder.GetRecords()[0];

            Assert.AreEqual(3, converterNode.CompiledCount);
            Assert.AreEqual(4, converterNode.ExecutedCount);
        }
        public void TestExcludeTypesFromCoverage()
        {
            var recorder = AssignRecorderInitializer.StartAssignRecorder()
                           .ExcludingType <TestDataSource>()
                           .ExcludingInterface <ITestInterface>()
                           .ExcludingProperty((TestComplexDataDest x) => x.FieldY)
                           .ExcludingGenericProperty((IGenericTestInterface <object> x) => x.IntA);
            var converterCollection = new TestConverterCollection <TestComplexDataSource, TestComplexDataDest>(pathFormatterCollection,
                                                                                                               configurator =>
            {
                configurator.Target(x => x.FieldC.A).Set(x => x.FieldA.B);
                configurator.Target(x => x.FieldC.B).Set(x => x.FieldA.A);
                configurator.Target(x => x.FieldD.StrB).Set(x => x.FieldB.StrA);
                configurator.Target(x => x.FieldD.StrA).Set(x => x.FieldB.StrB);
                configurator.Target(x => x.FieldY).If(x => x.FieldA.A > 10).Set(x => x.FieldX);
                configurator.Target(x => x.IntField.IntA).Set(x => x.IntField.IntA);
                configurator.Target(x => x.IntField.IntB).Set(x => x.IntField.IntB);
                configurator.Target(x => x.TestProperty).Set(x => x.TestProperty.S);
            });
            var source = new TestComplexDataSource
            {
                FieldA = new TestDataSource(),
                FieldB = new TestDataSourceNullable
                {
                    StrA = "a",
                    StrB = "b"
                },
                FieldX   = "aba",
                IntField = new TestDataSourceNullableInt
                {
                    IntA = 1
                },
                TestProperty = new TestInterfaceImpl {
                    S = "GRobas"
                }
            };
            var converter = converterCollection.GetConverter(MutatorsContext.Empty);

            converter(source);
            recorder.Stop();

            var records = recorder.GetRecords()[0].Records;
            var record  = records["TestComplexDataDest"];

            Assert.AreEqual("TestComplexDataDest", record.Name);
            Assert.IsFalse(record.IsExcludedFromCoverage);

            records = record.Records;
            record  = records["FieldC"];

            Assert.AreEqual("FieldC", record.Name);
            Assert.IsTrue(record.IsExcludedFromCoverage);
            Assert.AreEqual("A", record.Records["A"].Name);
            Assert.IsTrue(record.Records["A"].IsExcludedFromCoverage);
            Assert.AreEqual("B", record.Records["B"].Name);
            Assert.IsTrue(record.Records["B"].IsExcludedFromCoverage);

            record = records["FieldD"];
            Assert.AreEqual("FieldD", record.Name);
            Assert.IsFalse(record.IsExcludedFromCoverage);
            Assert.AreEqual("StrB", record.Records["StrB"].Name);
            Assert.IsFalse(record.Records["StrB"].IsExcludedFromCoverage);
            Assert.AreEqual("StrA", record.Records["StrA"].Name);
            Assert.IsFalse(record.Records["StrA"].IsExcludedFromCoverage);

            record = records["FieldY"];
            Assert.AreEqual("FieldY", record.Name);
            Assert.IsTrue(record.IsExcludedFromCoverage);

            record = records["IntField"];
            Assert.AreEqual("IntField", record.Name);
            Assert.IsFalse(record.IsExcludedFromCoverage);
            Assert.AreEqual("IntA", record.Records["IntA"].Name);
            Assert.IsTrue(record.Records["IntA"].IsExcludedFromCoverage);
            Assert.AreEqual("IntB", record.Records["IntB"].Name);
            Assert.IsFalse(record.Records["IntB"].IsExcludedFromCoverage);

            record = records["TestProperty"];
            Assert.AreEqual("TestProperty", record.Name);
            Assert.IsTrue(record.IsExcludedFromCoverage);
        }