System.Json.Tests.JsonValueTests.JsonPrimitive_StringHandling C# (CSharp) Метод

JsonPrimitive_StringHandling() приватный Метод

private JsonPrimitive_StringHandling ( ) : void
Результат void
        public void JsonPrimitive_StringHandling()
        {
            Assert.Equal("\"Fact\"", new JsonPrimitive("Fact").ToString());
            
            // Handling of characters
            Assert.Equal("\"f\"", new JsonPrimitive('f').ToString());
            Assert.Equal('f', (char)JsonValue.Parse("\"f\""));

            // Control characters with special escape sequence
            Assert.Equal("\"\\b\\f\\n\\r\\t\"", new JsonPrimitive("\b\f\n\r\t").ToString());
            
            // Other characters which must be escaped
            Assert.Equal(@"""\""\\""", new JsonPrimitive("\"\\").ToString());

            // Control characters without special escape sequence
            for (int i = 0; i < 32; i++)
            {
                if (i != '\b' && i != '\f' && i != '\n' && i != '\r' && i != '\t')
                {
                    Assert.Equal("\"\\u" + i.ToString("x04") + "\"", new JsonPrimitive("" + (char)i).ToString());
                }
            }

            // JSON does not require U+2028 and U+2029 to be escaped, but
            // JavaScript does require this:
            // http://stackoverflow.com/questions/2965293/javascript-parse-error-on-u2028-unicode-character/9168133#9168133
            Assert.Equal("\"\\u2028\\u2029\"", new JsonPrimitive("\u2028\u2029").ToString());

            // '/' also does not have to be escaped, but escaping it when
            // preceeded by a '<' avoids problems with JSON in HTML <script> tags
            Assert.Equal("\"<\\/\"", new JsonPrimitive("</").ToString());

            // Don't escape '/' in other cases as this makes the JSON hard to read
            Assert.Equal("\"/bar\"", new JsonPrimitive("/bar").ToString());
            Assert.Equal("\"foo/bar\"", new JsonPrimitive("foo/bar").ToString());

            // Valid strings should not be escaped:
            Assert.Equal("\"\ud7ff\"", new JsonPrimitive("\ud7ff").ToString());
            Assert.Equal("\"\ue000\"", new JsonPrimitive("\ue000").ToString());
            Assert.Equal("\"\ud800\udc00\"", new JsonPrimitive("\ud800\udc00").ToString());
            Assert.Equal("\"\ud912\ude03\"", new JsonPrimitive("\ud912\ude03").ToString());
            Assert.Equal("\"\udbff\udfff\"", new JsonPrimitive("\udbff\udfff").ToString());

            Assert.Equal("\"{\\\"\\\\uD800\\\\uDC00\\\": 1}\"", new JsonPrimitive("{\"\\uD800\\uDC00\": 1}").ToString());
        }
JsonValueTests