public async Task ValueFormattingAsync()
        {
            byte[] data = Encoding.UTF8.GetBytes("Hello world.");

            JToken root;

            using (JTokenWriter jsonWriter = new JTokenWriter())
            {
                await jsonWriter.WriteStartArrayAsync();

                await jsonWriter.WriteValueAsync('@');

                await jsonWriter.WriteValueAsync("\r\n\t\f\b?{\\r\\n\"\'");

                await jsonWriter.WriteValueAsync(true);

                await jsonWriter.WriteValueAsync(10);

                await jsonWriter.WriteValueAsync(10.99);

                await jsonWriter.WriteValueAsync(0.99);

                await jsonWriter.WriteValueAsync(0.000000000000000001d);

                await jsonWriter.WriteValueAsync(0.000000000000000001m);

                await jsonWriter.WriteValueAsync((string)null);

                await jsonWriter.WriteValueAsync("This is a string.");

                await jsonWriter.WriteNullAsync();

                await jsonWriter.WriteUndefinedAsync();

                await jsonWriter.WriteValueAsync(data);

                await jsonWriter.WriteEndArrayAsync();

                root = jsonWriter.Token;
            }

            CustomAssert.IsInstanceOfType(typeof(JArray), root);
            Assert.AreEqual(13, root.Children().Count());
            Assert.AreEqual("@", (string)root[0]);
            Assert.AreEqual("\r\n\t\f\b?{\\r\\n\"\'", (string)root[1]);
            Assert.AreEqual(true, (bool)root[2]);
            Assert.AreEqual(10, (int)root[3]);
            Assert.AreEqual(10.99, (double)root[4]);
            Assert.AreEqual(0.99, (double)root[5]);
            Assert.AreEqual(0.000000000000000001d, (double)root[6]);
            Assert.AreEqual(0.000000000000000001m, (decimal)root[7]);
            Assert.AreEqual(null, (string)root[8]);
            Assert.AreEqual("This is a string.", (string)root[9]);
            Assert.AreEqual(null, ((JValue)root[10]).Value);
            Assert.AreEqual(null, ((JValue)root[11]).Value);
            Assert.AreEqual(data, (byte[])root[12]);
        }