public void ReplaceTextSpans_ArbitraryTextSpans_NoCrash() { for (int i = 0; i < RandomValue.Int(100, 10); i++) { var tree1 = BBCodeTestUtil.GetAnyTree(); var chosenTexts = new List <string>(); var tree2 = BBCode.ReplaceTextSpans(tree1, txt => { var count = RandomValue.Int(3, 0); var indexes = new List <int>(); for (int i = 0; i < count; i++) { indexes.Add(RandomValue.Int(txt.Length, 0)); } indexes.Sort(); _output.WriteLine(string.Join(", ", indexes)); return (Enumerable.Range(0, count) .Select(i => { var maxIndex = i == count - 1 ? txt.Length : indexes[i + 1]; var text = RandomValue.String(); chosenTexts.Add(text); return new TextSpanReplaceInfo(indexes[i], RandomValue.Int(indexes[i] - maxIndex + 1, 0), new TextNode(text)); }) .ToArray()); }, null); var bbCode = tree2.ToBBCode(); if (!chosenTexts.All(s => bbCode.Contains(s))) { } Assert.All(chosenTexts, s => Assert.Contains(s, bbCode)); } }
public void ReplaceTextSpans_WhenEverythingIsConvertedToX_OutputContainsOnlyX_CheckedWithContains() { var tree1 = BBCodeTestUtil.GetAnyTree(); var tree2 = BBCode.ReplaceTextSpans(tree1, txt => new[] { new TextSpanReplaceInfo(0, txt.Length, new TextNode("x")), }, null); Assert.True(!tree2.ToBBCode().Contains("a")); }
public void ReplaceTextSpans_WhenEverythingIsConvertedToX_OutputContainsOnlyX_CheckedWithTreeWalk() { var tree1 = BBCodeTestUtil.GetAnyTree(); var tree2 = BBCode.ReplaceTextSpans(tree1, txt => new[] { new TextSpanReplaceInfo(0, txt.Length, new TextNode("x")), }, null); new TextAssertVisitor(str => Assert.True(str == "x")).Visit(tree2); }
public void ReplaceTextSpans_WhenEmptyModifications_TreeIsPreserved() { var tree1 = BBCodeTestUtil.GetAnyTree(); var tree2 = BBCode.ReplaceTextSpans(tree1, txt => new[] { new TextSpanReplaceInfo(0, 0, null), }, null); Assert.Equal(tree1.ToBBCode(), tree2.ToBBCode()); }
public void ReplaceTextSpans_WhenNoModifications_TreeIsPreserved() { var tree1 = BBCodeTestUtil.GetAnyTree(); var tree2 = BBCode.ReplaceTextSpans(tree1, txt => Array.Empty <TextSpanReplaceInfo>(), null); Assert.Equal(tree1, tree2); }
public void TextModifiedTreesAreNotEqual() { var tree = BBCodeTestUtil.GetAnyTree(); var tree2 = new TextModificationSyntaxTreeVisitor().Visit(tree); Assert.True(tree != tree2); }
public void IdentityModifiedTreesAreEqual() { var tree = BBCodeTestUtil.GetAnyTree(); var tree2 = new IdentitiyModificationSyntaxTreeVisitor().Visit(tree); Assert.True(tree == tree2); }
public void DefaultVisitorModifiesNothing() { var tree = BBCodeTestUtil.GetAnyTree(); var tree2 = new SyntaxTreeVisitor().Visit(tree); Assert.True(ReferenceEquals(tree, tree2)); }
public void EqualTreesHaveEqualBBCode() { var tree1 = BBCodeTestUtil.GetAnyTree(); var tree2 = BBCodeTestUtil.GetAnyTree(); var bbCode1 = tree1.ToBBCode(); var bbCode2 = tree2.ToBBCode(); Assert.Equal(tree1 == tree2, bbCode1 == bbCode2); }
public void UnequalTexthasUnequalTrees() { var tree1 = BBCodeTestUtil.GetAnyTree(); var tree2 = BBCodeTestUtil.GetAnyTree(); var text1 = tree1.ToText(); var text2 = tree2.ToText(); if (text1 != text2) { Assert.True(tree1 != tree2); } }