public void MapEnumerable_Expected_PathToEnumerable()
        {
            PocoMapper   pocoMapper = new PocoMapper();
            PocoTestData testData   = GivenWithParallelAndNestedEnumerables();

            IEnumerable <IPath> paths = pocoMapper.Map(testData.EnumerableData);

            Assert.IsTrue(paths.Any(p => p.ActualPath == "UnnamedArray().Name"));
        }
        public void CreateNavigator_Expected_PocoNavigator()
        {
            PocoTestData     pocoTestData     = Given();
            PocoInterrogator pocoInterrogator = new PocoInterrogator();

            INavigator navigator = pocoInterrogator.CreateNavigator(pocoTestData, typeof(PocoPath));

            Type expected = typeof(PocoNavigator);
            Type actual   = navigator.GetType();

            Assert.AreEqual(expected, actual);
        }
        public void CreateMapper_Expected_PocoMapper()
        {
            PocoTestData     pocoTestData     = Given();
            PocoInterrogator pocoInterrogator = new PocoInterrogator();

            IMapper mapper = pocoInterrogator.CreateMapper(pocoTestData);

            Type expected = typeof(PocoMapper);
            Type actual   = mapper.GetType();

            Assert.AreEqual(expected, actual);
        }
        internal PocoTestData Given()
        {
            PocoTestData testData = new PocoTestData
            {
                Name = "Brendon",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherBrendon",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData1 = new PocoTestData
            {
                Name = "Mo",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherMo",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData2 = new PocoTestData
            {
                Name = "Trav",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherTrav",
                    Age = 31,
                },
            };

            testData.EnumerableData = new List<PocoTestData> { nestedTestData1, nestedTestData2 };

            return testData;
        }
        internal PocoTestData GivenPocoWithParallelAndNestedEnumerables()
        {
            PocoTestData testData = new PocoTestData
            {
                Name = "Brendon",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherBrendon",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData1 = new PocoTestData
            {
                Name = "Mo",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherMo",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData2 = new PocoTestData
            {
                Name = "Trav",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherTrav",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData3 = new PocoTestData
            {
                Name = "Jayd",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherJayd",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData4 = new PocoTestData
            {
                Name = "Dan",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherDan",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData5 = new PocoTestData
            {
                Name = "Mark",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherMark",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData6 = new PocoTestData
            {
                Name = "Warren",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherWarren",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData7 = new PocoTestData
            {
                Name = "Wallis",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherWallis",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData8 = new PocoTestData
            {
                Name = "Franco",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherFranco",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData9 = new PocoTestData
            {
                Name = "Taryn",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherTaryn",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData10 = new PocoTestData
            {
                Name = "Melissa",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherMelissa",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData11 = new PocoTestData
            {
                Name = "Melanie",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherMelanie",
                    Age = 31,
                },
            };

            PocoTestData nestedTestData12 = new PocoTestData
            {
                Name = "Justin",
                Age = 30,
                NestedData = new PocoTestData
                {
                    Name = "AnotherJustin",
                    Age = 31,
                },
            };


            nestedTestData1.EnumerableData = new List<PocoTestData> { nestedTestData3, nestedTestData4, nestedTestData6 };
            nestedTestData2.EnumerableData = new List<PocoTestData> { nestedTestData5 };

            testData.EnumerableData = new List<PocoTestData> { nestedTestData1, nestedTestData2 };
            testData.EnumerableData1 = new List<PocoTestData> { nestedTestData8, nestedTestData9, nestedTestData10, nestedTestData11, nestedTestData12 };

            return testData;
        }