public void Parse_ValidDotInput_Array()
        {
            //given
            string input = "A\n"
                           + ".B\n"
                           + ".C\n"
                           + "..D\n"
                           + ".E\n"
                           + "F\n";
            var expected = new CategoryBuilder()
                           .AddTopCategory("A")
                           .AddChildrenCategoryAndGoUp("B")
                           .AddChildrenCategory("C")
                           .AddChildrenCategory("D")
                           .GoUp()
                           .GoUp()
                           .AddChildrenCategory("E")
                           .AddTopCategory("F")
                           .Build();
            var parser = new CategoryParser();

            //when
            var result = parser.Parse(input);

            //then
            Assert.Equal(expected.Length, result.Length);

            for (int i = 0; i < expected.Length; i++)
            {
                Assert.Equal(expected[i].Name, result[i].Name);
                Assert.Equal(expected[i].Parent?.Name, result[i].Parent?.Name);
            }
        }
        public void Parse_DuplicateNamesOnSameLevel_SingleInstance()
        {
            //given
            string input = "A\n"
                           + "A"; //should be discarded
            var parser = new CategoryParser();

            //when
            var result = parser.Parse(input);

            //then
            Assert.Single(result);
            Assert.Single(result.Distinct().ToArray());
        }
Exemple #3
0
        public async Task <bool> Worker(string link)
        {
            CategoryParser    categoryParser = new CategoryParser();
            SubCategoryParser subCatParser   = new SubCategoryParser();
            var result = await categoryParser.Parse(1, $"{link}");

            var subresult = await subCatParser.Parse(1, $"{link}");

            OnNewData?.Invoke(this, result);
            OnNewData?.Invoke(this, subresult);
            dbChecker.PutIntProcessToDb("step_1", 0, true);
            isActive = false;
            return(true);
        }
        public void Parse_SimpleDuplicateNames_ValidDistinctIdsInArray()
        {
            //given
            string input = "A\n"
                           + "B\n"
                           + ".A";
            var parser = new CategoryParser();

            //when
            var result = parser.Parse(input);

            //then
            Assert.Equal(3, result.Length);
            Assert.Equal(3, result.Distinct().ToArray().Length);
        }
        public void Parse_DuplicateNamesOnSameLevel_SingleInstanceOfNameAtGivenLevel()
        {
            //given
            string input = "A\n"
                           + ".B\n"
                           + "Z\n"
                           + "A\n"  //should be discarded as "second A"
                           + ".C\n" //should be attached to 1st A
                           + "..D"; //should be attached to C in 1st A
            var parser = new CategoryParser();

            //when
            var result = parser.Parse(input);

            //then
            Assert.Equal(5, result.Length);
            Assert.Equal(5, result.Distinct().ToArray().Length);
        }