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 | } |