public void TwoSimpleProjectNameTest() { TaskPaperSolution p = Parser.Parse("Test:\nTest2:\n"); Assert.AreEqual("Test", p.Projects.First().Name); Assert.AreEqual("Test2", p.Projects[1].Name); }
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); }
public void SimpleTodoWithNewLineTest() { TaskPaperSolution p = Parser.Parse("Test:\n - Test\n"); Project project = p.Projects.First(); Assert.AreEqual("Test", project.Todos.First().Name); }
public void Todo2DashesTest() { TaskPaperSolution p = Parser.Parse("Test:\n - Test - Test"); Project project = p.Projects.First(); Assert.AreEqual("Test - Test", project.Todos.First().Name); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
public abstract (bool, int) TryParse(char[] input, int index, TaskPaperSolution solution);
public void ProjectNameWithSemiColonTest() { TaskPaperSolution p = Parser.Parse("Test: Name:\n"); Assert.AreEqual("Test: Name", p.Projects.First().Name); }
public void SimpleProjectNameAtEndTest() { TaskPaperSolution p = Parser.Parse("Test:"); Assert.AreEqual("Test", p.Projects.First().Name); }
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); }
public override (bool, int) TryParse(char[] input, int index, TaskPaperSolution solution) { throw new System.NotImplementedException(); }