Esempio n. 1
0
        public void ThreeSumTest()
        {
            // Arrange:
            IThreeSumFinder threeSumFinder = new ThreeSumFinder();

            var inputObjects = new[]
            {
                //new { Input = new[] { -1, 0, 1, 2, -1, -4 }, Output = new[] { new[] { -1, -1, 2 }, new[] { -1, 0, 1 } } },
                new { Input = new[] { -1, -1, 1, 2, -1, 2 }, Output = new[] { new[] { -1, -1, 2 } } },
                new { Input = new[] { 0, 0, 0, -1, 1 }, Output = new[] { new[] { -1, 0, 1 }, new[] { 0, 0, 0 } } },

                new { Input = new int[0], Output = new int[0][] },
                new { Input = (int[])null, Output = new int[0][] },
            };

            foreach (var inputObject in inputObjects)
            {
                // Act:
                var output = threeSumFinder.ThreeSum(inputObject.Input);

                // Assert:
                for (int i = 0; i < output.Count; ++i)
                {
                    output[i] = output[i].OrderBy(t => t).ToList();
                }

                AssertUtil.AssertCollection(inputObject.Output, output,
                                            t => t[0],
                                            t => t[1],
                                            t => t[2]);
            }
        }
Esempio n. 2
0
        public void GfgBinaryOperatorsAdder_AddOperators_Test()
        {
            // Arrange:

            IBinaryOperatorsAdder binaryOperatorsAdder = new GfgBinaryOperatorsAdder();

            var inputObjects = new[]
            {
                new { Num = "123", Target = 6, Output = new[] { "1+2+3", "1*2*3" } },
                new { Num = "232", Target = 8, Output = new[] { "2*3+2", "2+3*2" } },
                new { Num = "105", Target = 5, Output = new[] { "1*0+5", "10-5" } },
                new { Num = "00", Target = 0, Output = new[] { "0+0", "0-0", "0*0" } },
                new { Num = "3456237490", Target = 9191, Output = new string[0] },
            };

            foreach (var inputObject in inputObjects)
            {
                // Act:
                var output = binaryOperatorsAdder.AddOperators(inputObject.Num, inputObject.Target);

                // Assert:
                AssertUtil.AssertCollection(
                    inputObject.Output.OrderBy(o => o),
                    output.OrderBy(o => o));
            }
        }
Esempio n. 3
0
        public void RecursiveTraverser_InorderTraversal_Test()
        {
            // Arrange:
            IInorderTraverser inorderTraverser = new RecursiveTraverser();

            var root = new TreeNode(20);

            root.left             = new TreeNode(9);
            root.right            = new TreeNode(25);
            root.left.left        = new TreeNode(5);
            root.left.right       = new TreeNode(12);
            root.left.right.left  = new TreeNode(11);
            root.left.right.right = new TreeNode(14);

            var values = inorderTraverser.InorderTraversal(root);

            AssertUtil.AssertCollection(new[] { 5, 9, 11, 12, 14, 20, 25 }, values);
        }
Esempio n. 4
0
        public void AnagramSubstringSearcher_GetIndices_Test()
        {
            // Arrange:
            IAnagramSubstringSearcher anagramSubstringSearcher = new AnagramSubstringSearcher();

            var largeString = new string(GenericUtil.CreateArrayFromEnumerables((new[] { 'x', 'y' }, 2), (new[] { 'A', 'B' }, 198), (new[] { 'C', 'D' }, 100)));

            var inputObjects = new[]
            {
                new { Input = new { Txt = "BACDGABCDA", Pat = "ABCD" }, Output = new [] { 0, 5, 6 } },
                new { Input = new { Txt = "BACDGABCDA", Pat = "CDAB" }, Output = new [] { 0, 5, 6 } },
                new { Input = new { Txt = "AAABABAA", Pat = "AABA" }, Output = new [] { 0, 1, 4 } },
                //new { Input = new { Txt = "cbaebabacd", Pat = "abc" }, Output = new [] { 0, 6 } },
                //new { Input = new { Txt = "abab", Pat = "ab" }, Output = new [] { 0, 1, 2 } },
                new { Input = new { Txt = largeString, Pat = "ABCD" }, Output = new [] { 398 } },
                new { Input = new { Txt = largeString, Pat = "ABDC" }, Output = new [] { 398 } },
                new { Input = new { Txt = largeString, Pat = "DCAB" }, Output = new [] { 398 } },
                new { Input = new { Txt = largeString, Pat = "ABDCAB" }, Output = new [] { 396 } },
                new { Input = new { Txt = largeString, Pat = "xyx" }, Output = new [] { 0 } },
                new { Input = new { Txt = largeString, Pat = "xy" }, Output = new [] { 0, 1, 2 } },
                new { Input = new { Txt = largeString, Pat = "yx" }, Output = new [] { 0, 1, 2 } },

                new { Input = new { Txt = "BAC", Pat = "ABCD" }, Output = new int[0] },
                new { Input = new { Txt = (string)null, Pat = (string)null }, Output = new int[0] },
                new { Input = new { Txt = "", Pat = (string)null }, Output = new int[0] },
                new { Input = new { Txt = (string)null, Pat = "" }, Output = new int[0] },
                new { Input = new { Txt = "", Pat = "" }, Output = new int[0] },
            };

            foreach (var inputObject in inputObjects)
            {
                // Act:
                var output = anagramSubstringSearcher.GetIndices(inputObject.Input.Txt, inputObject.Input.Pat);

                // Assert:
                AssertUtil.AssertCollection(inputObject.Output, output);
            }
        }
Esempio n. 5
0
        public void LevelOrderer_LevelOrder_Test()
        {
            // Arrange:
            ILevelOrderer levelOrderer = new LevelOrdererWithNodeLevelsDictionary();

            var inputObjects = new[]
            {
                new
                {
                    Root = new TreeNode
                    {
                        val  = 2,
                        left = new TreeNode {
                            val = 1
                        },
                        right = new TreeNode {
                            val = 3
                        },
                    },
                    Output = (IList <IList <int> >) new List <IList <int> >
                    {
                        new List <int> {
                            2
                        },
                        new List <int> {
                            1, 3
                        },
                    },
                },
                new
                {
                    Root = new TreeNode
                    {
                        val  = 1,
                        left = new TreeNode {
                            val = 2
                        },
                        right = new TreeNode {
                            val = 3
                        },
                    },
                    Output = (IList <IList <int> >) new List <IList <int> >
                    {
                        new List <int> {
                            1
                        },
                        new List <int> {
                            2, 3
                        },
                    },
                },
                new
                {
                    Root = new TreeNode
                    {
                        val  = 10,
                        left = new TreeNode {
                            val = 5
                        },
                        right = new TreeNode
                        {
                            val  = 15,
                            left = new TreeNode {
                                val = 6
                            },
                            right = new TreeNode {
                                val = 20
                            },
                        },
                    },
                    Output = (IList <IList <int> >) new List <IList <int> >
                    {
                        new List <int> {
                            10
                        },
                        new List <int> {
                            5, 15
                        },
                        new List <int> {
                            6, 20
                        },
                    },
                },
            };

            foreach (var inputObject in inputObjects)
            {
                // Act:
                var output = levelOrderer.LevelOrder(inputObject.Root);

                // Assert:
                var pairs = inputObject.Output.Zip(output,
                                                   (e, a) => new { Expected = e, Actual = a });
                foreach (var pair in pairs)
                {
                    AssertUtil.AssertCollection(pair.Expected, pair.Actual);
                }
            }
        }