Exemple #1
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);
        }
Exemple #2
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());
        }
Exemple #3
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());
        }
Exemple #4
0
        public void DocumentCommentWithNoContents()
        {
            JSBuilder builder = new JSBuilder();

            builder.DocumentationComment(comment => { });
            Assert.AreEqual("", builder.ToString());
        }
Exemple #5
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());
        }
Exemple #6
0
        public void InsertNewLine()
        {
            JSBuilder builder = new JSBuilder();

            builder.InsertNewLine(0);
            Assert.AreEqual("\n", builder.ToString());
        }
Exemple #7
0
        public void HasChangedLinesSinceWithNegativeIndexAndMultipleLines()
        {
            JSBuilder builder = new JSBuilder();

            builder.Text("a\nb\nc");
            Assert.ThrowsException <IndexOutOfRangeException>(() => builder.HasChangedLinesSince(-1));
        }
Exemple #8
0
        public void Constructor()
        {
            JSBuilder builder = new JSBuilder();

            Assert.AreEqual("", builder.ToString());
            Assert.IsFalse(builder.WriteNewLineBeforeNextText);
        }
Exemple #9
0
        public void HasChangedLinesSinceWithZeroIndexAndMultipleLines()
        {
            JSBuilder builder = new JSBuilder();

            builder.Text("a\nb\nc");
            Assert.IsTrue(builder.HasChangedLinesSince(0));
        }
Exemple #10
0
        public void InsertWithNoPositions()
        {
            JSBuilder builder = new JSBuilder();

            builder.Insert(0, "abcd");
            Assert.AreEqual("abcd", builder.ToString());
        }
Exemple #11
0
        public void HasChangedLinesSinceWithZeroIndexAndSingleLine()
        {
            JSBuilder builder = new JSBuilder();

            builder.Text("abc");
            Assert.IsFalse(builder.HasChangedLinesSince(0));
        }
Exemple #12
0
        public void ObjectAssignmentWithNoProperties()
        {
            JSBuilder builder = new JSBuilder();

            builder.ObjectAssignment("a", value => { });
            AssertEx.EqualLines("a = {};", builder);
        }
Exemple #13
0
        public void ConstObjectVariableWithNoProperties()
        {
            JSBuilder builder = new JSBuilder();

            builder.ConstObjectVariable("a", value => { });
            AssertEx.EqualLines("const a = {};", builder);
        }
Exemple #14
0
        public void LineWithNoArguments()
        {
            JSBuilder builder = new JSBuilder();

            builder.Line();
            Assert.AreEqual("", builder.ToString());
            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
        }
Exemple #15
0
 public void ObjectProperty(string propertyName, Action <JSONObject> propertyValueAction)
 {
     propertyName = JSBuilder.Quote(propertyName);
     jsObject.ObjectProperty(propertyName, (JSObject jsObject) =>
     {
         propertyValueAction.Invoke(new JSONObject(jsObject));
     });
 }
Exemple #16
0
        public void TextWithNewLine()
        {
            JSBuilder builder = new JSBuilder();

            builder.Text("\n");
            Assert.AreEqual("\n", builder.ToString());
            Assert.IsFalse(builder.WriteNewLineBeforeNextText);
        }
Exemple #17
0
        public void LineWithText()
        {
            JSBuilder builder = new JSBuilder();

            builder.Line("Hello");
            Assert.AreEqual("Hello", builder.ToString());
            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
        }
Exemple #18
0
        public void LineWithEmptyTwice()
        {
            JSBuilder builder = new JSBuilder();

            builder.Line("");
            builder.Line("");
            Assert.AreEqual("\n", builder.ToString());
            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
        }
Exemple #19
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());
        }
Exemple #20
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());
        }
Exemple #21
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);
        }
Exemple #22
0
        public void ObjectAssignmentWithOneProperty()
        {
            JSBuilder builder = new JSBuilder();

            builder.ObjectAssignment("a", value => { value.BooleanProperty("b", true); });
            AssertEx.EqualLines(new[]
            {
                "a = {",
                "  b: true",
                "};"
            },
                                builder);
        }
Exemple #23
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());
        }
Exemple #24
0
        public void ConstObjectVariableWithOneProperty()
        {
            JSBuilder builder = new JSBuilder();

            builder.ConstObjectVariable("a", value => { value.BooleanProperty("b", true); });
            AssertEx.EqualLines(new[]
            {
                "const a = {",
                "  b: true",
                "};"
            },
                                builder);
        }
Exemple #25
0
        public void DocumentationCommentWithDescription()
        {
            JSBuilder builder = new JSBuilder();

            builder.DocumentationComment(comment =>
            {
                comment.Description("Hello");
            });
            AssertEx.EqualLines(
                "/**\n" +
                " * Hello\n" +
                " */",
                builder);
        }
Exemple #26
0
        public void IfWithEmptyBlock()
        {
            JSBuilder builder = new JSBuilder();

            builder.If("true", ifBlock => { });
            AssertEx.EqualLines(
                new[]
            {
                "if (true) {",
                "}"
            },
                builder);
            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
        }
Exemple #27
0
        public void TryWithEmptyBlock()
        {
            JSBuilder builder = new JSBuilder();

            builder.Try(tryBlock => { });
            AssertEx.EqualLines(
                new[]
            {
                "try {",
                "}"
            },
                builder);
            Assert.IsTrue(builder.WriteNewLineBeforeNextText);
        }
Exemple #28
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);
        }
Exemple #29
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);
        }
Exemple #30
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);
        }