Esempio n. 1
0
    public void Flattens_5_Level_Nested_List()
    {
        var nestedList = new List <object>
        {
            0,
            2,
            new List <object>
            {
                new List <object> {
                    2, 3
                },
                8,
                100,
                4,
                new List <object> {
                    new List <object> {
                        new List <object> {
                            50
                        }
                    }
                },
                -2
            }
        };

        Assert.That(Flattener.Flatten(nestedList), Is.EquivalentTo(new List <object> {
            0, 2, 2, 3, 8, 100, 4, 50, -2
        }));
    }
Esempio n. 2
0
    public void Flattens_6_Level_Nested_List()
    {
        var nestedList = new List <object>
        {
            1,
            new List <object>
            {
                2,
                new List <object> {
                    new List <object> {
                        3
                    }
                },
                new List <object> {
                    4, new List <object> {
                        new List <object> {
                            5
                        }
                    }
                },
                6,
                7
            },
            8
        };

        Assert.That(Flattener.Flatten(nestedList), Is.EquivalentTo(new List <object> {
            1, 2, 3, 4, 5, 6, 7, 8
        }));
    }
Esempio n. 3
0
    public void Flattens_5_Level_Nested_List()
    {
        var nestedList = new List <object>
        {
            0,
            2,
            new List <object>
            {
                new List <object> {
                    2, 3
                },
                8,
                100,
                4,
                new List <object> {
                    new List <object> {
                        new List <object> {
                            50
                        }
                    }
                },
                -2
            }
        };

        Assert.Equal(new List <int> {
            0, 2, 2, 3, 8, 100, 4, 50, -2
        }, Flattener.Flatten(nestedList).Cast <int>());
    }
Esempio n. 4
0
    public void Flattens_6_Level_Nested_List()
    {
        var nestedList = new List <object>
        {
            1,
            new List <object>
            {
                2,
                new List <object> {
                    new List <object> {
                        3
                    }
                },
                new List <object> {
                    4, new List <object> {
                        new List <object> {
                            5
                        }
                    }
                },
                6,
                7
            },
            8
        };

        Assert.Equal(new List <int> {
            1, 2, 3, 4, 5, 6, 7, 8
        }, Flattener.Flatten(nestedList).Cast <int>());
    }
Esempio n. 5
0
        public void NonIntElementsThrow()
        {
            var array = new dynamic[] { 1, "2" };

            var sut = new Flattener();

            Assert.Throws <InvalidOperationException>(() => sut.Flatten(array));
        }
Esempio n. 6
0
    public void Flattens_A_Nested_List()
    {
        var nestedList = new List <object> {
            new List <object>()
        };

        Assert.That(Flattener.Flatten(nestedList), Is.Empty);
    }
Esempio n. 7
0
        // We don't want to run this one often since it adds an extra 7-8 seconds to the test run
        public void LargeNumberOfElementsGetsProcessed()
        {
            var expected = new int[10000000];

            var sut    = new Flattener();
            var result = sut.Flatten(expected);

            Assert.Equal(expected, result);
        }
Esempio n. 8
0
        public void EmptyArray()
        {
            var array    = new int[0];
            var expected = new int[0];

            var sut    = new Flattener();
            var result = sut.Flatten(array);

            Assert.Equal(expected, result);
        }
Esempio n. 9
0
        public void NestedElements()
        {
            var array    = new dynamic[] { 1, 2, new dynamic[] { 3, 6, new[] { 7, 7, 7 } }, 4, 5 };
            var expected = new[] { 1, 2, 3, 6, 7, 7, 7, 4, 5 };

            var sut    = new Flattener();
            var result = sut.Flatten(array);

            Assert.Equal(expected, result);
        }
Esempio n. 10
0
        public void EmptyArrayElementsInMiddle()
        {
            var array    = new dynamic[] { 1, 2, new string[] {}, 4, 5 };
            var expected = new[] { 1, 2, 4, 5 };

            var sut    = new Flattener();
            var result = sut.Flatten(array);

            Assert.Equal(expected, result);
        }
Esempio n. 11
0
        public void SingleAndMultiElements()
        {
            var array    = new dynamic[] { 1, 2, new[] { 3, 6 }, 4, 5 };
            var expected = new[] { 1, 2, 3, 6, 4, 5 };

            var sut    = new Flattener();
            var result = sut.Flatten(array);

            Assert.Equal(expected, result);
        }
Esempio n. 12
0
        public void SingleElementsOnly()
        {
            var array    = new int[] { 1, 2, 3, 4, 5 };
            var expected = new int[] { 1, 2, 3, 4, 5 };

            var sut    = new Flattener();
            var result = sut.Flatten(array);

            Assert.Equal(expected, result);
        }
Esempio n. 13
0
        public void Test3()
        {
            Flattener f = new Flattener();

            object[] testArray = new object[]
            { 1, new object[] { }, 3, 4 };
            var rc =
                f.Flatten(testArray);

            Assert.True(rc.Length == 3, "Length is incorrect, should be 3");
        }
Esempio n. 14
0
        public void Test4()
        {
            Flattener f = new Flattener();

            object[] testArray = new object[]
            { 1, new object[] { 2, 3, new object[] { 6, 7, 8 } }, 4, 5 };
            var rc =
                f.Flatten(testArray);

            Assert.True(rc.Length == 8, "Length is incorrect, should be 8");
        }
Esempio n. 15
0
        public void Test1()
        {
            Flattener f = new Flattener();

            object[] testArray = new object[]
            {};
            var rc =
                f.Flatten(testArray);

            Assert.True(rc.Length == 0, "Length is incorrect, should be 0");
        }
Esempio n. 16
0
    public void Flattens_2_Level_Nested_List()
    {
        var nestedList = new List <object> {
            1, new List <object> {
                2, 3, 4
            }, 5
        };

        Assert.That(Flattener.Flatten(nestedList), Is.EquivalentTo(new List <object> {
            1, 2, 3, 4, 5
        }));
    }
Esempio n. 17
0
    public void Flattens_2_Level_Nested_List()
    {
        var nestedList = new List <object> {
            1, new List <object> {
                2, 3, 4
            }, 5
        };

        Assert.Equal(new List <int> {
            1, 2, 3, 4, 5
        }, Flattener.Flatten(nestedList).Cast <int>());
    }
Esempio n. 18
0
    public void All_Null_Nested_List_Returns_Empty_List()
    {
        var nestedList = new List <object>
        {
            null,
            new List <object>
            {
                null,
                new List <object> {
                    null
                },
                new List <object> {
                    new List <object> {
                        new List <object> {
                            null
                        }
                    }
                }
            },
            null
        };

        Assert.That(Flattener.Flatten(nestedList), Is.Empty);
    }
Esempio n. 19
0
        public void FullPositiveTest(IEnumerable <object> arrayOfArrays, IEnumerable <object> output)
        {
            IEnumerable <object> result = Flattener.Flatten(arrayOfArrays);

            Assert.Equal(output, result);
        }
 public static IEnumerable <T> Before <T>(this IEnumerable <T> enumerable, IEnumerator <T> rest)
 {
     return(Flattener <T> .Flatten(new List <object> {
         enumerable, rest
     }));
 }
 // Flatten nested enumerable to specific type
 // !! type T cannot implement IEnumerable or IEnumerator
 public static IEnumerable <T> FlattenTo <T>(this IEnumerable <dynamic> enumerable)
 {
     return(Flattener <T> .Flatten(enumerable));
 }