コード例 #1
0
        public void InsertWithNoPositions()
        {
            JSBuilder builder = new JSBuilder();

            builder.Insert(0, "abcd");
            Assert.AreEqual("abcd", builder.ToString());
        }
コード例 #2
0
        public void NestedTryBlocks()
        {
            JSBuilder builder = new JSBuilder();

            builder.Try(tryBlock1 =>
            {
                tryBlock1.Try(tryBlock2 =>
                {
                })
                .Catch("error1", catchBlock2 =>
                {
                });
            })
            .Catch("error2", catchBlock1 =>
            {
            });
            AssertEx.EqualLines(
                new[]
            {
                "try {",
                "  try {",
                "  } catch (error1) {",
                "  }",
                "} catch (error2) {",
                "}"
            },
                builder);
        }
コード例 #3
0
        public void HasChangedLinesSinceWithZeroIndexAndSingleLine()
        {
            JSBuilder builder = new JSBuilder();

            builder.Text("abc");
            Assert.IsFalse(builder.HasChangedLinesSince(0));
        }
コード例 #4
0
        public void Constructor()
        {
            JSBuilder builder = new JSBuilder();

            Assert.AreEqual("", builder.ToString());
            Assert.IsFalse(builder.WriteNewLineBeforeNextText);
        }
コード例 #5
0
        public void NestedElseIfBlocks()
        {
            JSBuilder builder = new JSBuilder();

            builder.If("a1", ifBlock1 =>
            {
                ifBlock1.If("b1", ifBlock2 =>
                {
                })
                .ElseIf("b2", elseIfBlock2 =>
                {
                });
            })
            .ElseIf("a2", elseIfBlock1 =>
            {
            });;
            AssertEx.EqualLines(
                new[]
            {
                "if (a1) {",
                "  if (b1) {",
                "  } else if (b2) {",
                "  }",
                "} else if (a2) {",
                "}",
            },
                builder.ToString());
        }
コード例 #6
0
        public void HasChangedLinesSinceWithZeroIndexAndMultipleLines()
        {
            JSBuilder builder = new JSBuilder();

            builder.Text("a\nb\nc");
            Assert.IsTrue(builder.HasChangedLinesSince(0));
        }
コード例 #7
0
        public void DocumentCommentWithNoContents()
        {
            JSBuilder builder = new JSBuilder();

            builder.DocumentationComment(comment => { });
            Assert.AreEqual("", builder.ToString());
        }
コード例 #8
0
        public void InsertNewLine()
        {
            JSBuilder builder = new JSBuilder();

            builder.InsertNewLine(0);
            Assert.AreEqual("\n", builder.ToString());
        }
コード例 #9
0
        public void InsertBetweenExistingPositions()
        {
            JSBuilder builder = new JSBuilder();

            builder.Text("ab");
            BuilderPosition p1 = builder.CreatePosition();

            builder.Text("cd");
            BuilderPosition p2 = builder.CreatePosition();

            builder.Text("ef");

            Assert.AreEqual(2, p1.CharactersAfterPreviousPosition);
            Assert.AreEqual(2, p1.GetIndexInBuilder());
            Assert.AreEqual(2, p2.CharactersAfterPreviousPosition);
            Assert.AreEqual(4, p2.GetIndexInBuilder());

            builder.Insert(3, "Z");
            Assert.AreEqual("abcZdef", builder.ToString());

            Assert.AreEqual(2, p1.CharactersAfterPreviousPosition);
            Assert.AreEqual(2, p1.GetIndexInBuilder());
            Assert.AreEqual(3, p2.CharactersAfterPreviousPosition);
            Assert.AreEqual(5, p2.GetIndexInBuilder());
        }
コード例 #10
0
        public void HasChangedLinesSinceWithNegativeIndexAndMultipleLines()
        {
            JSBuilder builder = new JSBuilder();

            builder.Text("a\nb\nc");
            Assert.ThrowsException <IndexOutOfRangeException>(() => builder.HasChangedLinesSince(-1));
        }
コード例 #11
0
        public void NestedElseBlocks()
        {
            JSBuilder builder = new JSBuilder();

            builder.If("a", ifBlock1 =>
            {
                ifBlock1.If("b", ifBlock2 =>
                {
                })
                .Else(elseBlock2 =>
                {
                });
            })
            .Else(elseBlock1 =>
            {
            });;
            AssertEx.EqualLines(
                new[]
            {
                "if (a) {",
                "  if (b) {",
                "  } else {",
                "  }",
                "} else {",
                "}",
            },
                builder.ToString());
        }
コード例 #12
0
        public void TextWithNewLine()
        {
            JSBuilder builder = new JSBuilder();

            builder.Text("\n");
            Assert.AreEqual("\n", builder.ToString());
            Assert.IsFalse(builder.WriteNewLineBeforeNextText);
        }
コード例 #13
0
        public void LineWithText()
        {
            JSBuilder builder = new JSBuilder();

            builder.Line("Hello");
            Assert.AreEqual("Hello", builder.ToString());
            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
        }
コード例 #14
0
        public void LineWithNoArguments()
        {
            JSBuilder builder = new JSBuilder();

            builder.Line();
            Assert.AreEqual("", builder.ToString());
            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
        }
コード例 #15
0
        public void LineWithEmptyTwice()
        {
            JSBuilder builder = new JSBuilder();

            builder.Line("");
            builder.Line("");
            Assert.AreEqual("\n", builder.ToString());
            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
        }
コード例 #16
0
        public void CreatePositionWithEmptyBuilder()
        {
            JSBuilder       builder = new JSBuilder();
            BuilderPosition p       = builder.CreatePosition();

            Assert.AreEqual(0, p.CharactersAfterPreviousPosition);
            Assert.AreEqual(0, p.GetIndexInBuilder());
            Assert.AreSame(p, builder.CreatePosition());
        }
コード例 #17
0
        public void InsertAtAnExistingPosition()
        {
            JSBuilder       builder = new JSBuilder();
            BuilderPosition p       = builder.CreatePosition();

            builder.Insert(0, "abcd");
            Assert.AreEqual("abcd", builder.ToString());
            Assert.AreEqual(4, p.CharactersAfterPreviousPosition);
            Assert.AreEqual(4, p.GetIndexInBuilder());
        }
コード例 #18
0
        public void CreatePositionWhenAnotherPositionAlreadyExists()
        {
            JSBuilder       builder = new JSBuilder();
            BuilderPosition p1      = builder.CreatePosition();

            builder.Text("abcd");
            BuilderPosition p2 = builder.CreatePosition();

            Assert.AreEqual(0, p1.CharactersAfterPreviousPosition);
            Assert.AreEqual(0, p1.GetIndexInBuilder());
            Assert.AreEqual(4, p2.CharactersAfterPreviousPosition);
            Assert.AreEqual(4, p2.GetIndexInBuilder());
        }
コード例 #19
0
        private static string ParameterListActionToString(Action <JSParameterList> parameterListAction)
        {
            string parameterListString = null;

            if (parameterListAction != null)
            {
                JSBuilder       parameterListBuilder = new JSBuilder();
                JSParameterList parameterList        = new JSParameterList(parameterListBuilder);
                parameterListAction(parameterList);
                parameterListString = parameterListBuilder.ToString();
            }
            return(parameterListString);
        }
コード例 #20
0
        public void TryWithEmptyBlock()
        {
            JSBuilder builder = new JSBuilder();

            builder.Try(tryBlock => { });
            AssertEx.EqualLines(
                new[]
            {
                "try {",
                "}"
            },
                builder);
            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
        }
コード例 #21
0
        public void IfWithEmptyBlock()
        {
            JSBuilder builder = new JSBuilder();

            builder.If("true", ifBlock => { });
            AssertEx.EqualLines(
                new[]
            {
                "if (true) {",
                "}"
            },
                builder);
            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
        }
コード例 #22
0
        public void DocumentationCommentWithDescription()
        {
            JSBuilder builder = new JSBuilder();

            builder.DocumentationComment(comment =>
            {
                comment.Description("Hello");
            });
            AssertEx.EqualLines(
                "/**\n" +
                " * Hello\n" +
                " */",
                builder);
        }
コード例 #23
0
        public void DocumentationCommentWithDescriptionAndParameter()
        {
            JSBuilder builder = new JSBuilder();

            builder.DocumentationComment(comment =>
            {
                comment.Description("This is my description.");
                comment.Parameter("parameterName", "parameterType", "This is my parameter description.");
            });
            AssertEx.EqualLines(
                "/**\n" +
                " * This is my description.\n" +
                " * @param {parameterType} parameterName This is my parameter description.\n" +
                " */",
                builder);
        }
コード例 #24
0
        public void IfWithLineAfterwards()
        {
            JSBuilder builder = new JSBuilder();

            builder.If("true", ifBlock => { });
            builder.Line("Test");
            AssertEx.EqualLines(
                new[]
            {
                "if (true) {",
                "}",
                "Test"
            },
                builder);
            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
        }
コード例 #25
0
        public void InsertAfterAnExistingPosition()
        {
            JSBuilder builder = new JSBuilder();

            builder.Text("abc");
            BuilderPosition p = builder.CreatePosition();

            builder.Text("df");

            Assert.AreEqual(3, p.CharactersAfterPreviousPosition);
            Assert.AreEqual(3, p.GetIndexInBuilder());

            builder.Insert(4, "e");

            Assert.AreEqual(3, p.CharactersAfterPreviousPosition);
            Assert.AreEqual(3, p.GetIndexInBuilder());
        }
コード例 #26
0
        public void AddPropertyToParentObjectWhileBuildingChildObject()
        {
            JSBuilder builder = new JSBuilder();
            InvalidOperationException exception = Assert.ThrowsException <InvalidOperationException>(() =>
            {
                builder.Object((JSObject parentObject) =>
                {
                    parentObject.ObjectProperty("child", (JSObject childObject) =>
                    {
                        childObject.TextProperty("a", "A");
                        parentObject.TextProperty("b", "B");
                    });
                });
            });

            Assert.AreEqual("Cannot add a property to a JSObject while constructing its child property (\"child\").", exception.Message);
        }
コード例 #27
0
        public void NestedIfBlocks()
        {
            JSBuilder builder = new JSBuilder();

            builder.If("a", ifBlock1 =>
            {
                Assert.IsTrue(builder.WriteNewLineBeforeNextText);
                AssertEx.EqualLines(
                    "if (a) {",
                    builder);

                ifBlock1.If("b", ifBlock2 =>
                {
                    Assert.IsTrue(builder.WriteNewLineBeforeNextText);
                    AssertEx.EqualLines(
                        new[]
                    {
                        "if (a) {",
                        "  if (b) {"
                    },
                        builder);
                });

                Assert.IsTrue(builder.WriteNewLineBeforeNextText);
                AssertEx.EqualLines(
                    new[]
                {
                    "if (a) {",
                    "  if (b) {",
                    "  }"
                },
                    builder);
            });

            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
            AssertEx.EqualLines(
                new[]
            {
                "if (a) {",
                "  if (b) {",
                "  }",
                "}"
            },
                builder);
        }
コード例 #28
0
        public void DocumentationCommentWithLeadingWhitespaceInDescription()
        {
            JSBuilder builder = new JSBuilder();

            builder.DocumentationComment(comment =>
            {
                comment.Description("This\n  is\n\tmy\ndescription.");
            });
            // The leading whitespace in the description should be preserved, but the AutoRest
            // WordWrap() trims away leading whitespace.
            AssertEx.EqualLines(
                "/**\n" +
                " * This\n" +
                " * is\n" +
                " * my\n" +
                " * description.\n" +
                " */",
                builder);
        }
コード例 #29
0
        public void IfBlockWithSurroundingEmptyLines()
        {
            JSBuilder builder = new JSBuilder();

            builder.Line();
            builder.If("true", ifBlock =>
            {
            });
            builder.Line();
            AssertEx.EqualLines(
                new[]
            {
                "",
                "if (true) {",
                "}",
                ""
            },
                builder.ToString());
        }
コード例 #30
0
        public void IfBlockWithSurroundingLines()
        {
            JSBuilder builder = new JSBuilder();

            builder.Line("const x = 5;");
            builder.If("true", ifBlock =>
            {
            });
            builder.Line("const y = 6;");
            AssertEx.EqualLines(
                new[]
            {
                "const x = 5;",
                "if (true) {",
                "}",
                "const y = 6;"
            },
                builder.ToString());
        }