Beispiel #1
0
        public void AJson_JsonBuilder_JsonDocument_AppendNew_AdvancedSource_AdvancedNewItem_Succeeds()
        {
            Json json = JsonHelper.MakeRootBuilder()
                        .StartDocument()
                        .AddProperty("Sweet", "niblets")
                        .StartProperty("SubDoc")
                        .StartDocument()
                        .AddProperty("SubItem", "dang son!")
                        .End()
                        .StartProperty("Yarr")
                        .StartArray()
                        .AddArrayItem(2)
                        .AddArrayItem(3)
                        .AddArrayItem(6)
                        .End()
                        .Finalize();

            Assert.IsFalse(json.HasErrors, "Json parse errors:\n" + String.Join("\n\t", json.Errors));
            json.AssertSourceIsValid();

            var rootDoc = json.Data as JsonDocument;

            Assert.IsNotNull(rootDoc);

            JsonArray array = rootDoc.FindValueByKey("Yarr") as JsonArray;

            Assert.IsNotNull(array);

            JsonDocument targetDoc = rootDoc.FindValueByKey("SubDoc") as JsonDocument;

            Assert.IsNotNull(targetDoc);

            JsonValue output = targetDoc.AppendNew("Sweeter", JsonHelper.MakeRootBuilder()
                                                   .StartDocument()
                                                   .AddProperty("catchPhrase", "Doood"));

            Assert.IsNotNull(output);

            JsonDocument outputCasted = output as JsonDocument;

            Assert.IsNotNull(outputCasted);

            JsonValue catchPhrase = outputCasted.FindValueByKey("catchPhrase");

            Assert.IsNotNull(catchPhrase);
            Assert.AreEqual("Doood", catchPhrase.StringValue);

            Assert.AreEqual(catchPhrase, rootDoc.FindValueByKey("catchPhrase"));


            Json reparsedBeans = JsonHelper.ParseText(json.Data.StringValue);

            Assert.IsNotNull(reparsedBeans);
            Assert.IsFalse(reparsedBeans.HasErrors);

            reparsedBeans.AssertSourceIsValid();
        }