Exemple #1
0
        public void JsonBuilder_WriteValue_Writes_SByte()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue(sbyte.MinValue));
            Assert.AreEqual("-128", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(sbyte.MaxValue));
            Assert.AreEqual("127", target.Finish());
        }
Exemple #2
0
        public void JsonBuilder_WriteValue_Writes_UInt32()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue(uint.MinValue));
            Assert.AreEqual("0", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(uint.MaxValue));
            Assert.AreEqual("4294967295", target.Finish());
        }
Exemple #3
0
        public void JsonBuilder_WriteValue_Writes_UInt64()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue(ulong.MinValue));
            Assert.AreEqual("0", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(ulong.MaxValue));
            Assert.AreEqual("18446744073709551615", target.Finish());
        }
Exemple #4
0
        public void JsonBuilder_WriteValue_Writes_UInt16()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue(ushort.MinValue));
            Assert.AreEqual("0", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(ushort.MaxValue));
            Assert.AreEqual("65535", target.Finish());
        }
Exemple #5
0
        public void JsonBuilder_WriteValue_Writes_Int64()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue(long.MinValue));
            Assert.AreEqual("-9223372036854775808", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(long.MaxValue));
            Assert.AreEqual("9223372036854775807", target.Finish());
        }
Exemple #6
0
        public void JsonBuilder_WriteValue_Writes_Int32()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue(int.MinValue));
            Assert.AreEqual("-2147483648", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(int.MaxValue));
            Assert.AreEqual("2147483647", target.Finish());
        }
Exemple #7
0
        public void JsonBuilder_WriteValue_Writes_Decimal()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue(decimal.MinValue));
            Assert.AreEqual("-79228162514264337593543950335", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(decimal.MaxValue));
            Assert.AreEqual("79228162514264337593543950335", target.Finish());
        }
Exemple #8
0
        public void JsonBuilder_WriteValue_Writes_Int16()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue(short.MinValue));
            Assert.AreEqual("-32768", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(short.MaxValue));
            Assert.AreEqual("32767", target.Finish());
        }
Exemple #9
0
        public void JsonBuilder_WriteValue_Writes_Boolean()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue(true));
            Assert.AreEqual("true", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(false));
            Assert.AreEqual("false", target.Finish());
        }
Exemple #10
0
        public void JsonBuilder_WriteValue_Writes_Double()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue(double.MinValue));
            Assert.AreEqual("-1.7976931348623157E+308", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(double.Epsilon));
            Assert.AreEqual("4.94065645841247E-324", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(double.MaxValue));
            Assert.AreEqual("1.7976931348623157E+308", target.Finish());
        }
Exemple #11
0
        public void JsonBuilder_WriteValue_Writes_Single()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue(float.MinValue));
            Assert.AreEqual("-3.40282347E+38", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(float.Epsilon));
            Assert.AreEqual("1.401298E-45", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(float.MaxValue));
            Assert.AreEqual("3.40282347E+38", target.Finish());
        }
Exemple #12
0
        public void JsonBuilder_OpenObject_Creates_Empty_Object()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.OpenObject());
            Assert.AreEqual("{}", target.Finish());
        }
Exemple #13
0
        public void JsonBuilder_Constructor_Assigns_Minimum_Capacity()
        {
            JsonBuilder target = new JsonBuilder(0, 1);

            Assert.IsFalse(target.WriteValue(null));
            Assert.AreEqual("{\"(truncated)\":true}", target.Finish());
        }
Exemple #14
0
        public void JsonBuilder_Writing_Truncates_Value_When_Capacity_Is_Exceeded()
        {
            JsonBuilder target = new JsonBuilder(20, 1);

            target.WriteValue("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            Assert.AreEqual("{\"(truncated)\":true}", target.Finish());
        }
Exemple #15
0
        public void JsonBuilder_OpenArray_Creates_Empty_Array()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.OpenArray());
            Assert.AreEqual("[]", target.Finish());
        }
Exemple #16
0
        public void JsonBuilder_Clear_Causes_Finish_To_Return_Empty_String()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.WriteValue("Should not be returned"));
            target.Clear();
            Assert.AreEqual(string.Empty, target.Finish());
        }
Exemple #17
0
        public void JsonBuilder_OpenProperty_Creates_Null_Property()
        {
            JsonBuilder target = new JsonBuilder();

            Assert.IsTrue(target.OpenObject());
            Assert.IsTrue(target.OpenProperty("isNull"));
            Assert.AreEqual("{\"isNull\":null}", target.Finish());
        }
Exemple #18
0
        public void JsonBuilder_WriteValue_Writes_String()
        {
            JsonBuilder target = new JsonBuilder(70000, 1);

            Assert.IsTrue(target.WriteValue(null));
            Assert.AreEqual("null", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(string.Empty));
            Assert.AreEqual("\"\"", target.Finish());
            target.Clear();
            Assert.IsTrue(target.WriteValue(Constants.UnicodeRainbowDecoded));
            string encoded = target.Finish();

            for (int i = 0; i < Constants.UnicodeRainbowEncoded.Length; i++)
            {
                Assert.AreEqual(Constants.UnicodeRainbowEncoded[i], encoded[i], "index:{0}", i);
            }
        }
Exemple #19
0
        /// <summary>
        /// Confirm the writer successfully builds the payload.
        /// </summary>
        /// <param name="writer">The writer to check.</param>
        /// <param name="expected">The expected payload.</param>
        /// <param name="watch">The stopwatch timing the iteration.</param>
        /// <returns>A value indicating whether or not the iteration is valid.</returns>
        private static bool ConfirmWriter(JsonBuilder writer, string expected, Stopwatch watch)
        {
            bool   result = false;
            string actual = writer.Finish();

            watch.Stop();
            result = string.CompareOrdinal(expected, actual) == 0;
            watch.Start();
            return(result);
        }
Exemple #20
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());
        }
Exemple #21
0
        public void JsonBuilder_TryResize_Decreases_Capacity_If_State_Can_Be_Preserved()
        {
            JsonBuilder target = new JsonBuilder(100, 2);

            Assert.IsTrue(target.OpenArray());
            for (int i = 0; i < 10; i++)
            {
                Assert.IsTrue(target.WriteValue(i), "index:{0}", i);
            }

            Assert.IsTrue(target.TryResize(50));
            Assert.AreEqual("[0,1,2,3,4,5,6,7,8,9]", target.Finish());
        }
Exemple #22
0
        public void JsonBuilder_TryResize_Does_Nothing_If_State_Cannot_Be_Preserved()
        {
            JsonBuilder target = new JsonBuilder(100, 2);

            Assert.IsTrue(target.OpenArray());
            for (int i = 0; i < 20; i++)
            {
                Assert.IsTrue(target.WriteValue(i), "index:{0}", i);
            }

            Assert.IsFalse(target.TryResize(50));
            Assert.AreEqual("[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]", target.Finish());
        }
Exemple #23
0
        public void JsonBuilder_Writing_Truncates_Array_When_Capacity_Is_Exceeded()
        {
            JsonBuilder target = new JsonBuilder(50, 2);

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

            for (int i = 0; succeeded; i++)
            {
                succeeded = target.WriteValue(i);
            }

            Assert.AreEqual("[0,1,2,3,4,5,6,7,8,9,10,11,{\"(truncated)\":true}]", target.Finish());
        }
Exemple #24
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());
        }
Exemple #25
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());
        }
Exemple #26
0
        public void JsonBuilder_TryResize_Increases_Capacity_And_Preserves_Current_State()
        {
            JsonBuilder target = new JsonBuilder(50, 2);

            Assert.IsTrue(target.OpenArray());
            for (int i = 0; i < 10; i++)
            {
                Assert.IsTrue(target.WriteValue(i), "index:{0}", i);
            }

            Assert.IsTrue(target.TryResize(100));
            for (int i = 10; i < 20; i++)
            {
                Assert.IsTrue(target.WriteValue(i), "index:{0}", i);
            }

            Assert.AreEqual("[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]", target.Finish());
        }
Exemple #27
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());
        }