Statistics
| Branch: | Revision:

root / trunk / Libraries / Json40r2 / Source / Src / Newtonsoft.Json.Tests / JsonTextWriterTest.cs @ 0eea575a

History | View | Annotate | Download (18.6 kB)

1 d78cbf09 Panagiotis Kanavos
#region License
2 d78cbf09 Panagiotis Kanavos
// Copyright (c) 2007 James Newton-King
3 d78cbf09 Panagiotis Kanavos
//
4 d78cbf09 Panagiotis Kanavos
// Permission is hereby granted, free of charge, to any person
5 d78cbf09 Panagiotis Kanavos
// obtaining a copy of this software and associated documentation
6 d78cbf09 Panagiotis Kanavos
// files (the "Software"), to deal in the Software without
7 d78cbf09 Panagiotis Kanavos
// restriction, including without limitation the rights to use,
8 d78cbf09 Panagiotis Kanavos
// copy, modify, merge, publish, distribute, sublicense, and/or sell
9 d78cbf09 Panagiotis Kanavos
// copies of the Software, and to permit persons to whom the
10 d78cbf09 Panagiotis Kanavos
// Software is furnished to do so, subject to the following
11 d78cbf09 Panagiotis Kanavos
// conditions:
12 d78cbf09 Panagiotis Kanavos
//
13 d78cbf09 Panagiotis Kanavos
// The above copyright notice and this permission notice shall be
14 d78cbf09 Panagiotis Kanavos
// included in all copies or substantial portions of the Software.
15 d78cbf09 Panagiotis Kanavos
//
16 d78cbf09 Panagiotis Kanavos
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 d78cbf09 Panagiotis Kanavos
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18 d78cbf09 Panagiotis Kanavos
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 d78cbf09 Panagiotis Kanavos
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20 d78cbf09 Panagiotis Kanavos
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21 d78cbf09 Panagiotis Kanavos
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 d78cbf09 Panagiotis Kanavos
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23 d78cbf09 Panagiotis Kanavos
// OTHER DEALINGS IN THE SOFTWARE.
24 d78cbf09 Panagiotis Kanavos
#endregion
25 d78cbf09 Panagiotis Kanavos
26 d78cbf09 Panagiotis Kanavos
using System;
27 d78cbf09 Panagiotis Kanavos
using System.Collections.Generic;
28 d78cbf09 Panagiotis Kanavos
using System.Text;
29 d78cbf09 Panagiotis Kanavos
using NUnit.Framework;
30 d78cbf09 Panagiotis Kanavos
using Newtonsoft.Json;
31 d78cbf09 Panagiotis Kanavos
using System.IO;
32 d78cbf09 Panagiotis Kanavos
33 d78cbf09 Panagiotis Kanavos
namespace Newtonsoft.Json.Tests
34 d78cbf09 Panagiotis Kanavos
{
35 d78cbf09 Panagiotis Kanavos
  public class JsonTextWriterTest : TestFixtureBase
36 d78cbf09 Panagiotis Kanavos
  {
37 d78cbf09 Panagiotis Kanavos
    [Test]
38 d78cbf09 Panagiotis Kanavos
    public void CloseOutput()
39 d78cbf09 Panagiotis Kanavos
    {
40 d78cbf09 Panagiotis Kanavos
      MemoryStream ms = new MemoryStream();
41 d78cbf09 Panagiotis Kanavos
      JsonTextWriter writer = new JsonTextWriter(new StreamWriter(ms));
42 d78cbf09 Panagiotis Kanavos
43 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(ms.CanRead);
44 d78cbf09 Panagiotis Kanavos
      writer.Close();
45 d78cbf09 Panagiotis Kanavos
      Assert.IsFalse(ms.CanRead);
46 d78cbf09 Panagiotis Kanavos
47 d78cbf09 Panagiotis Kanavos
      ms = new MemoryStream();
48 d78cbf09 Panagiotis Kanavos
      writer = new JsonTextWriter(new StreamWriter(ms)) { CloseOutput = false };
49 d78cbf09 Panagiotis Kanavos
50 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(ms.CanRead);
51 d78cbf09 Panagiotis Kanavos
      writer.Close();
52 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(ms.CanRead);
53 d78cbf09 Panagiotis Kanavos
    }
54 d78cbf09 Panagiotis Kanavos
    
55 d78cbf09 Panagiotis Kanavos
    [Test]
56 d78cbf09 Panagiotis Kanavos
    public void ValueFormatting()
57 d78cbf09 Panagiotis Kanavos
    {
58 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
59 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
60 d78cbf09 Panagiotis Kanavos
61 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
62 d78cbf09 Panagiotis Kanavos
      {
63 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
64 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue('@');
65 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("\r\n\t\f\b?{\\r\\n\"\'");
66 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(true);
67 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(10);
68 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(10.99);
69 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(0.99);
70 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(0.000000000000000001d);
71 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(0.000000000000000001m);
72 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((string)null);
73 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((object)null);
74 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("This is a string.");
75 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteNull();
76 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteUndefined();
77 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
78 d78cbf09 Panagiotis Kanavos
      }
79 d78cbf09 Panagiotis Kanavos
80 d78cbf09 Panagiotis Kanavos
      string expected = @"[""@"",""\r\n\t\f\b?{\\r\\n\""'"",true,10,10.99,0.99,1E-18,0.000000000000000001,null,null,""This is a string."",null,undefined]";
81 d78cbf09 Panagiotis Kanavos
      string result = sb.ToString();
82 d78cbf09 Panagiotis Kanavos
83 d78cbf09 Panagiotis Kanavos
      Console.WriteLine("ValueFormatting");
84 d78cbf09 Panagiotis Kanavos
      Console.WriteLine(result);
85 d78cbf09 Panagiotis Kanavos
86 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, result);
87 d78cbf09 Panagiotis Kanavos
    }
88 d78cbf09 Panagiotis Kanavos
89 d78cbf09 Panagiotis Kanavos
    [Test]
90 d78cbf09 Panagiotis Kanavos
    public void NullableValueFormatting()
91 d78cbf09 Panagiotis Kanavos
    {
92 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter();
93 d78cbf09 Panagiotis Kanavos
      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
94 d78cbf09 Panagiotis Kanavos
      {
95 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
96 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((char?)null);
97 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((char?)'c');
98 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((bool?)null);
99 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((bool?)true);
100 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((byte?)null);
101 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((byte?)1);
102 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((sbyte?)null);
103 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((sbyte?)1);
104 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((short?)null);
105 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((short?)1);
106 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((ushort?)null);
107 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((ushort?)1);
108 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((int?)null);
109 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((int?)1);
110 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((uint?)null);
111 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((uint?)1);
112 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((long?)null);
113 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((long?)1);
114 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((ulong?)null);
115 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((ulong?)1);
116 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((double?)null);
117 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((double?)1.1);
118 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((float?)null);
119 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((float?)1.1);
120 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((decimal?)null);
121 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((decimal?)1.1m);
122 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((DateTime?)null);
123 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((DateTime?)new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc));
124 d78cbf09 Panagiotis Kanavos
#if !PocketPC && !NET20
125 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((DateTimeOffset?)null);
126 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((DateTimeOffset?)new DateTimeOffset(JsonConvert.InitialJavaScriptDateTicks, TimeSpan.Zero));
127 d78cbf09 Panagiotis Kanavos
#endif
128 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
129 d78cbf09 Panagiotis Kanavos
      }
130 d78cbf09 Panagiotis Kanavos
131 d78cbf09 Panagiotis Kanavos
      string json = sw.ToString();
132 d78cbf09 Panagiotis Kanavos
      string expected;
133 d78cbf09 Panagiotis Kanavos
134 d78cbf09 Panagiotis Kanavos
#if !PocketPC && !NET20
135 d78cbf09 Panagiotis Kanavos
      expected = @"[null,""c"",null,true,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1.1,null,1.1,null,1.1,null,""\/Date(0)\/"",null,""\/Date(0+0000)\/""]";
136 d78cbf09 Panagiotis Kanavos
#else
137 d78cbf09 Panagiotis Kanavos
      expected = @"[null,""c"",null,true,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1.1,null,1.1,null,1.1,null,""\/Date(0)\/""]";
138 d78cbf09 Panagiotis Kanavos
#endif
139 d78cbf09 Panagiotis Kanavos
140 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, json);
141 d78cbf09 Panagiotis Kanavos
    }
142 d78cbf09 Panagiotis Kanavos
143 d78cbf09 Panagiotis Kanavos
    [Test]
144 d78cbf09 Panagiotis Kanavos
    public void WriteValueObjectWithNullable()
145 d78cbf09 Panagiotis Kanavos
    {
146 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter();
147 d78cbf09 Panagiotis Kanavos
      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
148 d78cbf09 Panagiotis Kanavos
      {
149 d78cbf09 Panagiotis Kanavos
        char? value = 'c';
150 d78cbf09 Panagiotis Kanavos
151 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
152 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((object)value);
153 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
154 d78cbf09 Panagiotis Kanavos
      }
155 d78cbf09 Panagiotis Kanavos
156 d78cbf09 Panagiotis Kanavos
      string json = sw.ToString();
157 d78cbf09 Panagiotis Kanavos
      string expected = @"[""c""]";
158 d78cbf09 Panagiotis Kanavos
159 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, json);
160 d78cbf09 Panagiotis Kanavos
    }
161 d78cbf09 Panagiotis Kanavos
162 d78cbf09 Panagiotis Kanavos
    [Test]
163 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(ArgumentException), ExpectedMessage = @"Unsupported type: System.Version. Use the JsonSerializer class to get the object's JSON representation.")]
164 d78cbf09 Panagiotis Kanavos
    public void WriteValueObjectWithUnsupportedValue()
165 d78cbf09 Panagiotis Kanavos
    {
166 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter();
167 d78cbf09 Panagiotis Kanavos
      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
168 d78cbf09 Panagiotis Kanavos
      {
169 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
170 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(new Version(1, 1, 1, 1));
171 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
172 d78cbf09 Panagiotis Kanavos
      }
173 d78cbf09 Panagiotis Kanavos
    }
174 d78cbf09 Panagiotis Kanavos
175 d78cbf09 Panagiotis Kanavos
    [Test]
176 d78cbf09 Panagiotis Kanavos
    public void StringEscaping()
177 d78cbf09 Panagiotis Kanavos
    {
178 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
179 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
180 d78cbf09 Panagiotis Kanavos
181 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
182 d78cbf09 Panagiotis Kanavos
      {
183 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
184 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(@"""These pretzels are making me thirsty!""");
185 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("Jeff's house was burninated.");
186 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(@"1. You don't talk about fight club.
187 d78cbf09 Panagiotis Kanavos
2. You don't talk about fight club.");
188 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("35% of\t statistics\n are made\r up.");
189 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
190 d78cbf09 Panagiotis Kanavos
      }
191 d78cbf09 Panagiotis Kanavos
192 d78cbf09 Panagiotis Kanavos
      string expected = @"[""\""These pretzels are making me thirsty!\"""",""Jeff's house was burninated."",""1. You don't talk about fight club.\r\n2. You don't talk about fight club."",""35% of\t statistics\n are made\r up.""]";
193 d78cbf09 Panagiotis Kanavos
      string result = sb.ToString();
194 d78cbf09 Panagiotis Kanavos
195 d78cbf09 Panagiotis Kanavos
      Console.WriteLine("StringEscaping");
196 d78cbf09 Panagiotis Kanavos
      Console.WriteLine(result);
197 d78cbf09 Panagiotis Kanavos
198 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, result);
199 d78cbf09 Panagiotis Kanavos
    }
200 d78cbf09 Panagiotis Kanavos
201 d78cbf09 Panagiotis Kanavos
    [Test]
202 d78cbf09 Panagiotis Kanavos
    public void Indenting()
203 d78cbf09 Panagiotis Kanavos
    {
204 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
205 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
206 d78cbf09 Panagiotis Kanavos
207 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
208 d78cbf09 Panagiotis Kanavos
      {
209 d78cbf09 Panagiotis Kanavos
        jsonWriter.Formatting = Formatting.Indented;
210 d78cbf09 Panagiotis Kanavos
211 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartObject();
212 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("CPU");
213 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("Intel");
214 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("PSU");
215 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("500W");
216 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("Drives");
217 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
218 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("DVD read/writer");
219 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteComment("(broken)");
220 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("500 gigabyte hard drive");
221 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("200 gigabype hard drive");
222 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEnd();
223 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndObject();
224 d78cbf09 Panagiotis Kanavos
      }
225 d78cbf09 Panagiotis Kanavos
226 d78cbf09 Panagiotis Kanavos
      // {
227 d78cbf09 Panagiotis Kanavos
      //   "CPU": "Intel",
228 d78cbf09 Panagiotis Kanavos
      //   "PSU": "500W",
229 d78cbf09 Panagiotis Kanavos
      //   "Drives": [
230 d78cbf09 Panagiotis Kanavos
      //     "DVD read/writer"
231 d78cbf09 Panagiotis Kanavos
      //     /*(broken)*/,
232 d78cbf09 Panagiotis Kanavos
      //     "500 gigabyte hard drive",
233 d78cbf09 Panagiotis Kanavos
      //     "200 gigabype hard drive"
234 d78cbf09 Panagiotis Kanavos
      //   ]
235 d78cbf09 Panagiotis Kanavos
      // }
236 d78cbf09 Panagiotis Kanavos
237 d78cbf09 Panagiotis Kanavos
      string expected = @"{
238 d78cbf09 Panagiotis Kanavos
  ""CPU"": ""Intel"",
239 d78cbf09 Panagiotis Kanavos
  ""PSU"": ""500W"",
240 d78cbf09 Panagiotis Kanavos
  ""Drives"": [
241 d78cbf09 Panagiotis Kanavos
    ""DVD read/writer""
242 d78cbf09 Panagiotis Kanavos
    /*(broken)*/,
243 d78cbf09 Panagiotis Kanavos
    ""500 gigabyte hard drive"",
244 d78cbf09 Panagiotis Kanavos
    ""200 gigabype hard drive""
245 d78cbf09 Panagiotis Kanavos
  ]
246 d78cbf09 Panagiotis Kanavos
}";
247 d78cbf09 Panagiotis Kanavos
      string result = sb.ToString();
248 d78cbf09 Panagiotis Kanavos
249 d78cbf09 Panagiotis Kanavos
      Console.WriteLine("Indenting");
250 d78cbf09 Panagiotis Kanavos
      Console.WriteLine(result);
251 d78cbf09 Panagiotis Kanavos
252 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, result);
253 d78cbf09 Panagiotis Kanavos
    }
254 d78cbf09 Panagiotis Kanavos
255 d78cbf09 Panagiotis Kanavos
    [Test]
256 d78cbf09 Panagiotis Kanavos
    public void State()
257 d78cbf09 Panagiotis Kanavos
    {
258 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
259 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
260 d78cbf09 Panagiotis Kanavos
261 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
262 d78cbf09 Panagiotis Kanavos
      {
263 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
264 d78cbf09 Panagiotis Kanavos
265 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartObject();
266 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
267 d78cbf09 Panagiotis Kanavos
268 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("CPU");
269 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(WriteState.Property, jsonWriter.WriteState);
270 d78cbf09 Panagiotis Kanavos
271 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("Intel");
272 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
273 d78cbf09 Panagiotis Kanavos
274 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("Drives");
275 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(WriteState.Property, jsonWriter.WriteState);
276 d78cbf09 Panagiotis Kanavos
277 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
278 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
279 d78cbf09 Panagiotis Kanavos
280 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("DVD read/writer");
281 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
282 d78cbf09 Panagiotis Kanavos
283 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEnd();
284 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
285 d78cbf09 Panagiotis Kanavos
286 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndObject();
287 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
288 d78cbf09 Panagiotis Kanavos
      }
289 d78cbf09 Panagiotis Kanavos
    }
290 d78cbf09 Panagiotis Kanavos
291 d78cbf09 Panagiotis Kanavos
    [Test]
292 d78cbf09 Panagiotis Kanavos
    public void FloatingPointNonFiniteNumbers()
293 d78cbf09 Panagiotis Kanavos
    {
294 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
295 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
296 d78cbf09 Panagiotis Kanavos
297 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
298 d78cbf09 Panagiotis Kanavos
      {
299 d78cbf09 Panagiotis Kanavos
        jsonWriter.Formatting = Formatting.Indented;
300 d78cbf09 Panagiotis Kanavos
301 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
302 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.NaN);
303 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.PositiveInfinity);
304 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.NegativeInfinity);
305 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(float.NaN);
306 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(float.PositiveInfinity);
307 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(float.NegativeInfinity);
308 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
309 d78cbf09 Panagiotis Kanavos
310 d78cbf09 Panagiotis Kanavos
        jsonWriter.Flush();
311 d78cbf09 Panagiotis Kanavos
      }
312 d78cbf09 Panagiotis Kanavos
313 d78cbf09 Panagiotis Kanavos
      string expected = @"[
314 d78cbf09 Panagiotis Kanavos
  NaN,
315 d78cbf09 Panagiotis Kanavos
  Infinity,
316 d78cbf09 Panagiotis Kanavos
  -Infinity,
317 d78cbf09 Panagiotis Kanavos
  NaN,
318 d78cbf09 Panagiotis Kanavos
  Infinity,
319 d78cbf09 Panagiotis Kanavos
  -Infinity
320 d78cbf09 Panagiotis Kanavos
]";
321 d78cbf09 Panagiotis Kanavos
      string result = sb.ToString();
322 d78cbf09 Panagiotis Kanavos
323 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, result);
324 d78cbf09 Panagiotis Kanavos
    }
325 d78cbf09 Panagiotis Kanavos
326 d78cbf09 Panagiotis Kanavos
    [Test]
327 d78cbf09 Panagiotis Kanavos
    public void WriteRawInStart()
328 d78cbf09 Panagiotis Kanavos
    {
329 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
330 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
331 d78cbf09 Panagiotis Kanavos
332 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
333 d78cbf09 Panagiotis Kanavos
      {
334 d78cbf09 Panagiotis Kanavos
        jsonWriter.Formatting = Formatting.Indented;
335 d78cbf09 Panagiotis Kanavos
336 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteRaw("[1,2,3,4,5]");
337 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteWhitespace("  ");
338 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
339 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.NaN);
340 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
341 d78cbf09 Panagiotis Kanavos
      }
342 d78cbf09 Panagiotis Kanavos
343 d78cbf09 Panagiotis Kanavos
      string expected = @"[1,2,3,4,5]  [
344 d78cbf09 Panagiotis Kanavos
  NaN
345 d78cbf09 Panagiotis Kanavos
]";
346 d78cbf09 Panagiotis Kanavos
      string result = sb.ToString();
347 d78cbf09 Panagiotis Kanavos
348 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, result);
349 d78cbf09 Panagiotis Kanavos
    }
350 d78cbf09 Panagiotis Kanavos
351 d78cbf09 Panagiotis Kanavos
    [Test]
352 d78cbf09 Panagiotis Kanavos
    public void WriteRawInArray()
353 d78cbf09 Panagiotis Kanavos
    {
354 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
355 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
356 d78cbf09 Panagiotis Kanavos
357 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
358 d78cbf09 Panagiotis Kanavos
      {
359 d78cbf09 Panagiotis Kanavos
        jsonWriter.Formatting = Formatting.Indented;
360 d78cbf09 Panagiotis Kanavos
361 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
362 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.NaN);
363 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteRaw(",[1,2,3,4,5]");
364 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteRaw(",[1,2,3,4,5]");
365 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(float.NaN);
366 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
367 d78cbf09 Panagiotis Kanavos
      }
368 d78cbf09 Panagiotis Kanavos
369 d78cbf09 Panagiotis Kanavos
      string expected = @"[
370 d78cbf09 Panagiotis Kanavos
  NaN,[1,2,3,4,5],[1,2,3,4,5],
371 d78cbf09 Panagiotis Kanavos
  NaN
372 d78cbf09 Panagiotis Kanavos
]";
373 d78cbf09 Panagiotis Kanavos
      string result = sb.ToString();
374 d78cbf09 Panagiotis Kanavos
375 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, result);
376 d78cbf09 Panagiotis Kanavos
    }
377 d78cbf09 Panagiotis Kanavos
378 d78cbf09 Panagiotis Kanavos
    [Test]
379 d78cbf09 Panagiotis Kanavos
    public void WriteRawInObject()
380 d78cbf09 Panagiotis Kanavos
    {
381 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
382 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
383 d78cbf09 Panagiotis Kanavos
384 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
385 d78cbf09 Panagiotis Kanavos
      {
386 d78cbf09 Panagiotis Kanavos
        jsonWriter.Formatting = Formatting.Indented;
387 d78cbf09 Panagiotis Kanavos
388 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartObject();
389 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteRaw(@"""PropertyName"":[1,2,3,4,5]");
390 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEnd();
391 d78cbf09 Panagiotis Kanavos
      }
392 d78cbf09 Panagiotis Kanavos
393 d78cbf09 Panagiotis Kanavos
      string expected = @"{""PropertyName"":[1,2,3,4,5]}";
394 d78cbf09 Panagiotis Kanavos
      string result = sb.ToString();
395 d78cbf09 Panagiotis Kanavos
396 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, result);
397 d78cbf09 Panagiotis Kanavos
    }
398 d78cbf09 Panagiotis Kanavos
399 d78cbf09 Panagiotis Kanavos
    [Test]
400 d78cbf09 Panagiotis Kanavos
    public void WriteToken()
401 d78cbf09 Panagiotis Kanavos
    {
402 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StringReader("[1,2,3,4,5]"));
403 d78cbf09 Panagiotis Kanavos
      reader.Read();
404 d78cbf09 Panagiotis Kanavos
      reader.Read();
405 d78cbf09 Panagiotis Kanavos
406 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter();
407 d78cbf09 Panagiotis Kanavos
      JsonTextWriter writer = new JsonTextWriter(sw);
408 d78cbf09 Panagiotis Kanavos
      writer.WriteToken(reader);
409 d78cbf09 Panagiotis Kanavos
410 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual("1", sw.ToString());
411 d78cbf09 Panagiotis Kanavos
    }
412 d78cbf09 Panagiotis Kanavos
413 d78cbf09 Panagiotis Kanavos
    [Test]
414 d78cbf09 Panagiotis Kanavos
    public void WriteRawValue()
415 d78cbf09 Panagiotis Kanavos
    {
416 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
417 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
418 d78cbf09 Panagiotis Kanavos
419 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
420 d78cbf09 Panagiotis Kanavos
      {
421 d78cbf09 Panagiotis Kanavos
        int i = 0;
422 d78cbf09 Panagiotis Kanavos
        string rawJson = "[1,2]";
423 d78cbf09 Panagiotis Kanavos
424 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartObject();
425 d78cbf09 Panagiotis Kanavos
426 d78cbf09 Panagiotis Kanavos
        while (i < 3)
427 d78cbf09 Panagiotis Kanavos
        {
428 d78cbf09 Panagiotis Kanavos
          jsonWriter.WritePropertyName("d" + i);
429 d78cbf09 Panagiotis Kanavos
          jsonWriter.WriteRawValue(rawJson);
430 d78cbf09 Panagiotis Kanavos
431 d78cbf09 Panagiotis Kanavos
          i++;
432 d78cbf09 Panagiotis Kanavos
        }
433 d78cbf09 Panagiotis Kanavos
434 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndObject();
435 d78cbf09 Panagiotis Kanavos
      }
436 d78cbf09 Panagiotis Kanavos
437 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(@"{""d0"":[1,2],""d1"":[1,2],""d2"":[1,2]}", sb.ToString());
438 d78cbf09 Panagiotis Kanavos
    }
439 d78cbf09 Panagiotis Kanavos
440 d78cbf09 Panagiotis Kanavos
    [Test]
441 d78cbf09 Panagiotis Kanavos
    public void WriteObjectNestedInConstructor()
442 d78cbf09 Panagiotis Kanavos
    {
443 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
444 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
445 d78cbf09 Panagiotis Kanavos
446 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
447 d78cbf09 Panagiotis Kanavos
      {
448 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartObject();
449 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("con");
450 d78cbf09 Panagiotis Kanavos
451 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartConstructor("Ext.data.JsonStore");
452 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartObject();
453 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("aa");
454 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("aa");
455 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndObject();
456 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndConstructor();
457 d78cbf09 Panagiotis Kanavos
458 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndObject();
459 d78cbf09 Panagiotis Kanavos
      }
460 d78cbf09 Panagiotis Kanavos
461 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(@"{""con"":new Ext.data.JsonStore({""aa"":""aa""})}", sb.ToString());
462 d78cbf09 Panagiotis Kanavos
    }
463 d78cbf09 Panagiotis Kanavos
464 d78cbf09 Panagiotis Kanavos
    [Test]
465 d78cbf09 Panagiotis Kanavos
    public void WriteFloatingPointNumber()
466 d78cbf09 Panagiotis Kanavos
    {
467 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
468 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
469 d78cbf09 Panagiotis Kanavos
470 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
471 d78cbf09 Panagiotis Kanavos
      {
472 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
473 d78cbf09 Panagiotis Kanavos
474 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(0.0);
475 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(0f);
476 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(0.1);
477 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(1.0);
478 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(1.000001);
479 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(0.000001);
480 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.Epsilon);
481 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.PositiveInfinity);
482 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.NegativeInfinity);
483 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.NaN);
484 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.MaxValue);
485 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.MinValue);
486 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(float.PositiveInfinity);
487 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(float.NegativeInfinity);
488 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(float.NaN);
489 d78cbf09 Panagiotis Kanavos
490 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
491 d78cbf09 Panagiotis Kanavos
      }
492 d78cbf09 Panagiotis Kanavos
493 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(@"[0.0,0.0,0.1,1.0,1.000001,1E-06,4.94065645841247E-324,Infinity,-Infinity,NaN,1.7976931348623157E+308,-1.7976931348623157E+308,Infinity,-Infinity,NaN]", sb.ToString());
494 d78cbf09 Panagiotis Kanavos
    }
495 d78cbf09 Panagiotis Kanavos
496 d78cbf09 Panagiotis Kanavos
    [Test]
497 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(JsonWriterException), ExpectedMessage = "No token to close.")]
498 d78cbf09 Panagiotis Kanavos
    public void BadWriteEndArray()
499 d78cbf09 Panagiotis Kanavos
    {
500 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
501 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
502 d78cbf09 Panagiotis Kanavos
503 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
504 d78cbf09 Panagiotis Kanavos
      {
505 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
506 d78cbf09 Panagiotis Kanavos
507 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(0.0);
508 d78cbf09 Panagiotis Kanavos
509 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
510 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
511 d78cbf09 Panagiotis Kanavos
      }
512 d78cbf09 Panagiotis Kanavos
    }
513 d78cbf09 Panagiotis Kanavos
514 d78cbf09 Panagiotis Kanavos
    [Test]
515 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(ArgumentException), ExpectedMessage = @"Invalid JavaScript string quote character. Valid quote characters are ' and "".")]
516 d78cbf09 Panagiotis Kanavos
    public void InvalidQuoteChar()
517 d78cbf09 Panagiotis Kanavos
    {
518 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
519 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
520 d78cbf09 Panagiotis Kanavos
521 d78cbf09 Panagiotis Kanavos
      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
522 d78cbf09 Panagiotis Kanavos
      {
523 d78cbf09 Panagiotis Kanavos
        jsonWriter.Formatting = Formatting.Indented;
524 d78cbf09 Panagiotis Kanavos
        jsonWriter.QuoteChar = '*';
525 d78cbf09 Panagiotis Kanavos
      }
526 d78cbf09 Panagiotis Kanavos
    }
527 d78cbf09 Panagiotis Kanavos
528 d78cbf09 Panagiotis Kanavos
    [Test]
529 d78cbf09 Panagiotis Kanavos
    public void Indentation()
530 d78cbf09 Panagiotis Kanavos
    {
531 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
532 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
533 d78cbf09 Panagiotis Kanavos
534 d78cbf09 Panagiotis Kanavos
      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
535 d78cbf09 Panagiotis Kanavos
      {
536 d78cbf09 Panagiotis Kanavos
        jsonWriter.Formatting = Formatting.Indented;
537 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(Formatting.Indented, jsonWriter.Formatting);
538 d78cbf09 Panagiotis Kanavos
539 d78cbf09 Panagiotis Kanavos
        jsonWriter.Indentation = 5;
540 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(5, jsonWriter.Indentation);
541 d78cbf09 Panagiotis Kanavos
        jsonWriter.IndentChar = '_';
542 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual('_', jsonWriter.IndentChar);
543 d78cbf09 Panagiotis Kanavos
        jsonWriter.QuoteName = true;
544 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(true, jsonWriter.QuoteName);
545 d78cbf09 Panagiotis Kanavos
        jsonWriter.QuoteChar = '\'';
546 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual('\'', jsonWriter.QuoteChar);
547 d78cbf09 Panagiotis Kanavos
548 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartObject();
549 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("propertyName");
550 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(double.NaN);
551 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndObject();
552 d78cbf09 Panagiotis Kanavos
      }
553 d78cbf09 Panagiotis Kanavos
554 d78cbf09 Panagiotis Kanavos
      string expected = @"{
555 d78cbf09 Panagiotis Kanavos
_____'propertyName': NaN
556 d78cbf09 Panagiotis Kanavos
}";
557 d78cbf09 Panagiotis Kanavos
      string result = sb.ToString();
558 d78cbf09 Panagiotis Kanavos
559 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, result);
560 d78cbf09 Panagiotis Kanavos
    }
561 d78cbf09 Panagiotis Kanavos
562 d78cbf09 Panagiotis Kanavos
    [Test]
563 d78cbf09 Panagiotis Kanavos
    public void WriteSingleBytes()
564 d78cbf09 Panagiotis Kanavos
    {
565 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
566 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
567 d78cbf09 Panagiotis Kanavos
568 d78cbf09 Panagiotis Kanavos
      string text = "Hello world.";
569 d78cbf09 Panagiotis Kanavos
      byte[] data = Encoding.UTF8.GetBytes(text);
570 d78cbf09 Panagiotis Kanavos
571 d78cbf09 Panagiotis Kanavos
      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
572 d78cbf09 Panagiotis Kanavos
      {
573 d78cbf09 Panagiotis Kanavos
        jsonWriter.Formatting = Formatting.Indented;
574 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(Formatting.Indented, jsonWriter.Formatting);
575 d78cbf09 Panagiotis Kanavos
576 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(data);
577 d78cbf09 Panagiotis Kanavos
      }
578 d78cbf09 Panagiotis Kanavos
579 d78cbf09 Panagiotis Kanavos
      string expected = @"""SGVsbG8gd29ybGQu""";
580 d78cbf09 Panagiotis Kanavos
      string result = sb.ToString();
581 d78cbf09 Panagiotis Kanavos
582 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, result);
583 d78cbf09 Panagiotis Kanavos
584 d78cbf09 Panagiotis Kanavos
      byte[] d2 = Convert.FromBase64String(result.Trim('"'));
585 d78cbf09 Panagiotis Kanavos
586 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(text, Encoding.UTF8.GetString(d2, 0, d2.Length));
587 d78cbf09 Panagiotis Kanavos
    }
588 d78cbf09 Panagiotis Kanavos
589 d78cbf09 Panagiotis Kanavos
    [Test]
590 d78cbf09 Panagiotis Kanavos
    public void WriteBytesInArray()
591 d78cbf09 Panagiotis Kanavos
    {
592 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
593 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
594 d78cbf09 Panagiotis Kanavos
595 d78cbf09 Panagiotis Kanavos
      string text = "Hello world.";
596 d78cbf09 Panagiotis Kanavos
      byte[] data = Encoding.UTF8.GetBytes(text);
597 d78cbf09 Panagiotis Kanavos
598 d78cbf09 Panagiotis Kanavos
      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
599 d78cbf09 Panagiotis Kanavos
      {
600 d78cbf09 Panagiotis Kanavos
        jsonWriter.Formatting = Formatting.Indented;
601 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(Formatting.Indented, jsonWriter.Formatting);
602 d78cbf09 Panagiotis Kanavos
603 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
604 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(data);
605 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(data);
606 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((object)data);
607 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue((byte[])null);
608 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
609 d78cbf09 Panagiotis Kanavos
      }
610 d78cbf09 Panagiotis Kanavos
611 d78cbf09 Panagiotis Kanavos
      string expected = @"[
612 d78cbf09 Panagiotis Kanavos
  ""SGVsbG8gd29ybGQu"",
613 d78cbf09 Panagiotis Kanavos
  ""SGVsbG8gd29ybGQu"",
614 d78cbf09 Panagiotis Kanavos
  ""SGVsbG8gd29ybGQu"",
615 d78cbf09 Panagiotis Kanavos
  null
616 d78cbf09 Panagiotis Kanavos
]";
617 d78cbf09 Panagiotis Kanavos
      string result = sb.ToString();
618 d78cbf09 Panagiotis Kanavos
619 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(expected, result);
620 d78cbf09 Panagiotis Kanavos
    }
621 d78cbf09 Panagiotis Kanavos
  }
622 d78cbf09 Panagiotis Kanavos
}