Statistics
| Branch: | Revision:

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

History | View | Annotate | Download (27.3 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
using System.Xml;
33 d78cbf09 Panagiotis Kanavos
34 d78cbf09 Panagiotis Kanavos
namespace Newtonsoft.Json.Tests
35 d78cbf09 Panagiotis Kanavos
{
36 d78cbf09 Panagiotis Kanavos
  public class JsonTextReaderTest : TestFixtureBase
37 d78cbf09 Panagiotis Kanavos
  {
38 d78cbf09 Panagiotis Kanavos
    [Test]
39 d78cbf09 Panagiotis Kanavos
    public void CloseInput()
40 d78cbf09 Panagiotis Kanavos
    {
41 d78cbf09 Panagiotis Kanavos
      MemoryStream ms = new MemoryStream();
42 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StreamReader(ms));
43 d78cbf09 Panagiotis Kanavos
44 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(ms.CanRead);
45 d78cbf09 Panagiotis Kanavos
      reader.Close();
46 d78cbf09 Panagiotis Kanavos
      Assert.IsFalse(ms.CanRead);
47 d78cbf09 Panagiotis Kanavos
48 d78cbf09 Panagiotis Kanavos
      ms = new MemoryStream();
49 d78cbf09 Panagiotis Kanavos
      reader = new JsonTextReader(new StreamReader(ms)) { CloseInput = false };
50 d78cbf09 Panagiotis Kanavos
51 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(ms.CanRead);
52 d78cbf09 Panagiotis Kanavos
      reader.Close();
53 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(ms.CanRead);
54 d78cbf09 Panagiotis Kanavos
    }
55 d78cbf09 Panagiotis Kanavos
    
56 d78cbf09 Panagiotis Kanavos
    [Test]
57 d78cbf09 Panagiotis Kanavos
    public void YahooFinance()
58 d78cbf09 Panagiotis Kanavos
    {
59 d78cbf09 Panagiotis Kanavos
      string input = @"{
60 d78cbf09 Panagiotis Kanavos
""matches"" : [
61 d78cbf09 Panagiotis Kanavos
{""t"":""C"", ""n"":""Citigroup Inc."", ""e"":""NYSE"", ""id"":""662713""}
62 d78cbf09 Panagiotis Kanavos
,{""t"":""CHL"", ""n"":""China Mobile Ltd. (ADR)"", ""e"":""NYSE"", ""id"":""660998""}
63 d78cbf09 Panagiotis Kanavos
,{""t"":""PTR"", ""n"":""PetroChina Company Limited (ADR)"", ""e"":""NYSE"", ""id"":""664536""}
64 d78cbf09 Panagiotis Kanavos
,{""t"":""RIO"", ""n"":""Companhia Vale do Rio Doce (ADR)"", ""e"":""NYSE"", ""id"":""671472""}
65 d78cbf09 Panagiotis Kanavos
,{""t"":""RIOPR"", ""n"":""Companhia Vale do Rio Doce (ADR)"", ""e"":""NYSE"", ""id"":""3512643""}
66 d78cbf09 Panagiotis Kanavos
,{""t"":""CSCO"", ""n"":""Cisco Systems, Inc."", ""e"":""NASDAQ"", ""id"":""99624""}
67 d78cbf09 Panagiotis Kanavos
,{""t"":""CVX"", ""n"":""Chevron Corporation"", ""e"":""NYSE"", ""id"":""667226""}
68 d78cbf09 Panagiotis Kanavos
,{""t"":""TM"", ""n"":""Toyota Motor Corporation (ADR)"", ""e"":""NYSE"", ""id"":""655880""}
69 d78cbf09 Panagiotis Kanavos
,{""t"":""JPM"", ""n"":""JPMorgan Chase \\x26 Co."", ""e"":""NYSE"", ""id"":""665639""}
70 d78cbf09 Panagiotis Kanavos
,{""t"":""COP"", ""n"":""ConocoPhillips"", ""e"":""NYSE"", ""id"":""1691168""}
71 d78cbf09 Panagiotis Kanavos
,{""t"":""LFC"", ""n"":""China Life Insurance Company Ltd. (ADR)"", ""e"":""NYSE"", ""id"":""688679""}
72 d78cbf09 Panagiotis Kanavos
,{""t"":""NOK"", ""n"":""Nokia Corporation (ADR)"", ""e"":""NYSE"", ""id"":""657729""}
73 d78cbf09 Panagiotis Kanavos
,{""t"":""KO"", ""n"":""The Coca-Cola Company"", ""e"":""NYSE"", ""id"":""6550""}
74 d78cbf09 Panagiotis Kanavos
,{""t"":""VZ"", ""n"":""Verizon Communications Inc."", ""e"":""NYSE"", ""id"":""664887""}
75 d78cbf09 Panagiotis Kanavos
,{""t"":""AMX"", ""n"":""America Movil S.A.B de C.V. (ADR)"", ""e"":""NYSE"", ""id"":""665834""}],
76 d78cbf09 Panagiotis Kanavos
""all"" : false
77 d78cbf09 Panagiotis Kanavos
}
78 d78cbf09 Panagiotis Kanavos
";
79 d78cbf09 Panagiotis Kanavos
80 d78cbf09 Panagiotis Kanavos
      using (JsonReader jsonReader = new JsonTextReader(new StringReader(input)))
81 d78cbf09 Panagiotis Kanavos
      {
82 d78cbf09 Panagiotis Kanavos
        while (jsonReader.Read())
83 d78cbf09 Panagiotis Kanavos
        {
84 d78cbf09 Panagiotis Kanavos
          Console.WriteLine(jsonReader.Value);
85 d78cbf09 Panagiotis Kanavos
        }
86 d78cbf09 Panagiotis Kanavos
      }
87 d78cbf09 Panagiotis Kanavos
    }
88 d78cbf09 Panagiotis Kanavos
89 d78cbf09 Panagiotis Kanavos
    [Test]
90 d78cbf09 Panagiotis Kanavos
    public void ReadingIndented()
91 d78cbf09 Panagiotis Kanavos
    {
92 d78cbf09 Panagiotis Kanavos
      string input = @"{
93 d78cbf09 Panagiotis Kanavos
  CPU: 'Intel',
94 d78cbf09 Panagiotis Kanavos
  Drives: [
95 d78cbf09 Panagiotis Kanavos
    'DVD read/writer',
96 d78cbf09 Panagiotis Kanavos
    ""500 gigabyte hard drive""
97 d78cbf09 Panagiotis Kanavos
  ]
98 d78cbf09 Panagiotis Kanavos
}";
99 d78cbf09 Panagiotis Kanavos
100 d78cbf09 Panagiotis Kanavos
      StringReader sr = new StringReader(input);
101 d78cbf09 Panagiotis Kanavos
102 d78cbf09 Panagiotis Kanavos
      using (JsonTextReader jsonReader = new JsonTextReader(sr))
103 d78cbf09 Panagiotis Kanavos
      {
104 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.None);
105 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(0, jsonReader.LineNumber);
106 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(0, jsonReader.LinePosition);
107 d78cbf09 Panagiotis Kanavos
108 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
109 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartObject);
110 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1, jsonReader.LineNumber);
111 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1, jsonReader.LinePosition);
112 d78cbf09 Panagiotis Kanavos
113 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
114 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
115 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.Value, "CPU");
116 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(2, jsonReader.LineNumber);
117 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(6, jsonReader.LinePosition);
118 d78cbf09 Panagiotis Kanavos
119 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
120 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
121 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.Value, "Intel");
122 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(2, jsonReader.LineNumber);
123 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(14, jsonReader.LinePosition);
124 d78cbf09 Panagiotis Kanavos
125 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
126 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
127 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.Value, "Drives");
128 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(3, jsonReader.LineNumber);
129 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(9, jsonReader.LinePosition);
130 d78cbf09 Panagiotis Kanavos
131 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
132 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartArray);
133 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(3, jsonReader.LineNumber);
134 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(11, jsonReader.LinePosition);
135 d78cbf09 Panagiotis Kanavos
136 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
137 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
138 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.Value, "DVD read/writer");
139 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.QuoteChar, '\'');
140 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(4, jsonReader.LineNumber);
141 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(21, jsonReader.LinePosition);
142 d78cbf09 Panagiotis Kanavos
143 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
144 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
145 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.Value, "500 gigabyte hard drive");
146 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.QuoteChar, '"');
147 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(5, jsonReader.LineNumber);
148 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(29, jsonReader.LinePosition);
149 d78cbf09 Panagiotis Kanavos
150 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
151 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndArray);
152 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(6, jsonReader.LineNumber);
153 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(3, jsonReader.LinePosition);
154 d78cbf09 Panagiotis Kanavos
155 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
156 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndObject);
157 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(7, jsonReader.LineNumber);
158 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1, jsonReader.LinePosition);
159 d78cbf09 Panagiotis Kanavos
160 d78cbf09 Panagiotis Kanavos
        Assert.IsFalse(jsonReader.Read());
161 d78cbf09 Panagiotis Kanavos
      }
162 d78cbf09 Panagiotis Kanavos
    }
163 d78cbf09 Panagiotis Kanavos
164 d78cbf09 Panagiotis Kanavos
    [Test]
165 d78cbf09 Panagiotis Kanavos
    public void Depth()
166 d78cbf09 Panagiotis Kanavos
    {
167 d78cbf09 Panagiotis Kanavos
      string input = "{value:'Purple\\r \\n monkey\\'s:\\tdishwasher',array:[1,2]}";
168 d78cbf09 Panagiotis Kanavos
169 d78cbf09 Panagiotis Kanavos
      StringReader sr = new StringReader(input);
170 d78cbf09 Panagiotis Kanavos
171 d78cbf09 Panagiotis Kanavos
      using (JsonReader jsonReader = new JsonTextReader(sr))
172 d78cbf09 Panagiotis Kanavos
      {
173 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(0, jsonReader.Depth);
174 d78cbf09 Panagiotis Kanavos
175 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
176 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartObject);
177 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(0, jsonReader.Depth);
178 d78cbf09 Panagiotis Kanavos
179 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
180 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
181 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1, jsonReader.Depth);
182 d78cbf09 Panagiotis Kanavos
183 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
184 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
185 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.Value, "Purple\r \n monkey's:\tdishwasher");
186 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.QuoteChar, '\'');
187 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1, jsonReader.Depth);
188 d78cbf09 Panagiotis Kanavos
189 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
190 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
191 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1, jsonReader.Depth);
192 d78cbf09 Panagiotis Kanavos
193 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
194 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartArray);
195 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(2, jsonReader.Depth);
196 d78cbf09 Panagiotis Kanavos
197 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
198 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.Integer);
199 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1, jsonReader.Value);
200 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(3, jsonReader.Depth);
201 d78cbf09 Panagiotis Kanavos
202 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
203 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.Integer);
204 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(2, jsonReader.Value);
205 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(3, jsonReader.Depth);
206 d78cbf09 Panagiotis Kanavos
207 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
208 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndArray);
209 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1, jsonReader.Depth);
210 d78cbf09 Panagiotis Kanavos
211 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
212 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndObject);
213 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(0, jsonReader.Depth);
214 d78cbf09 Panagiotis Kanavos
      }
215 d78cbf09 Panagiotis Kanavos
    }
216 d78cbf09 Panagiotis Kanavos
217 d78cbf09 Panagiotis Kanavos
    [Test]
218 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(ArgumentNullException), ExpectedMessage = @"Value cannot be null.
219 d78cbf09 Panagiotis Kanavos
Parameter name: reader")]
220 d78cbf09 Panagiotis Kanavos
    public void NullTextReader()
221 d78cbf09 Panagiotis Kanavos
    {
222 d78cbf09 Panagiotis Kanavos
      new JsonTextReader(null);
223 d78cbf09 Panagiotis Kanavos
    }
224 d78cbf09 Panagiotis Kanavos
225 d78cbf09 Panagiotis Kanavos
    [Test]
226 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Unterminated string. Expected delimiter: '. Line 1, position 3.")]
227 d78cbf09 Panagiotis Kanavos
    public void UnexpectedEndOfString()
228 d78cbf09 Panagiotis Kanavos
    {
229 d78cbf09 Panagiotis Kanavos
      JsonReader reader = new JsonTextReader(new StringReader("'hi"));
230 d78cbf09 Panagiotis Kanavos
      reader.Read();
231 d78cbf09 Panagiotis Kanavos
    }
232 d78cbf09 Panagiotis Kanavos
233 d78cbf09 Panagiotis Kanavos
    [Test]
234 d78cbf09 Panagiotis Kanavos
    public void ReadNullTerminatorStrings()
235 d78cbf09 Panagiotis Kanavos
    {
236 d78cbf09 Panagiotis Kanavos
      JsonReader reader = new JsonTextReader(new StringReader("'h\0i'"));
237 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
238 d78cbf09 Panagiotis Kanavos
239 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual("h\0i", reader.Value);
240 d78cbf09 Panagiotis Kanavos
    }
241 d78cbf09 Panagiotis Kanavos
242 d78cbf09 Panagiotis Kanavos
    [Test]
243 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Unexpected end while parsing unicode character. Line 1, position 7.")]
244 d78cbf09 Panagiotis Kanavos
    public void UnexpectedEndOfHex()
245 d78cbf09 Panagiotis Kanavos
    {
246 d78cbf09 Panagiotis Kanavos
      JsonReader reader = new JsonTextReader(new StringReader(@"'h\u006"));
247 d78cbf09 Panagiotis Kanavos
      reader.Read();
248 d78cbf09 Panagiotis Kanavos
    }
249 d78cbf09 Panagiotis Kanavos
250 d78cbf09 Panagiotis Kanavos
    [Test]
251 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Unterminated string. Expected delimiter: '. Line 1, position 3.")]
252 d78cbf09 Panagiotis Kanavos
    public void UnexpectedEndOfControlCharacter()
253 d78cbf09 Panagiotis Kanavos
    {
254 d78cbf09 Panagiotis Kanavos
      JsonReader reader = new JsonTextReader(new StringReader(@"'h\"));
255 d78cbf09 Panagiotis Kanavos
      reader.Read();
256 d78cbf09 Panagiotis Kanavos
    }
257 d78cbf09 Panagiotis Kanavos
258 d78cbf09 Panagiotis Kanavos
    [Test]
259 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Unexpected token when reading bytes: Boolean. Line 1, position 4.")]
260 d78cbf09 Panagiotis Kanavos
    public void ReadBytesWithBadCharacter()
261 d78cbf09 Panagiotis Kanavos
    {
262 d78cbf09 Panagiotis Kanavos
      JsonReader reader = new JsonTextReader(new StringReader(@"true"));
263 d78cbf09 Panagiotis Kanavos
      reader.ReadAsBytes();
264 d78cbf09 Panagiotis Kanavos
    }
265 d78cbf09 Panagiotis Kanavos
266 d78cbf09 Panagiotis Kanavos
    [Test]
267 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Unterminated string. Expected delimiter: '. Line 1, position 17.")]
268 d78cbf09 Panagiotis Kanavos
    public void ReadBytesWithUnexpectedEnd()
269 d78cbf09 Panagiotis Kanavos
    {
270 d78cbf09 Panagiotis Kanavos
      string helloWorld = "Hello world!";
271 d78cbf09 Panagiotis Kanavos
      byte[] helloWorldData = Encoding.UTF8.GetBytes(helloWorld);
272 d78cbf09 Panagiotis Kanavos
273 d78cbf09 Panagiotis Kanavos
      JsonReader reader = new JsonTextReader(new StringReader(@"'" + Convert.ToBase64String(helloWorldData)));
274 d78cbf09 Panagiotis Kanavos
      reader.ReadAsBytes();
275 d78cbf09 Panagiotis Kanavos
    }
276 d78cbf09 Panagiotis Kanavos
277 d78cbf09 Panagiotis Kanavos
    [Test]
278 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Unexpected end when reading bytes: Line 1, position 3.")]
279 d78cbf09 Panagiotis Kanavos
    public void ReadBytesNoStartWithUnexpectedEnd()
280 d78cbf09 Panagiotis Kanavos
    {
281 d78cbf09 Panagiotis Kanavos
      JsonReader reader = new JsonTextReader(new StringReader(@"[  "));
282 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
283 d78cbf09 Panagiotis Kanavos
      reader.ReadAsBytes();
284 d78cbf09 Panagiotis Kanavos
    }
285 d78cbf09 Panagiotis Kanavos
286 d78cbf09 Panagiotis Kanavos
    [Test]
287 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Unexpected end when parsing unquoted property name. Line 1, position 4.")]
288 d78cbf09 Panagiotis Kanavos
    public void UnexpectedEndWhenParsingUnquotedProperty()
289 d78cbf09 Panagiotis Kanavos
    {
290 d78cbf09 Panagiotis Kanavos
      JsonReader reader = new JsonTextReader(new StringReader(@"{aww"));
291 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
292 d78cbf09 Panagiotis Kanavos
      reader.Read();
293 d78cbf09 Panagiotis Kanavos
    }
294 d78cbf09 Panagiotis Kanavos
295 d78cbf09 Panagiotis Kanavos
    [Test]
296 d78cbf09 Panagiotis Kanavos
    public void ParsingQuotedPropertyWithControlCharacters()
297 d78cbf09 Panagiotis Kanavos
    {
298 d78cbf09 Panagiotis Kanavos
      JsonReader reader = new JsonTextReader(new StringReader(@"{'hi\r\nbye':1}"));
299 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
300 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
301 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
302 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(@"hi
303 d78cbf09 Panagiotis Kanavos
bye", reader.Value);
304 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
305 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
306 d78cbf09 Panagiotis Kanavos
      Assert.IsFalse(reader.Read());
307 d78cbf09 Panagiotis Kanavos
    }
308 d78cbf09 Panagiotis Kanavos
309 d78cbf09 Panagiotis Kanavos
    [Test]
310 d78cbf09 Panagiotis Kanavos
    public void ReadBytesFollowingNumberInArray()
311 d78cbf09 Panagiotis Kanavos
    {
312 d78cbf09 Panagiotis Kanavos
      string helloWorld = "Hello world!";
313 d78cbf09 Panagiotis Kanavos
      byte[] helloWorldData = Encoding.UTF8.GetBytes(helloWorld);
314 d78cbf09 Panagiotis Kanavos
315 d78cbf09 Panagiotis Kanavos
      JsonReader reader = new JsonTextReader(new StringReader(@"[1,'" + Convert.ToBase64String(helloWorldData) + @"']"));
316 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
317 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
318 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
319 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
320 d78cbf09 Panagiotis Kanavos
      byte[] data = reader.ReadAsBytes();
321 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(helloWorldData, data);
322 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
323 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
324 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
325 d78cbf09 Panagiotis Kanavos
326 d78cbf09 Panagiotis Kanavos
      Assert.IsFalse(reader.Read());
327 d78cbf09 Panagiotis Kanavos
    }
328 d78cbf09 Panagiotis Kanavos
329 d78cbf09 Panagiotis Kanavos
    [Test]
330 d78cbf09 Panagiotis Kanavos
    public void ReadBytesFollowingNumberInObject()
331 d78cbf09 Panagiotis Kanavos
    {
332 d78cbf09 Panagiotis Kanavos
      string helloWorld = "Hello world!";
333 d78cbf09 Panagiotis Kanavos
      byte[] helloWorldData = Encoding.UTF8.GetBytes(helloWorld);
334 d78cbf09 Panagiotis Kanavos
335 d78cbf09 Panagiotis Kanavos
      JsonReader reader = new JsonTextReader(new StringReader(@"{num:1,data:'" + Convert.ToBase64String(helloWorldData) + @"'}"));
336 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
337 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
338 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
339 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
340 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
341 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
342 d78cbf09 Panagiotis Kanavos
      byte[] data = reader.ReadAsBytes();
343 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(helloWorldData, data);
344 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
345 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
346 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
347 d78cbf09 Panagiotis Kanavos
348 d78cbf09 Panagiotis Kanavos
      Assert.IsFalse(reader.Read());
349 d78cbf09 Panagiotis Kanavos
    }
350 d78cbf09 Panagiotis Kanavos
351 d78cbf09 Panagiotis Kanavos
    [Test]
352 d78cbf09 Panagiotis Kanavos
    public void ReadingEscapedStrings()
353 d78cbf09 Panagiotis Kanavos
    {
354 d78cbf09 Panagiotis Kanavos
      string input = "{value:'Purple\\r \\n monkey\\'s:\\tdishwasher'}";
355 d78cbf09 Panagiotis Kanavos
356 d78cbf09 Panagiotis Kanavos
      StringReader sr = new StringReader(input);
357 d78cbf09 Panagiotis Kanavos
358 d78cbf09 Panagiotis Kanavos
      using (JsonReader jsonReader = new JsonTextReader(sr))
359 d78cbf09 Panagiotis Kanavos
      {
360 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(0, jsonReader.Depth);
361 d78cbf09 Panagiotis Kanavos
362 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
363 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartObject);
364 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(0, jsonReader.Depth);
365 d78cbf09 Panagiotis Kanavos
366 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
367 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
368 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1, jsonReader.Depth);
369 d78cbf09 Panagiotis Kanavos
370 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
371 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
372 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.Value, "Purple\r \n monkey's:\tdishwasher");
373 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.QuoteChar, '\'');
374 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1, jsonReader.Depth);
375 d78cbf09 Panagiotis Kanavos
376 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
377 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndObject);
378 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(0, jsonReader.Depth);
379 d78cbf09 Panagiotis Kanavos
      }
380 d78cbf09 Panagiotis Kanavos
    }
381 d78cbf09 Panagiotis Kanavos
382 d78cbf09 Panagiotis Kanavos
    [Test]
383 d78cbf09 Panagiotis Kanavos
    public void ReadNewlineLastCharacter()
384 d78cbf09 Panagiotis Kanavos
    {
385 d78cbf09 Panagiotis Kanavos
      string input = @"{
386 d78cbf09 Panagiotis Kanavos
  CPU: 'Intel',
387 d78cbf09 Panagiotis Kanavos
  Drives: [ /* Com*ment */
388 d78cbf09 Panagiotis Kanavos
    'DVD read/writer',
389 d78cbf09 Panagiotis Kanavos
    ""500 gigabyte hard drive""
390 d78cbf09 Panagiotis Kanavos
  ]
391 d78cbf09 Panagiotis Kanavos
}" + '\n';
392 d78cbf09 Panagiotis Kanavos
393 d78cbf09 Panagiotis Kanavos
      object o = JsonConvert.DeserializeObject(input);
394 d78cbf09 Panagiotis Kanavos
    }
395 d78cbf09 Panagiotis Kanavos
396 d78cbf09 Panagiotis Kanavos
    [Test]
397 d78cbf09 Panagiotis Kanavos
    public void WriteReadWrite()
398 d78cbf09 Panagiotis Kanavos
    {
399 d78cbf09 Panagiotis Kanavos
      StringBuilder sb = new StringBuilder();
400 d78cbf09 Panagiotis Kanavos
      StringWriter sw = new StringWriter(sb);
401 d78cbf09 Panagiotis Kanavos
402 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
403 d78cbf09 Panagiotis Kanavos
      {
404 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
405 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(true);
406 d78cbf09 Panagiotis Kanavos
407 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartObject();
408 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("integer");
409 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(99);
410 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("string");
411 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("how now brown cow?");
412 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("array");
413 d78cbf09 Panagiotis Kanavos
414 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartArray();
415 d78cbf09 Panagiotis Kanavos
        for (int i = 0; i < 5; i++)
416 d78cbf09 Panagiotis Kanavos
        {
417 d78cbf09 Panagiotis Kanavos
          jsonWriter.WriteValue(i);
418 d78cbf09 Panagiotis Kanavos
        }
419 d78cbf09 Panagiotis Kanavos
420 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteStartObject();
421 d78cbf09 Panagiotis Kanavos
        jsonWriter.WritePropertyName("decimal");
422 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(990.00990099m);
423 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndObject();
424 d78cbf09 Panagiotis Kanavos
425 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue(5);
426 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
427 d78cbf09 Panagiotis Kanavos
428 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndObject();
429 d78cbf09 Panagiotis Kanavos
430 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteValue("This is a string.");
431 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteNull();
432 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteNull();
433 d78cbf09 Panagiotis Kanavos
        jsonWriter.WriteEndArray();
434 d78cbf09 Panagiotis Kanavos
      }
435 d78cbf09 Panagiotis Kanavos
436 d78cbf09 Panagiotis Kanavos
      string json = sb.ToString();
437 d78cbf09 Panagiotis Kanavos
438 d78cbf09 Panagiotis Kanavos
      JsonSerializer serializer = new JsonSerializer();
439 d78cbf09 Panagiotis Kanavos
440 d78cbf09 Panagiotis Kanavos
      object jsonObject = serializer.Deserialize(new JsonTextReader(new StringReader(json)));
441 d78cbf09 Panagiotis Kanavos
442 d78cbf09 Panagiotis Kanavos
      sb = new StringBuilder();
443 d78cbf09 Panagiotis Kanavos
      sw = new StringWriter(sb);
444 d78cbf09 Panagiotis Kanavos
445 d78cbf09 Panagiotis Kanavos
      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
446 d78cbf09 Panagiotis Kanavos
      {
447 d78cbf09 Panagiotis Kanavos
        serializer.Serialize(sw, jsonObject);
448 d78cbf09 Panagiotis Kanavos
      }
449 d78cbf09 Panagiotis Kanavos
450 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(json, sb.ToString());
451 d78cbf09 Panagiotis Kanavos
    }
452 d78cbf09 Panagiotis Kanavos
453 d78cbf09 Panagiotis Kanavos
    [Test]
454 d78cbf09 Panagiotis Kanavos
    public void FloatingPointNonFiniteNumbers()
455 d78cbf09 Panagiotis Kanavos
    {
456 d78cbf09 Panagiotis Kanavos
      string input = @"[
457 d78cbf09 Panagiotis Kanavos
  NaN,
458 d78cbf09 Panagiotis Kanavos
  Infinity,
459 d78cbf09 Panagiotis Kanavos
  -Infinity
460 d78cbf09 Panagiotis Kanavos
]";
461 d78cbf09 Panagiotis Kanavos
462 d78cbf09 Panagiotis Kanavos
      StringReader sr = new StringReader(input);
463 d78cbf09 Panagiotis Kanavos
464 d78cbf09 Panagiotis Kanavos
      using (JsonReader jsonReader = new JsonTextReader(sr))
465 d78cbf09 Panagiotis Kanavos
      {
466 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
467 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartArray);
468 d78cbf09 Panagiotis Kanavos
469 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
470 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.Float);
471 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.Value, double.NaN);
472 d78cbf09 Panagiotis Kanavos
473 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
474 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.Float);
475 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.Value, double.PositiveInfinity);
476 d78cbf09 Panagiotis Kanavos
477 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
478 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.Float);
479 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.Value, double.NegativeInfinity);
480 d78cbf09 Panagiotis Kanavos
481 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
482 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndArray);
483 d78cbf09 Panagiotis Kanavos
      }
484 d78cbf09 Panagiotis Kanavos
    }
485 d78cbf09 Panagiotis Kanavos
486 d78cbf09 Panagiotis Kanavos
    [Test]
487 d78cbf09 Panagiotis Kanavos
    public void LongStringTest()
488 d78cbf09 Panagiotis Kanavos
    {
489 d78cbf09 Panagiotis Kanavos
      int length = 20000;
490 d78cbf09 Panagiotis Kanavos
      string json = @"[""" + new string(' ', length) + @"""]";
491 d78cbf09 Panagiotis Kanavos
492 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StringReader(json));
493 d78cbf09 Panagiotis Kanavos
494 d78cbf09 Panagiotis Kanavos
      reader.Read();
495 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
496 d78cbf09 Panagiotis Kanavos
497 d78cbf09 Panagiotis Kanavos
      reader.Read();
498 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.String, reader.TokenType);
499 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(typeof(string), reader.ValueType);
500 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(20000, reader.Value.ToString().Length);
501 d78cbf09 Panagiotis Kanavos
502 d78cbf09 Panagiotis Kanavos
      reader.Read();
503 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
504 d78cbf09 Panagiotis Kanavos
505 d78cbf09 Panagiotis Kanavos
      reader.Read();
506 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
507 d78cbf09 Panagiotis Kanavos
    }
508 d78cbf09 Panagiotis Kanavos
509 d78cbf09 Panagiotis Kanavos
    [Test]
510 d78cbf09 Panagiotis Kanavos
    public void EscapedUnicodeText()
511 d78cbf09 Panagiotis Kanavos
    {
512 d78cbf09 Panagiotis Kanavos
      string json = @"[""\u003c"",""\u5f20""]";
513 d78cbf09 Panagiotis Kanavos
514 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StringReader(json));
515 d78cbf09 Panagiotis Kanavos
516 d78cbf09 Panagiotis Kanavos
      reader.Read();
517 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
518 d78cbf09 Panagiotis Kanavos
519 d78cbf09 Panagiotis Kanavos
      reader.Read();
520 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual("<", reader.Value);
521 d78cbf09 Panagiotis Kanavos
522 d78cbf09 Panagiotis Kanavos
      reader.Read();
523 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(24352, Convert.ToInt32(Convert.ToChar((string)reader.Value)));
524 d78cbf09 Panagiotis Kanavos
525 d78cbf09 Panagiotis Kanavos
      reader.Read();
526 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
527 d78cbf09 Panagiotis Kanavos
    }
528 d78cbf09 Panagiotis Kanavos
529 d78cbf09 Panagiotis Kanavos
    [Test]
530 d78cbf09 Panagiotis Kanavos
    public void ReadFloatingPointNumber()
531 d78cbf09 Panagiotis Kanavos
    {
532 d78cbf09 Panagiotis Kanavos
      string json =
533 d78cbf09 Panagiotis Kanavos
        @"[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]";
534 d78cbf09 Panagiotis Kanavos
535 d78cbf09 Panagiotis Kanavos
      using (JsonReader jsonReader = new JsonTextReader(new StringReader(json)))
536 d78cbf09 Panagiotis Kanavos
      {
537 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
538 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.StartArray, jsonReader.TokenType);
539 d78cbf09 Panagiotis Kanavos
540 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
541 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
542 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(0.0, jsonReader.Value);
543 d78cbf09 Panagiotis Kanavos
544 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
545 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
546 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(0.0, jsonReader.Value);
547 d78cbf09 Panagiotis Kanavos
548 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
549 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
550 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(0.1, jsonReader.Value);
551 d78cbf09 Panagiotis Kanavos
552 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
553 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
554 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1.0, jsonReader.Value);
555 d78cbf09 Panagiotis Kanavos
556 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
557 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
558 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1.000001, jsonReader.Value);
559 d78cbf09 Panagiotis Kanavos
560 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
561 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
562 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(1E-06, jsonReader.Value);
563 d78cbf09 Panagiotis Kanavos
564 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
565 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
566 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(4.94065645841247E-324, jsonReader.Value);
567 d78cbf09 Panagiotis Kanavos
568 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
569 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
570 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(double.PositiveInfinity, jsonReader.Value);
571 d78cbf09 Panagiotis Kanavos
572 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
573 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
574 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(double.NegativeInfinity, jsonReader.Value);
575 d78cbf09 Panagiotis Kanavos
576 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
577 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
578 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(double.NaN, jsonReader.Value);
579 d78cbf09 Panagiotis Kanavos
580 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
581 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
582 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(double.MaxValue, jsonReader.Value);
583 d78cbf09 Panagiotis Kanavos
584 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
585 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
586 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(double.MinValue, jsonReader.Value);
587 d78cbf09 Panagiotis Kanavos
588 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
589 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
590 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(double.PositiveInfinity, jsonReader.Value);
591 d78cbf09 Panagiotis Kanavos
592 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
593 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
594 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(double.NegativeInfinity, jsonReader.Value);
595 d78cbf09 Panagiotis Kanavos
596 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
597 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
598 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(double.NaN, jsonReader.Value);
599 d78cbf09 Panagiotis Kanavos
600 d78cbf09 Panagiotis Kanavos
        jsonReader.Read();
601 d78cbf09 Panagiotis Kanavos
        Assert.AreEqual(JsonToken.EndArray, jsonReader.TokenType);
602 d78cbf09 Panagiotis Kanavos
      }
603 d78cbf09 Panagiotis Kanavos
    }
604 d78cbf09 Panagiotis Kanavos
605 d78cbf09 Panagiotis Kanavos
    [Test]
606 d78cbf09 Panagiotis Kanavos
    [ExpectedException(typeof(JsonReaderException), ExpectedMessage = @"Invalid character after parsing property name. Expected ':' but got: "". Line 3, position 9.")]
607 d78cbf09 Panagiotis Kanavos
    public void MissingColon()
608 d78cbf09 Panagiotis Kanavos
    {
609 d78cbf09 Panagiotis Kanavos
      string json = @"{
610 d78cbf09 Panagiotis Kanavos
    ""A"" : true,
611 d78cbf09 Panagiotis Kanavos
    ""B"" ""hello"", // Notice the colon is missing
612 d78cbf09 Panagiotis Kanavos
    ""C"" : ""bye""
613 d78cbf09 Panagiotis Kanavos
}";
614 d78cbf09 Panagiotis Kanavos
615 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StringReader(json));
616 d78cbf09 Panagiotis Kanavos
617 d78cbf09 Panagiotis Kanavos
      reader.Read();
618 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
619 d78cbf09 Panagiotis Kanavos
620 d78cbf09 Panagiotis Kanavos
      reader.Read();
621 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
622 d78cbf09 Panagiotis Kanavos
623 d78cbf09 Panagiotis Kanavos
      reader.Read();
624 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
625 d78cbf09 Panagiotis Kanavos
626 d78cbf09 Panagiotis Kanavos
      reader.Read();
627 d78cbf09 Panagiotis Kanavos
    }
628 d78cbf09 Panagiotis Kanavos
629 d78cbf09 Panagiotis Kanavos
    [Test]
630 d78cbf09 Panagiotis Kanavos
    public void ReadSingleBytes()
631 d78cbf09 Panagiotis Kanavos
    {
632 d78cbf09 Panagiotis Kanavos
      StringReader s = new StringReader(@"""SGVsbG8gd29ybGQu""");
633 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(s);
634 d78cbf09 Panagiotis Kanavos
635 d78cbf09 Panagiotis Kanavos
      byte[] data = reader.ReadAsBytes();
636 d78cbf09 Panagiotis Kanavos
      Assert.IsNotNull(data);
637 d78cbf09 Panagiotis Kanavos
638 d78cbf09 Panagiotis Kanavos
      string text = Encoding.UTF8.GetString(data, 0, data.Length);
639 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual("Hello world.", text);
640 d78cbf09 Panagiotis Kanavos
    }
641 d78cbf09 Panagiotis Kanavos
642 d78cbf09 Panagiotis Kanavos
    [Test]
643 d78cbf09 Panagiotis Kanavos
    public void ReadOctalNumber()
644 d78cbf09 Panagiotis Kanavos
    {
645 d78cbf09 Panagiotis Kanavos
      StringReader s = new StringReader(@"[0372, 0xFA, 0XFA]");
646 d78cbf09 Panagiotis Kanavos
      JsonTextReader jsonReader = new JsonTextReader(s);
647 d78cbf09 Panagiotis Kanavos
648 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(jsonReader.Read());
649 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartArray, jsonReader.TokenType);
650 d78cbf09 Panagiotis Kanavos
651 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(jsonReader.Read());
652 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
653 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(250, jsonReader.Value);
654 d78cbf09 Panagiotis Kanavos
655 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(jsonReader.Read());
656 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
657 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(250, jsonReader.Value);
658 d78cbf09 Panagiotis Kanavos
659 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(jsonReader.Read());
660 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
661 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(250, jsonReader.Value);
662 d78cbf09 Panagiotis Kanavos
663 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(jsonReader.Read());
664 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndArray, jsonReader.TokenType);
665 d78cbf09 Panagiotis Kanavos
666 d78cbf09 Panagiotis Kanavos
      Assert.IsFalse(jsonReader.Read());
667 d78cbf09 Panagiotis Kanavos
    }
668 d78cbf09 Panagiotis Kanavos
669 d78cbf09 Panagiotis Kanavos
    [Test]
670 d78cbf09 Panagiotis Kanavos
    public void ReadUnicode()
671 d78cbf09 Panagiotis Kanavos
    {
672 d78cbf09 Panagiotis Kanavos
      string json = @"{""Message"":""Hi,I\u0092ve send you smth""}";
673 d78cbf09 Panagiotis Kanavos
674 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StringReader(json));
675 d78cbf09 Panagiotis Kanavos
676 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
677 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
678 d78cbf09 Panagiotis Kanavos
679 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
680 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
681 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual("Message", reader.Value);
682 d78cbf09 Panagiotis Kanavos
683 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
684 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.String, reader.TokenType);
685 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(@"Hi,I" + '\u0092' + "ve send you smth", reader.Value);
686 d78cbf09 Panagiotis Kanavos
687 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
688 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
689 d78cbf09 Panagiotis Kanavos
690 d78cbf09 Panagiotis Kanavos
      Assert.IsFalse(reader.Read());
691 d78cbf09 Panagiotis Kanavos
    }
692 d78cbf09 Panagiotis Kanavos
693 d78cbf09 Panagiotis Kanavos
    [Test]
694 d78cbf09 Panagiotis Kanavos
    public void ReadHexidecimalWithAllLetters()
695 d78cbf09 Panagiotis Kanavos
    {
696 d78cbf09 Panagiotis Kanavos
      string json = @"{""text"":0xabcdef12345}";
697 d78cbf09 Panagiotis Kanavos
698 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StringReader(json));
699 d78cbf09 Panagiotis Kanavos
700 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
701 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
702 d78cbf09 Panagiotis Kanavos
703 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
704 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
705 d78cbf09 Panagiotis Kanavos
706 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
707 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
708 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(11806310474565, reader.Value);
709 d78cbf09 Panagiotis Kanavos
710 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
711 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
712 d78cbf09 Panagiotis Kanavos
    }
713 d78cbf09 Panagiotis Kanavos
714 d78cbf09 Panagiotis Kanavos
#if !NET20
715 d78cbf09 Panagiotis Kanavos
    [Test]
716 d78cbf09 Panagiotis Kanavos
    public void ReadAsDateTimeOffset()
717 d78cbf09 Panagiotis Kanavos
    {
718 d78cbf09 Panagiotis Kanavos
      string json = "{\"Offset\":\"\\/Date(946663200000+0600)\\/\"}";
719 d78cbf09 Panagiotis Kanavos
720 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StringReader(json));
721 d78cbf09 Panagiotis Kanavos
722 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
723 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
724 d78cbf09 Panagiotis Kanavos
725 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
726 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
727 d78cbf09 Panagiotis Kanavos
728 d78cbf09 Panagiotis Kanavos
      reader.ReadAsDateTimeOffset();
729 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Date, reader.TokenType);
730 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
731 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6)), reader.Value);
732 d78cbf09 Panagiotis Kanavos
733 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
734 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
735 d78cbf09 Panagiotis Kanavos
    }
736 d78cbf09 Panagiotis Kanavos
737 d78cbf09 Panagiotis Kanavos
    [Test]
738 d78cbf09 Panagiotis Kanavos
    public void ReadAsDateTimeOffsetNegative()
739 d78cbf09 Panagiotis Kanavos
    {
740 d78cbf09 Panagiotis Kanavos
      string json = @"{""Offset"":""\/Date(946706400000-0600)\/""}";
741 d78cbf09 Panagiotis Kanavos
742 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StringReader(json));
743 d78cbf09 Panagiotis Kanavos
744 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
745 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
746 d78cbf09 Panagiotis Kanavos
747 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
748 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
749 d78cbf09 Panagiotis Kanavos
750 d78cbf09 Panagiotis Kanavos
      reader.ReadAsDateTimeOffset();
751 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Date, reader.TokenType);
752 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
753 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(-6)), reader.Value);
754 d78cbf09 Panagiotis Kanavos
755 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
756 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
757 d78cbf09 Panagiotis Kanavos
    }
758 d78cbf09 Panagiotis Kanavos
759 d78cbf09 Panagiotis Kanavos
    [Test]
760 d78cbf09 Panagiotis Kanavos
    public void ReadAsDateTimeOffsetHoursOnly()
761 d78cbf09 Panagiotis Kanavos
    {
762 d78cbf09 Panagiotis Kanavos
      string json = "{\"Offset\":\"\\/Date(946663200000+06)\\/\"}";
763 d78cbf09 Panagiotis Kanavos
764 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StringReader(json));
765 d78cbf09 Panagiotis Kanavos
766 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
767 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
768 d78cbf09 Panagiotis Kanavos
769 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
770 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
771 d78cbf09 Panagiotis Kanavos
772 d78cbf09 Panagiotis Kanavos
      reader.ReadAsDateTimeOffset();
773 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Date, reader.TokenType);
774 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
775 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6)), reader.Value);
776 d78cbf09 Panagiotis Kanavos
777 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
778 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
779 d78cbf09 Panagiotis Kanavos
    }
780 d78cbf09 Panagiotis Kanavos
781 d78cbf09 Panagiotis Kanavos
    [Test]
782 d78cbf09 Panagiotis Kanavos
    public void ReadAsDateTimeOffsetWithMinutes()
783 d78cbf09 Panagiotis Kanavos
    {
784 d78cbf09 Panagiotis Kanavos
      string json = @"{""Offset"":""\/Date(946708260000-0631)\/""}";
785 d78cbf09 Panagiotis Kanavos
786 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StringReader(json));
787 d78cbf09 Panagiotis Kanavos
788 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
789 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
790 d78cbf09 Panagiotis Kanavos
791 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
792 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
793 d78cbf09 Panagiotis Kanavos
794 d78cbf09 Panagiotis Kanavos
      reader.ReadAsDateTimeOffset();
795 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Date, reader.TokenType);
796 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
797 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(-6).Add(TimeSpan.FromMinutes(-31))), reader.Value);
798 d78cbf09 Panagiotis Kanavos
799 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
800 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
801 d78cbf09 Panagiotis Kanavos
    }
802 d78cbf09 Panagiotis Kanavos
#endif
803 d78cbf09 Panagiotis Kanavos
804 d78cbf09 Panagiotis Kanavos
    [Test]
805 d78cbf09 Panagiotis Kanavos
    public void ReadAsDecimal()
806 d78cbf09 Panagiotis Kanavos
    {
807 d78cbf09 Panagiotis Kanavos
      string json = @"{""decimal"":-7.92281625142643E+28}";
808 d78cbf09 Panagiotis Kanavos
809 d78cbf09 Panagiotis Kanavos
      JsonTextReader reader = new JsonTextReader(new StringReader(json));
810 d78cbf09 Panagiotis Kanavos
811 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
812 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
813 d78cbf09 Panagiotis Kanavos
814 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
815 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
816 d78cbf09 Panagiotis Kanavos
817 d78cbf09 Panagiotis Kanavos
      decimal? d = reader.ReadAsDecimal();
818 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.Float, reader.TokenType);
819 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(typeof(decimal), reader.ValueType);
820 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(-79228162514264300000000000000m, d);
821 d78cbf09 Panagiotis Kanavos
822 d78cbf09 Panagiotis Kanavos
      Assert.IsTrue(reader.Read());
823 d78cbf09 Panagiotis Kanavos
      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
824 d78cbf09 Panagiotis Kanavos
    }
825 d78cbf09 Panagiotis Kanavos
  }
826 d78cbf09 Panagiotis Kanavos
}