コード例 #1
0
        public void write_object_with_array_of_objects(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("example");
                    writer.Object();
                    writer.Pair("one", 1);
                    writer.EndObject();
                    writer.Object();
                    writer.Pair("two", 2);
                    writer.EndObject();
                    writer.EndArray();
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #2
0
        public void write_object_with_array(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("example");
                    writer.ArrayNull();
                    writer.ArrayNumber("1");
                    writer.ArrayValue(2L);
                    writer.ArrayValue(3m);
                    writer.ArrayValue(4d);
                    writer.ArrayValue(" ");
                    writer.ArrayValue(true);
                    writer.Object();
                    writer.Pair("one", 1);
                    writer.EndObject();
                    writer.EndArray();
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #3
0
ファイル: JsonDocument.cs プロジェクト: stephenpatten/cavity
        public void WriteJson(JsonWriter writer)
        {
            if (null == writer)
            {
                throw new ArgumentNullException("writer");
            }

            if (0 == Count)
            {
                return;
            }

            if (1 < Count)
            {
                writer.Array();
            }

            foreach (IJsonSerializable item in this)
            {
                writer.Object();
                item.WriteJson(writer);
                writer.EndObject();
            }

            if (1 < Count)
            {
                writer.EndArray();
            }
        }
コード例 #4
0
        public void op_Object_whenParentNotArray()
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.EndObject();

                    // ReSharper disable AccessToDisposedClosure
                    Assert.Throws <InvalidOperationException>(() => writer.Object());

                    // ReSharper restore AccessToDisposedClosure
                }
            }
        }
コード例 #5
0
        public void write_pretty_object(string json)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream, JsonWriterSettings.Debug))
                {
                    writer.Object();
                    writer.Pair("id", 123);
                    writer.Pair("title", string.Empty);
                    writer.NullPair("value");
                    writer.Array("list");
                    writer.ArrayValue(1);
                    writer.ArrayValue(string.Empty);
                    writer.ArrayNull();
                    writer.ArrayValue(true);
                    writer.ArrayValue(false);
                    writer.EndArray();
                    writer.Pair("visible", true);
                    writer.Pair("enabled", false);
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var expected = new FileInfo(json).ReadToEnd();
                    var actual   = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #6
0
        public void write_object_with_pairs(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Pair("id", 123);
                    writer.Pair("title", string.Empty);
                    writer.NullPair("value");
                    writer.Array("list");
                    writer.ArrayValue(1);
                    writer.ArrayValue(string.Empty);
                    writer.ArrayNull();
                    writer.ArrayValue(true);
                    writer.ArrayValue(false);
                    writer.EndArray();
                    writer.Pair("visible", true);
                    writer.Pair("enabled", false);
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #7
0
        public void write_object_with_nested_arrays(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("list");
                    writer.ArrayValue(true);
                    writer.Array();
                    writer.ArrayValue(1);
                    writer.ArrayValue(2);
                    writer.ArrayValue(3);
                    writer.EndArray();
                    writer.ArrayValue(false);
                    writer.EndArray();
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #8
0
        public void write_array_with_two_empty_objects(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Array();
                    writer.Object();
                    writer.EndObject();
                    writer.Object();
                    writer.EndObject();
                    writer.EndArray();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #9
0
        public void op_Array_stringNull()
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();

                    // ReSharper disable AccessToDisposedClosure
                    Assert.Throws <ArgumentNullException>(() => writer.Array(null));

                    // ReSharper restore AccessToDisposedClosure
                }
            }
        }
コード例 #10
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_ArrayNull_whenParentNotArray()
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();

                    // ReSharper disable AccessToDisposedClosure
                    Assert.Throws<InvalidOperationException>(() => writer.ArrayNull());

                    // ReSharper restore AccessToDisposedClosure
                }
            }
        }
コード例 #11
0
        public void op_Pair_string_bool_whenArrayParent()
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("example");

                    // ReSharper disable AccessToDisposedClosure
                    Assert.Throws <InvalidOperationException>(() => writer.Pair("name", true));

                    // ReSharper restore AccessToDisposedClosure
                }
            }
        }
コード例 #12
0
        public void op_ArrayNumber_stringEmpty(string value)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("example");

                    // ReSharper disable AccessToDisposedClosure
                    Assert.Throws <ArgumentOutOfRangeException>(() => writer.ArrayNumber(value));

                    // ReSharper restore AccessToDisposedClosure
                }
            }
        }
コード例 #13
0
        private static void JsonSerializeList(this JsonWriter writer,
                                              IEnumerable list)
        {
            foreach (var item in list)
            {
                if (null == item)
                {
                    continue;
                }

                writer.Object();
                writer.JsonSerializeObject(item);
            }

            writer.EndArray();
        }
コード例 #14
0
ファイル: JsonObject.cs プロジェクト: stephenpatten/cavity
        public override string ToString()
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    WriteJson(writer);
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    return(reader.ReadToEnd());
                }
            }
        }
コード例 #15
0
        public void op_Pair_string_DateTime(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Pair("example", new DateTime(2011, 7, 14, 19, 43, 37, DateTimeKind.Utc));
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #16
0
        public void op_Pair_string_TimeSpan(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Pair("example", new TimeSpan(0, 17, 9, 43, 89));
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #17
0
        public void op_NullPair_string(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.NullPair("example");
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #18
0
        public void op_Pair_string_decimal(string value,
                                           string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Pair("example", XmlConvert.ToDecimal(value));
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #19
0
        public void op_WriteJson_JsonWriter_whenNestedArrays(string expected)
        {
            var obj = new JsonObject
            {
                new JsonPair("list",
                             new JsonArray
                {
                    Values =
                    {
                        new JsonTrue(),
                        new JsonArray
                        {
                            Values =
                            {
                                new JsonNumber("1"),
                                new JsonNumber("2"),
                                new JsonNumber("3")
                            }
                        },
                        new JsonFalse()
                    }
                })
            };

            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    obj.WriteJson(writer);
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #20
0
        public void op_ArrayValue_long(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("example");
                    writer.ArrayValue(12345L);
                    writer.EndArray();
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #21
0
        public void op_WriteJson_JsonWriter(string expected)
        {
            var obj = new JsonObject
            {
                new JsonPair("id", new JsonNumber("123")),
                new JsonPair("title", new JsonString(string.Empty)),
                new JsonPair("value", new JsonNull()),
                new JsonPair("list",
                             new JsonArray
                {
                    Values =
                    {
                        new JsonNumber("1"),
                        new JsonString(string.Empty),
                        new JsonNull(),
                        new JsonTrue(),
                        new JsonFalse()
                    }
                }),
                new JsonPair("visible", new JsonTrue()),
                new JsonPair("enabled", new JsonFalse())
            };

            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    obj.WriteJson(writer);
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #22
0
        public void op_Object(string expected,
                              int count)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    for (var i = 0; i < count; i++)
                    {
                        writer.Object();
                        writer.EndObject();
                    }
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #23
0
        public static string JsonSerialize(this object value,
                                           JsonWriterSettings settings)
        {
            if (null == value)
            {
                return null;
            }

            if (null == settings)
            {
                throw new ArgumentNullException("settings");
            }

            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream, settings))
                {
                    var list = value as IEnumerable;
                    if (value.GetType().IsArray)
                    {
                        writer.Array();
                        writer.JsonSerializeList(list);
                    }
                    else
                    {
                        writer.Object();
                        writer.JsonSerializeObject(value);
                    }
                }

                using (var reader = new StreamReader(stream))
                {
                    return reader.ReadToEnd();
                }
            }
        }
コード例 #24
0
        public static string JsonSerialize(this object value,
                                           JsonWriterSettings settings)
        {
            if (null == value)
            {
                return(null);
            }

            if (null == settings)
            {
                throw new ArgumentNullException("settings");
            }

            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream, settings))
                {
                    var list = value as IEnumerable;
                    if (value.GetType().IsArray)
                    {
                        writer.Array();
                        writer.JsonSerializeList(list);
                    }
                    else
                    {
                        writer.Object();
                        writer.JsonSerializeObject(value);
                    }
                }

                using (var reader = new StreamReader(stream))
                {
                    return(reader.ReadToEnd());
                }
            }
        }
コード例 #25
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void write_object_with_array(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("example");
                    writer.ArrayNull();
                    writer.ArrayNumber("1");
                    writer.ArrayValue(2L);
                    writer.ArrayValue(3m);
                    writer.ArrayValue(4d);
                    writer.ArrayValue(" ");
                    writer.ArrayValue(true);
                    writer.Object();
                    writer.Pair("one", 1);
                    writer.EndObject();
                    writer.EndArray();
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #26
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void write_empty_object(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #27
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_ArrayNumber_stringEmpty(string value)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("example");

                    // ReSharper disable AccessToDisposedClosure
                    Assert.Throws<ArgumentOutOfRangeException>(() => writer.ArrayNumber(value));

                    // ReSharper restore AccessToDisposedClosure
                }
            }
        }
コード例 #28
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void write_object_with_array_of_objects(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("example");
                    writer.Object();
                    writer.Pair("one", 1);
                    writer.EndObject();
                    writer.Object();
                    writer.Pair("two", 2);
                    writer.EndObject();
                    writer.EndArray();
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #29
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_Pair_string_bool_whenArrayParent()
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("example");

                    // ReSharper disable AccessToDisposedClosure
                    Assert.Throws<InvalidOperationException>(() => writer.Pair("name", true));

                    // ReSharper restore AccessToDisposedClosure
                }
            }
        }
コード例 #30
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void write_object_with_nested_arrays(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("list");
                    writer.ArrayValue(true);
                    writer.Array();
                    writer.ArrayValue(1);
                    writer.ArrayValue(2);
                    writer.ArrayValue(3);
                    writer.EndArray();
                    writer.ArrayValue(false);
                    writer.EndArray();
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #31
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_ArrayValue_long(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Array("example");
                    writer.ArrayValue(12345L);
                    writer.EndArray();
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #32
0
        private static void JsonSerializeObject(this JsonWriter writer,
                                                object obj)
        {
            if (null == obj)
            {
                return;
            }

            var properties = obj
                             .GetType()
                             .GetProperties(BindingFlags.Public | BindingFlags.Instance)
                             .ToList();

            foreach (var property in properties)
            {
                if (!property.CanRead)
                {
                    continue;
                }

                if (0 != property.GetIndexParameters().Length)
                {
                    continue;
                }

                var ignore = property.GetCustomAttributes(typeof(JsonIgnoreAttribute), true);
                if (0 != ignore.Length)
                {
                    continue;
                }

                var name = property.Name.ToCamelCase();
                foreach (JsonNameAttribute attribute in property.GetCustomAttributes(typeof(JsonNameAttribute), true))
                {
                    name = attribute.Name;
                }

                var value = property.GetValue(obj, null);

                if (writer.JsonSerializeBaseClassLibraryType(name, value))
                {
                    continue;
                }

                writer.Object(name);

                var serializable = value as IJsonSerializable;
                if (null == serializable)
                {
                    writer.JsonSerializeObject(value);
                }
                else
                {
                    serializable.WriteJson(writer);
                    writer.EndObject();
                }
            }

            var list = obj as IEnumerable;

            if (null != list)
            {
                writer.Array(writer.Settings.ItemsName);
                foreach (var item in list)
                {
                    if (writer.JsonSerializeBaseClassLibraryType(null, item))
                    {
                        continue;
                    }

                    writer.Object();
                    writer.JsonSerializeObject(item);
                }

                writer.EndArray();
            }

            writer.EndObject();
        }
コード例 #33
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_Object(string expected,
                              int count)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    for (var i = 0; i < count; i++)
                    {
                        writer.Object();
                        writer.EndObject();
                    }
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #34
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_Array_stringNull()
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();

                    // ReSharper disable AccessToDisposedClosure
                    Assert.Throws<ArgumentNullException>(() => writer.Array(null));

                    // ReSharper restore AccessToDisposedClosure
                }
            }
        }
コード例 #35
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_Object_whenAfterPair()
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Pair("one", 1);

                    // ReSharper disable AccessToDisposedClosure
                    Assert.Throws<InvalidOperationException>(() => writer.Object());

                    // ReSharper restore AccessToDisposedClosure
                }
            }
        }
コード例 #36
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_Pair_string_DateTime(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Pair("example", new DateTime(2011, 7, 14, 19, 43, 37, DateTimeKind.Utc));
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #37
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_Pair_string_TimeSpan(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Pair("example", new TimeSpan(0, 17, 9, 43, 89));
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #38
0
ファイル: JsonObject.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_WriteJson_JsonWriter(string expected)
        {
            var obj = new JsonObject
                          {
                              new JsonPair("id", new JsonNumber("123")),
                              new JsonPair("title", new JsonString(string.Empty)),
                              new JsonPair("value", new JsonNull()),
                              new JsonPair("list",
                                           new JsonArray
                                               {
                                                   Values =
                                                       {
                                                           new JsonNumber("1"),
                                                           new JsonString(string.Empty),
                                                           new JsonNull(),
                                                           new JsonTrue(),
                                                           new JsonFalse()
                                                       }
                                               }),
                              new JsonPair("visible", new JsonTrue()),
                              new JsonPair("enabled", new JsonFalse())
                          };

            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    obj.WriteJson(writer);
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #39
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void write_pretty_object(string json)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream, JsonWriterSettings.Debug))
                {
                    writer.Object();
                    writer.Pair("id", 123);
                    writer.Pair("title", string.Empty);
                    writer.NullPair("value");
                    writer.Array("list");
                    writer.ArrayValue(1);
                    writer.ArrayValue(string.Empty);
                    writer.ArrayNull();
                    writer.ArrayValue(true);
                    writer.ArrayValue(false);
                    writer.EndArray();
                    writer.Pair("visible", true);
                    writer.Pair("enabled", false);
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var expected = new FileInfo(json).ReadToEnd();
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #40
0
ファイル: JsonObject.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_WriteJson_JsonWriter_whenNestedArrays(string expected)
        {
            var obj = new JsonObject
                          {
                              new JsonPair("list",
                                           new JsonArray
                                               {
                                                   Values =
                                                       {
                                                           new JsonTrue(),
                                                           new JsonArray
                                                               {
                                                                   Values =
                                                                       {
                                                                           new JsonNumber("1"),
                                                                           new JsonNumber("2"),
                                                                           new JsonNumber("3")
                                                                       }
                                                               },
                                                           new JsonFalse()
                                                       }
                                               })
                          };

            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    obj.WriteJson(writer);
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #41
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void write_object_with_pairs(string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Pair("id", 123);
                    writer.Pair("title", string.Empty);
                    writer.NullPair("value");
                    writer.Array("list");
                    writer.ArrayValue(1);
                    writer.ArrayValue(string.Empty);
                    writer.ArrayNull();
                    writer.ArrayValue(true);
                    writer.ArrayValue(false);
                    writer.EndArray();
                    writer.Pair("visible", true);
                    writer.Pair("enabled", false);
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }
コード例 #42
0
ファイル: JsonObject.cs プロジェクト: stephenpatten/cavity
        private static void WriteJsonArray(JsonWriter writer,
                                           string name,
                                           JsonArray value)
        {
            if (null == name)
            {
                writer.Array();
            }
            else
            {
                writer.Array(name);
            }

            foreach (var item in value.Values)
            {
                var obj = item as IJsonSerializable;
                if (null != obj)
                {
                    writer.Object();
                    obj.WriteJson(writer);
                    writer.EndObject();
                    continue;
                }

                var number = item as JsonNumber;
                if (null != number)
                {
                    writer.ArrayNumber(number.Value);
                    continue;
                }

                var str = item as JsonString;
                if (null != str)
                {
                    writer.ArrayValue(str.Value);
                    continue;
                }

                var array = item as JsonArray;
                if (null != array)
                {
                    WriteJsonArray(writer, null, array);
                    continue;
                }

                if (item is JsonNull)
                {
                    writer.ArrayNull();
                }
                else if (item is JsonTrue)
                {
                    writer.ArrayValue(true);
                }
                else if (item is JsonFalse)
                {
                    writer.ArrayValue(false);
                }
            }

            writer.EndArray();
        }
コード例 #43
0
ファイル: JsonWriter.Facts.cs プロジェクト: KarlDirck/cavity
        public void op_StringPair_string_string(string value,
                                                string expected)
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new JsonWriter(stream))
                {
                    writer.Object();
                    writer.Pair("example", value);
                    writer.EndObject();
                }

                using (var reader = new StreamReader(stream))
                {
                    var actual = reader.ReadToEnd();

                    Assert.Equal(expected, actual);
                }
            }
        }