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));
        }
Example #9
0
        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);
        }
Example #10
0
        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);
            }
        }