public void ReadJsonComments()
        {
            string json = @"{/*comment!*/
  ""CPU"": ""Intel"",/*comment!*/
  ""Drives"": [/*comment!*/
    ""DVD read/writer"",
    /*comment!*/""500 gigabyte hard drive""
  ]/*comment!*/
}";

            JsonTextReader writer = new JsonTextReader(new StringReader(json));

            JsonValueConverter converter = new JsonValueConverter();
            JsonObject o = (JsonObject) converter.ReadJson(writer, typeof (JsonObject), null, null);

            Assert.Equal(2, o.Count);
            Assert.Equal("Intel", o.GetNamedString("CPU"));
            Assert.Equal("DVD read/writer", o.GetNamedArray("Drives")[0].GetString());
            Assert.Equal("500 gigabyte hard drive", o.GetNamedArray("Drives")[1].GetString());
        }
        public void ReadJsonBadJsonType()
        {
            string json = "null";

            JsonTextReader writer = new JsonTextReader(new StringReader(json));

            JsonValueConverter converter = new JsonValueConverter();

            AssertException.Throws<JsonException>(() =>
            {
                converter.ReadJson(writer, typeof (JsonObject), null, null);
            },
                "Could not convert 'Windows.Data.Json.JsonValue' to 'Windows.Data.Json.JsonObject'. Path '', line 1, position 4.");
        }
        public void ReadJsonUnexpectedEndInObject()
        {
            string json = "{'hi':";

            JsonTextReader writer = new JsonTextReader(new StringReader(json));

            JsonValueConverter converter = new JsonValueConverter();

            AssertException.Throws<JsonException>(() =>
            {
                converter.ReadJson(writer, typeof (JsonValue), null, null);
            }, "Unexpected end. Path 'hi', line 1, position 6.");
        }
        public void ReadJsonUnexpectedEndAfterComment()
        {
            string json = "[/*comment!*/";

            JsonTextReader writer = new JsonTextReader(new StringReader(json));

            JsonValueConverter converter = new JsonValueConverter();

            AssertException.Throws<JsonException>(() =>
            {
                converter.ReadJson(writer, typeof (JsonValue), null, null);
            }, "Unexpected end. Path '', line 1, position 13.");
        }
        public void ReadJsonUnsupportedValue()
        {
            string json = "undefined";

            JsonTextReader writer = new JsonTextReader(new StringReader(json));

            JsonValueConverter converter = new JsonValueConverter();

            AssertException.Throws<JsonException>(() =>
            {
                converter.ReadJson(writer, typeof (JsonValue), null, null);
            }, "Unexpected or unsupported token: Undefined. Path '', line 1, position 9.");
        }
        public void ReadJsonNullValue()
        {
            string json = "null";

            JsonTextReader writer = new JsonTextReader(new StringReader(json));

            JsonValueConverter converter = new JsonValueConverter();
            JsonValue v = (JsonValue) converter.ReadJson(writer, typeof (JsonValue), null, null);

            Assert.Equal(JsonValueType.Null, v.ValueType);
        }