Ejemplo n.º 1
0
        public void TwoSimpleProjectNameTest()
        {
            TaskPaperSolution p = Parser.Parse("Test:\nTest2:\n");

            Assert.AreEqual("Test", p.Projects.First().Name);
            Assert.AreEqual("Test2", p.Projects[1].Name);
        }
Ejemplo n.º 2
0
        public override (bool, int) TryParse(char[] input, int index, TaskPaperSolution solution)
        {
            string     projectName = "";
            List <Tag> tags        = new List <Tag>();

            while (input.Length > index && !EndOfLine(input, index))
            {
                if (input[index] == ':' && EndOfLine(input, index + 1))
                {
                    solution.Add(new Project
                    {
                        Name = projectName,
                        Tags = tags
                    });
                    return(true, index);
                }

                (bool dibs, int newIndex) = new Tag().TryParse(input, index, tags);

                if (dibs)
                {
                    index = newIndex;
                }
                else
                {
                    projectName += input[index];
                    index++;
                }
            }

            return(false, index);
        }
        public void SimpleIndentTest()
        {
            TaskPaperSolution p       = Parser.Parse("Test:\n - Test");
            Project           project = p.Projects.First();

            Assert.AreEqual(0, project.Todos.First().Indent);
        }
Ejemplo n.º 4
0
        public void SimpleTodoWithNewLineTest()
        {
            TaskPaperSolution p       = Parser.Parse("Test:\n - Test\n");
            Project           project = p.Projects.First();

            Assert.AreEqual("Test", project.Todos.First().Name);
        }
Ejemplo n.º 5
0
        public void Todo2DashesTest()
        {
            TaskPaperSolution p       = Parser.Parse("Test:\n - Test - Test");
            Project           project = p.Projects.First();

            Assert.AreEqual("Test - Test", project.Todos.First().Name);
        }
Ejemplo n.º 6
0
        public void ProjectWithTagTest()
        {
            TaskPaperSolution p = Parser.Parse("Test @Name:\n");

            Assert.AreEqual("Test ", p.Projects[0].Name);
            Assert.AreEqual("Name", p.Projects[0].Tags[0].Name);
        }
        public void TabIndentTest()
        {
            TaskPaperSolution p       = Parser.Parse("Test:\n\t - Test\n");
            Project           project = p.Projects.First();

            Assert.AreEqual(1, project.Todos.First().Indent);
            Assert.AreEqual("Test", project.Todos.First().Name);
        }
Ejemplo n.º 8
0
        public void TodoWithTagAtStartTest()
        {
            TaskPaperSolution p       = Parser.Parse("Test:\n - @Test");
            Project           project = p.Projects.First();

            Assert.AreEqual("", project.Todos[0].Name);
            Assert.AreEqual("Test", project.Todos[0].Tags[0].Name);
        }
Ejemplo n.º 9
0
        public void TodoWithTagWithValueTest()
        {
            TaskPaperSolution p       = Parser.Parse("Test:\n - Test @Test(value)");
            Project           project = p.Projects.First();

            Assert.AreEqual("Test ", project.Todos[0].Name);
            Assert.AreEqual("value", project.Todos[0].Tags[0].Values[0]);
        }
        public void TwoSimpleTodoTest()
        {
            TaskPaperSolution p       = Parser.Parse("Test:\n - Test\n    - Test2");
            Project           project = p.Projects.First();

            Assert.AreEqual(0, project.Todos[0].Indent);
            Assert.AreEqual(1, project.Todos[1].Indent);
        }
Ejemplo n.º 11
0
        public void TodoWithTagInTextTest()
        {
            TaskPaperSolution p       = Parser.Parse("Test:\n - Test@Test");
            Project           project = p.Projects.First();

            Assert.AreEqual("Test@Test", project.Todos[0].Name);
            Assert.AreEqual(0, project.Todos[0].Tags.Count);
        }
Ejemplo n.º 12
0
        public void ThreeSimpleTodoTest()
        {
            TaskPaperSolution p       = Parser.Parse("Test:\n - Test\n - Test2\n - Test3");
            Project           project = p.Projects.First();

            Assert.AreEqual("Test", project.Todos[0].Name);
            Assert.AreEqual("Test2", project.Todos[1].Name);
            Assert.AreEqual("Test3", project.Todos[2].Name);
        }
Ejemplo n.º 13
0
        public void TodoWithTwoTagsTest()
        {
            TaskPaperSolution p       = Parser.Parse("Test:\n - Test @TestTag @Tag2");
            Project           project = p.Projects.First();

            Assert.AreEqual("Test ", project.Todos[0].Name);
            Assert.AreEqual("TestTag", project.Todos[0].Tags[0].Name);
            Assert.AreEqual("Tag2", project.Todos[0].Tags[1].Name);
        }
Ejemplo n.º 14
0
        public void TodoIndentTest()
        {
            TaskPaperSolution p       = Parser.Parse(@"Test:
 - Test
     - Test2
 - Test3");
            Project           project = p.Projects.First();

            Assert.AreEqual("Test", project.Todos[0].Name);
            Assert.AreEqual(0, project.Todos[2].Indent);
            Assert.AreEqual("Test2", project.Todos[1].Name);
            Assert.AreEqual(1, project.Todos[1].Indent);
            Assert.AreEqual("Test3", project.Todos[2].Name);
            Assert.AreEqual(0, project.Todos[2].Indent);
        }
Ejemplo n.º 15
0
 public abstract (bool, int) TryParse(char[] input, int index, TaskPaperSolution solution);
Ejemplo n.º 16
0
        public void ProjectNameWithSemiColonTest()
        {
            TaskPaperSolution p = Parser.Parse("Test: Name:\n");

            Assert.AreEqual("Test: Name", p.Projects.First().Name);
        }
Ejemplo n.º 17
0
        public void SimpleProjectNameAtEndTest()
        {
            TaskPaperSolution p = Parser.Parse("Test:");

            Assert.AreEqual("Test", p.Projects.First().Name);
        }
Ejemplo n.º 18
0
        public override (bool, int) TryParse(char[] input, int index, TaskPaperSolution solution)
        {
            int indent        = 0;
            var originalIndex = index;

            while (true)
            {
                var s = Get(input, index) switch {
                    ' ' => 1,
                    '\t' => 3,
                    '-' => 0,
                    _ => - 1
                };

                if (s == -1)
                {
                    return(false, originalIndex);
                }

                if (s == 0)
                {
                    break;
                }

                indent += s;

                index++;
            }

            if (Get(input, index - 1) == ' ' && Get(input, index) == '-' && Get(input, index + 1) == ' ')
            {
                List <Tag> tags = new List <Tag>();
                index = index + 2;
                Todo   todo = new Todo();
                string name = "";
                do
                {
                    (bool dibs, int newIndex) = new Tag().TryParse(input, index, tags);

                    if (dibs)
                    {
                        index = newIndex;
                    }
                    else
                    {
                        switch (Get(input, index))
                        {
                        case '\n':
                        case null:
                            solution.Add(new Todo
                            {
                                Name   = name,
                                Tags   = tags,
                                Indent = indent / 3
                            });
                            return(true, index);

                        default:
                            name += Get(input, index);
                            break;
                        }
                    }

                    index++;
                } while (true);
            }

            return(false, originalIndex);
        }
Ejemplo n.º 19
0
 public override (bool, int) TryParse(char[] input, int index, TaskPaperSolution solution)
 {
     throw new System.NotImplementedException();
 }