public void IdentityModifiedTreesAreEqual() { var tree = BBCodeTestUtil.GetAnyTree(); var tree2 = new IdentitiyModificationSyntaxTreeVisitor().Visit(tree); Assert.IsTrue(tree == tree2); }
public void TextModifiedTreesAreNotEqual() { var tree = BBCodeTestUtil.GetAnyTree(); var tree2 = new TextModificationSyntaxTreeVisitor().Visit(tree); Assert.IsTrue(tree != tree2); }
static void ReplaceTextSpans_ManualTestCases_TestCase(string bbCode, string expected, Func <string, IList <TextSpanReplaceInfo> > getTextSpansToReplace, Func <TagNode, bool> tagFilter) { var tree1 = BBCodeTestUtil.GetParserForTest(ErrorMode.Strict, false, BBTagClosingStyle.AutoCloseElement, false).ParseSyntaxTree(bbCode); var tree2 = BBCode.ReplaceTextSpans(tree1, getTextSpansToReplace ?? (txt => new TextSpanReplaceInfo[0]), tagFilter); Assert.AreEqual(expected, tree2.ToBBCode()); }
public void DefaultVisitorModifiesNothing() { var tree = BBCodeTestUtil.GetAnyTree(); var tree2 = new SyntaxTreeVisitor().Visit(tree); Assert.IsTrue(ReferenceEquals(tree, tree2)); }
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.IsTrue(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.AreEqual(tree1.ToBBCode(), tree2.ToBBCode()); }
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.IsTrue(!tree2.ToBBCode().Contains("a")); }
public void ReplaceTextSpans_WhenNoModifications_TreeIsPreserved() { var tree1 = BBCodeTestUtil.GetAnyTree(); var tree2 = BBCode.ReplaceTextSpans(tree1, txt => new TextSpanReplaceInfo[0], null); Assert.AreSame(tree1, tree2); }
public void ContentTransformer_EmptyAttribute_CanChooseValueFromAttributeRenderingContext() { var parser = BBCodeTestUtil.GetParserForTest(ErrorMode.Strict, true, BBTagClosingStyle.AutoCloseElement, false); Assert.Equal(@"<a href=""http://codekicker.de"">http://codekicker.de</a>", parser.ToHtml(@"[url2]http://codekicker.de[/url2]")); Assert.Equal(@"<a href=""http://codekicker.de"">http://codekicker.de</a>", parser.ToHtml(@"[url2=http://codekicker.de]http://codekicker.de[/url2]")); }
public void EqualTreesHaveEqualBBCode(out string bbCode1, out string bbCode2) { var tree1 = BBCodeTestUtil.GetAnyTree(); var tree2 = BBCodeTestUtil.GetAnyTree(); bbCode1 = tree1.ToBBCode(); bbCode2 = tree2.ToBBCode(); Assert.AreEqual(tree1 == tree2, bbCode1 == bbCode2); }
public void CorrectingErrorMode() { Assert.True(BBCodeTestUtil.IsValid(@"", ErrorMode.TryErrorCorrection)); Assert.True(BBCodeTestUtil.IsValid(@"[b]abc[/b]", ErrorMode.TryErrorCorrection)); Assert.True(BBCodeTestUtil.IsValid(@"[b]abc", ErrorMode.TryErrorCorrection)); Assert.Equal(@"\", BBEncodeForTest(@"\", ErrorMode.TryErrorCorrection)); Assert.Equal(@"\x", BBEncodeForTest(@"\x", ErrorMode.TryErrorCorrection)); Assert.Equal(@"\", BBEncodeForTest(@"\\", ErrorMode.TryErrorCorrection)); }
public void StrictErrorMode() { Assert.True(BBCodeTestUtil.IsValid(@"", ErrorMode.Strict)); Assert.True(BBCodeTestUtil.IsValid(@"[b]abc[/b]", ErrorMode.Strict)); Assert.False(BBCodeTestUtil.IsValid(@"[b]abc", ErrorMode.Strict)); Assert.False(BBCodeTestUtil.IsValid(@"abc[0]def", ErrorMode.Strict)); Assert.False(BBCodeTestUtil.IsValid(@"\", ErrorMode.Strict)); Assert.False(BBCodeTestUtil.IsValid(@"\x", ErrorMode.Strict)); Assert.False(BBCodeTestUtil.IsValid(@"[", ErrorMode.Strict)); Assert.False(BBCodeTestUtil.IsValid(@"]", ErrorMode.Strict)); }
public void UnequalTexthasUnequalTrees(out string text1, out string text2) { var tree1 = BBCodeTestUtil.GetAnyTree(); var tree2 = BBCodeTestUtil.GetAnyTree(); text1 = tree1.ToText(); text2 = tree2.ToText(); if (text1 != text2) { Assert.IsTrue(tree1 != tree2); } }
public void ReplaceTextSpans_ArbitraryTextSpans_NoCrash() { var tree1 = BBCodeTestUtil.GetAnyTree(); var chosenTexts = new List <string>(); var tree2 = BBCode.ReplaceTextSpans(tree1, txt => { var count = PexChoose.ValueFromRange("count", 0, 3); var indexes = PexChoose.Array <int>("indexes", count); PexAssume.TrueForAll(0, count, i => indexes[i] >= 0 && indexes[i] <= txt.Length && (i == 0 || indexes[i - 1] < indexes[i])); return (Enumerable.Range(0, count) .Select(i => { var maxIndex = i == count - 1 ? txt.Length : indexes[i + 1]; var text = PexChoose.ValueNotNull <string>("text"); chosenTexts.Add(text); return new TextSpanReplaceInfo(indexes[i], PexChoose.ValueFromRange("count", 0, indexes[i] - maxIndex + 1), new TextNode(text)); }) .ToArray()); }, null); var bbCode = tree2.ToBBCode(); PexAssert.TrueForAll(chosenTexts, s => bbCode.Contains(s)); }
public static string BBEncodeForTest(string bbCode, ErrorMode errorMode, BBTagClosingStyle listItemBbTagClosingStyle, bool enableIterationElementBehavior) { return(BBCodeTestUtil.GetParserForTest(errorMode, true, listItemBbTagClosingStyle, enableIterationElementBehavior).ToHtml(bbCode).Replace("\r", "").Replace("\n", "<br/>")); }