Example #1
0
        public void JsonBuilder_OpenArray_Can_Be_Nested_In_OpenProperty()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.OpenObject());
            Assert.IsTrue(target.OpenProperty("first"));
            Assert.IsTrue(target.OpenArray());
            Assert.IsTrue(target.WriteValue(1));
            target.CloseToken();
            target.CloseToken();
            Assert.IsTrue(target.OpenProperty("second"));
            Assert.IsTrue(target.OpenArray());
            Assert.IsTrue(target.WriteValue(2));
            Assert.AreEqual("{\"first\":[1],\"second\":[2]}", target.Finish());
        }
Example #2
0
        public void JsonBuilder_OpenObject_Can_Be_Nested_In_OpenArray()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.OpenArray());
            Assert.IsTrue(target.OpenObject());
            Assert.IsTrue(target.OpenProperty("value"));
            Assert.IsTrue(target.WriteValue(1));
            target.CloseToken();
            target.CloseToken();
            Assert.IsTrue(target.OpenObject());
            Assert.IsTrue(target.OpenProperty("value"));
            Assert.IsTrue(target.WriteValue(2));
            Assert.AreEqual("[{\"value\":1},{\"value\":2}]", target.Finish());
        }
Example #3
0
        /// <summary>
        /// Recursively build a complex object.
        /// </summary>
        /// <param name="writer">The writer to use.</param>
        /// <param name="width">The length of the recursive array.</param>
        /// <param name="depth">The depth of the recursive object.</param>
        private static void RecursiveObject(JsonBuilder writer, int width, int depth)
        {
            writer.OpenObject();
            writer.OpenProperty(Constants.LogicalProperty);
            writer.WriteValue(Constants.LogicalValue);
            writer.CloseToken();
            writer.OpenProperty(Constants.IntegralProperty);
            writer.WriteValue(Constants.IntegralValue);
            writer.CloseToken();
            writer.OpenProperty(Constants.FloatProperty);
            writer.WriteValue(Constants.FloatValue);
            writer.CloseToken();
            writer.OpenProperty(Constants.TextProperty);
            writer.WriteValue(Constants.TextValue);
            writer.CloseToken();
            if (depth > 0)
            {
                writer.OpenProperty(Constants.ArrayProperty);
                writer.OpenArray();
                for (int i = 0; i < width; i++)
                {
                    int shallow = depth - 1;
                    JsonDna.RecursiveObject(writer, width, shallow);
                }

                writer.CloseToken();
                writer.CloseToken();
            }

            writer.CloseToken();
        }
Example #4
0
        public void JsonBuilder_OpenArray_Can_Be_Nested_In_OpenArray()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.OpenArray());
            Assert.IsTrue(target.OpenArray());
            Assert.IsTrue(target.WriteValue(1));
            target.CloseToken();
            Assert.IsTrue(target.OpenArray());
            Assert.IsTrue(target.WriteValue(2));
            Assert.AreEqual("[[1],[2]]", target.Finish());
        }
Example #5
0
            /// <summary>
            /// Execute a single test iteration.
            /// </summary>
            /// <param name="watch">The stopwatch timing the iteration.</param>
            /// <returns>A value indicating whether or not the test is valid.</returns>
            public bool Execute(Stopwatch watch)
            {
                JsonBuilder writer = JsonDna.PerpareWriter();

                writer.OpenArray();
                writer.WriteValue(Constants.LogicalValue);
                writer.WriteValue(Constants.IntegralValue);
                writer.WriteValue(Constants.FloatValue);
                writer.WriteValue(Constants.TextValue);
                writer.CloseToken();
                return(JsonDna.ConfirmWriter(writer, Constants.ArrayJson, watch));
            }
Example #6
0
        public void JsonBuilder_Writing_Truncates_Object_When_Capacity_Is_Exceeded()
        {
            JsonBuilder target = new JsonBuilder(50, 4);

            Assert.IsTrue(target.OpenObject());
            bool succeeded = true;

            for (int i = 0; succeeded; i++)
            {
                if (target.OpenProperty(i.ToString(CultureInfo.InvariantCulture)))
                {
                    succeeded = target.WriteValue(i);
                    target.CloseToken();
                    continue;
                }

                break;
            }

            Assert.AreEqual("{\"0\":0,\"1\":1,\"2\":2,\"3\":3,\"(truncated)\":true}", target.Finish());
        }