root / trunk / Libraries / Json40r2 / Source / Src / Newtonsoft.Json.Tests / JsonConvertTest.cs @ 0eea575a
History | View | Annotate | Download (12.7 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 Newtonsoft.Json.Utilities; |
28 | d78cbf09 | Panagiotis Kanavos | using NUnit.Framework; |
29 | d78cbf09 | Panagiotis Kanavos | |
30 | d78cbf09 | Panagiotis Kanavos | namespace Newtonsoft.Json.Tests |
31 | d78cbf09 | Panagiotis Kanavos | { |
32 | d78cbf09 | Panagiotis Kanavos | public class JsonConvertTest : TestFixtureBase |
33 | d78cbf09 | Panagiotis Kanavos | { |
34 | d78cbf09 | Panagiotis Kanavos | #if Entities |
35 | d78cbf09 | Panagiotis Kanavos | [Test] |
36 | d78cbf09 | Panagiotis Kanavos | public void EntitiesTest() |
37 | d78cbf09 | Panagiotis Kanavos | { |
38 | d78cbf09 | Panagiotis Kanavos | Purchase purchase = new Purchase() { Id = 1 }; |
39 | d78cbf09 | Panagiotis Kanavos | purchase.PurchaseLine.Add(new PurchaseLine() { Id = 1, Purchase = purchase }); |
40 | d78cbf09 | Panagiotis Kanavos | purchase.PurchaseLine.Add(new PurchaseLine() { Id = 2, Purchase = purchase }); |
41 | d78cbf09 | Panagiotis Kanavos | |
42 | d78cbf09 | Panagiotis Kanavos | StringWriter sw = new StringWriter(); |
43 | d78cbf09 | Panagiotis Kanavos | JsonSerializer serializer = new JsonSerializer(); |
44 | d78cbf09 | Panagiotis Kanavos | serializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; |
45 | d78cbf09 | Panagiotis Kanavos | |
46 | d78cbf09 | Panagiotis Kanavos | using (JsonWriter jw = new JsonTextWriter(sw)) |
47 | d78cbf09 | Panagiotis Kanavos | { |
48 | d78cbf09 | Panagiotis Kanavos | jw.Formatting = Formatting.Indented; |
49 | d78cbf09 | Panagiotis Kanavos | |
50 | d78cbf09 | Panagiotis Kanavos | serializer.Serialize(jw, purchase); |
51 | d78cbf09 | Panagiotis Kanavos | } |
52 | d78cbf09 | Panagiotis Kanavos | |
53 | d78cbf09 | Panagiotis Kanavos | string json = sw.ToString(); |
54 | d78cbf09 | Panagiotis Kanavos | |
55 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"{ |
56 | d78cbf09 | Panagiotis Kanavos | ""Id"": 1, |
57 | d78cbf09 | Panagiotis Kanavos | ""PurchaseLine"": [ |
58 | d78cbf09 | Panagiotis Kanavos | { |
59 | d78cbf09 | Panagiotis Kanavos | ""Id"": 1, |
60 | d78cbf09 | Panagiotis Kanavos | ""PurchaseReference"": { |
61 | d78cbf09 | Panagiotis Kanavos | ""EntityKey"": null, |
62 | d78cbf09 | Panagiotis Kanavos | ""RelationshipName"": ""EntityDataModel.PurchasePurchaseLine"", |
63 | d78cbf09 | Panagiotis Kanavos | ""SourceRoleName"": ""PurchaseLine"", |
64 | d78cbf09 | Panagiotis Kanavos | ""TargetRoleName"": ""Purchase"", |
65 | d78cbf09 | Panagiotis Kanavos | ""RelationshipSet"": null, |
66 | d78cbf09 | Panagiotis Kanavos | ""IsLoaded"": false |
67 | d78cbf09 | Panagiotis Kanavos | }, |
68 | d78cbf09 | Panagiotis Kanavos | ""EntityState"": 1, |
69 | d78cbf09 | Panagiotis Kanavos | ""EntityKey"": null |
70 | d78cbf09 | Panagiotis Kanavos | }, |
71 | d78cbf09 | Panagiotis Kanavos | { |
72 | d78cbf09 | Panagiotis Kanavos | ""Id"": 2, |
73 | d78cbf09 | Panagiotis Kanavos | ""PurchaseReference"": { |
74 | d78cbf09 | Panagiotis Kanavos | ""EntityKey"": null, |
75 | d78cbf09 | Panagiotis Kanavos | ""RelationshipName"": ""EntityDataModel.PurchasePurchaseLine"", |
76 | d78cbf09 | Panagiotis Kanavos | ""SourceRoleName"": ""PurchaseLine"", |
77 | d78cbf09 | Panagiotis Kanavos | ""TargetRoleName"": ""Purchase"", |
78 | d78cbf09 | Panagiotis Kanavos | ""RelationshipSet"": null, |
79 | d78cbf09 | Panagiotis Kanavos | ""IsLoaded"": false |
80 | d78cbf09 | Panagiotis Kanavos | }, |
81 | d78cbf09 | Panagiotis Kanavos | ""EntityState"": 1, |
82 | d78cbf09 | Panagiotis Kanavos | ""EntityKey"": null |
83 | d78cbf09 | Panagiotis Kanavos | } |
84 | d78cbf09 | Panagiotis Kanavos | ], |
85 | d78cbf09 | Panagiotis Kanavos | ""EntityState"": 1, |
86 | d78cbf09 | Panagiotis Kanavos | ""EntityKey"": null |
87 | d78cbf09 | Panagiotis Kanavos | }", json); |
88 | d78cbf09 | Panagiotis Kanavos | |
89 | d78cbf09 | Panagiotis Kanavos | Purchase newPurchase = JsonConvert.DeserializeObject<Purchase>(json); |
90 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(1, newPurchase.Id); |
91 | d78cbf09 | Panagiotis Kanavos | |
92 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(2, newPurchase.PurchaseLine.Count); |
93 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(1, newPurchase.PurchaseLine.ElementAt(0).Id); |
94 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(2, newPurchase.PurchaseLine.ElementAt(1).Id); |
95 | d78cbf09 | Panagiotis Kanavos | } |
96 | d78cbf09 | Panagiotis Kanavos | #endif |
97 | d78cbf09 | Panagiotis Kanavos | |
98 | d78cbf09 | Panagiotis Kanavos | [Test] |
99 | d78cbf09 | Panagiotis Kanavos | public void EscapeJavaScriptString() |
100 | d78cbf09 | Panagiotis Kanavos | { |
101 | d78cbf09 | Panagiotis Kanavos | string result; |
102 | d78cbf09 | Panagiotis Kanavos | |
103 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString("How now brown cow?", '"', true); |
104 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""How now brown cow?""", result); |
105 | d78cbf09 | Panagiotis Kanavos | |
106 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString("How now 'brown' cow?", '"', true); |
107 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""How now 'brown' cow?""", result); |
108 | d78cbf09 | Panagiotis Kanavos | |
109 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString("How now <brown> cow?", '"', true); |
110 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""How now <brown> cow?""", result); |
111 | d78cbf09 | Panagiotis Kanavos | |
112 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString(@"How |
113 | d78cbf09 | Panagiotis Kanavos | now brown cow?", '"', true); |
114 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""How \r\nnow brown cow?""", result); |
115 | d78cbf09 | Panagiotis Kanavos | |
116 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString("\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007", '"', true); |
117 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007""", result); |
118 | d78cbf09 | Panagiotis Kanavos | |
119 | d78cbf09 | Panagiotis Kanavos | result = |
120 | d78cbf09 | Panagiotis Kanavos | JavaScriptUtils.ToEscapedJavaScriptString("\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013", '"', true); |
121 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013""", result); |
122 | d78cbf09 | Panagiotis Kanavos | |
123 | d78cbf09 | Panagiotis Kanavos | result = |
124 | d78cbf09 | Panagiotis Kanavos | JavaScriptUtils.ToEscapedJavaScriptString( |
125 | d78cbf09 | Panagiotis Kanavos | "\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f ", '"', true); |
126 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f """, result); |
127 | d78cbf09 | Panagiotis Kanavos | |
128 | d78cbf09 | Panagiotis Kanavos | result = |
129 | d78cbf09 | Panagiotis Kanavos | JavaScriptUtils.ToEscapedJavaScriptString( |
130 | d78cbf09 | Panagiotis Kanavos | "!\"#$%&\u0027()*+,-./0123456789:;\u003c=\u003e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]", '"', true); |
131 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""!\""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]""", result); |
132 | d78cbf09 | Panagiotis Kanavos | |
133 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString("^_`abcdefghijklmnopqrstuvwxyz{|}~", '"', true); |
134 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""^_`abcdefghijklmnopqrstuvwxyz{|}~""", result); |
135 | d78cbf09 | Panagiotis Kanavos | |
136 | d78cbf09 | Panagiotis Kanavos | string data = |
137 | d78cbf09 | Panagiotis Kanavos | "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&\u0027()*+,-./0123456789:;\u003c=\u003e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; |
138 | d78cbf09 | Panagiotis Kanavos | string expected = |
139 | d78cbf09 | Panagiotis Kanavos | @"""\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"""; |
140 | d78cbf09 | Panagiotis Kanavos | |
141 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString(data, '"', true); |
142 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(expected, result); |
143 | d78cbf09 | Panagiotis Kanavos | |
144 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString("Fred's cat.", '\'', true); |
145 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(result, @"'Fred\'s cat.'"); |
146 | d78cbf09 | Panagiotis Kanavos | |
147 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString(@"""How are you gentlemen?"" said Cats.", '"', true); |
148 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(result, @"""\""How are you gentlemen?\"" said Cats."""); |
149 | d78cbf09 | Panagiotis Kanavos | |
150 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString(@"""How are' you gentlemen?"" said Cats.", '"', true); |
151 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(result, @"""\""How are' you gentlemen?\"" said Cats."""); |
152 | d78cbf09 | Panagiotis Kanavos | |
153 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString(@"Fred's ""cat"".", '\'', true); |
154 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(result, @"'Fred\'s ""cat"".'"); |
155 | d78cbf09 | Panagiotis Kanavos | |
156 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString("\u001farray\u003caddress"); |
157 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(result, @"""\u001farray<address"""); |
158 | d78cbf09 | Panagiotis Kanavos | } |
159 | d78cbf09 | Panagiotis Kanavos | |
160 | d78cbf09 | Panagiotis Kanavos | [Test] |
161 | d78cbf09 | Panagiotis Kanavos | public void EscapeJavaScriptString_UnicodeLinefeeds() |
162 | d78cbf09 | Panagiotis Kanavos | { |
163 | d78cbf09 | Panagiotis Kanavos | string result; |
164 | d78cbf09 | Panagiotis Kanavos | |
165 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString("before" + '\u0085' + "after", '"', true); |
166 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""before\u0085after""", result); |
167 | d78cbf09 | Panagiotis Kanavos | |
168 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString("before" + '\u2028' + "after", '"', true); |
169 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""before\u2028after""", result); |
170 | d78cbf09 | Panagiotis Kanavos | |
171 | d78cbf09 | Panagiotis Kanavos | result = JavaScriptUtils.ToEscapedJavaScriptString("before" + '\u2029' + "after", '"', true); |
172 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""before\u2029after""", result); |
173 | d78cbf09 | Panagiotis Kanavos | } |
174 | d78cbf09 | Panagiotis Kanavos | |
175 | d78cbf09 | Panagiotis Kanavos | [Test] |
176 | d78cbf09 | Panagiotis Kanavos | [ExpectedException(typeof(ArgumentException), ExpectedMessage = "Unsupported type: System.Version. Use the JsonSerializer class to get the object's JSON representation.")] |
177 | d78cbf09 | Panagiotis Kanavos | public void ToStringInvalid() |
178 | d78cbf09 | Panagiotis Kanavos | { |
179 | d78cbf09 | Panagiotis Kanavos | JsonConvert.ToString(new Version(1, 0)); |
180 | d78cbf09 | Panagiotis Kanavos | } |
181 | d78cbf09 | Panagiotis Kanavos | |
182 | d78cbf09 | Panagiotis Kanavos | [Test] |
183 | d78cbf09 | Panagiotis Kanavos | public void GuidToString() |
184 | d78cbf09 | Panagiotis Kanavos | { |
185 | d78cbf09 | Panagiotis Kanavos | Guid guid = new Guid("BED7F4EA-1A96-11d2-8F08-00A0C9A6186D"); |
186 | d78cbf09 | Panagiotis Kanavos | string json = JsonConvert.ToString(guid); |
187 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""bed7f4ea-1a96-11d2-8f08-00a0c9a6186d""", json); |
188 | d78cbf09 | Panagiotis Kanavos | } |
189 | d78cbf09 | Panagiotis Kanavos | |
190 | d78cbf09 | Panagiotis Kanavos | [Test] |
191 | d78cbf09 | Panagiotis Kanavos | public void EnumToString() |
192 | d78cbf09 | Panagiotis Kanavos | { |
193 | d78cbf09 | Panagiotis Kanavos | string json = JsonConvert.ToString(StringComparison.CurrentCultureIgnoreCase); |
194 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1", json); |
195 | d78cbf09 | Panagiotis Kanavos | } |
196 | d78cbf09 | Panagiotis Kanavos | |
197 | d78cbf09 | Panagiotis Kanavos | [Test] |
198 | d78cbf09 | Panagiotis Kanavos | public void ObjectToString() |
199 | d78cbf09 | Panagiotis Kanavos | { |
200 | d78cbf09 | Panagiotis Kanavos | object value; |
201 | d78cbf09 | Panagiotis Kanavos | |
202 | d78cbf09 | Panagiotis Kanavos | value = 1; |
203 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1", JsonConvert.ToString(value)); |
204 | d78cbf09 | Panagiotis Kanavos | |
205 | d78cbf09 | Panagiotis Kanavos | value = 1.1; |
206 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.1", JsonConvert.ToString(value)); |
207 | d78cbf09 | Panagiotis Kanavos | |
208 | d78cbf09 | Panagiotis Kanavos | value = 1.1m; |
209 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.1", JsonConvert.ToString(value)); |
210 | d78cbf09 | Panagiotis Kanavos | |
211 | d78cbf09 | Panagiotis Kanavos | value = (float)1.1; |
212 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.1", JsonConvert.ToString(value)); |
213 | d78cbf09 | Panagiotis Kanavos | |
214 | d78cbf09 | Panagiotis Kanavos | value = (short)1; |
215 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1", JsonConvert.ToString(value)); |
216 | d78cbf09 | Panagiotis Kanavos | |
217 | d78cbf09 | Panagiotis Kanavos | value = (long)1; |
218 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1", JsonConvert.ToString(value)); |
219 | d78cbf09 | Panagiotis Kanavos | |
220 | d78cbf09 | Panagiotis Kanavos | value = (byte)1; |
221 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1", JsonConvert.ToString(value)); |
222 | d78cbf09 | Panagiotis Kanavos | |
223 | d78cbf09 | Panagiotis Kanavos | value = (uint)1; |
224 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1", JsonConvert.ToString(value)); |
225 | d78cbf09 | Panagiotis Kanavos | |
226 | d78cbf09 | Panagiotis Kanavos | value = (ushort)1; |
227 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1", JsonConvert.ToString(value)); |
228 | d78cbf09 | Panagiotis Kanavos | |
229 | d78cbf09 | Panagiotis Kanavos | value = (sbyte)1; |
230 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1", JsonConvert.ToString(value)); |
231 | d78cbf09 | Panagiotis Kanavos | |
232 | d78cbf09 | Panagiotis Kanavos | value = (ulong)1; |
233 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1", JsonConvert.ToString(value)); |
234 | d78cbf09 | Panagiotis Kanavos | |
235 | d78cbf09 | Panagiotis Kanavos | value = new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc); |
236 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""\/Date(0)\/""", JsonConvert.ToString(value)); |
237 | d78cbf09 | Panagiotis Kanavos | |
238 | d78cbf09 | Panagiotis Kanavos | #if !PocketPC && !NET20 |
239 | d78cbf09 | Panagiotis Kanavos | value = new DateTimeOffset(JsonConvert.InitialJavaScriptDateTicks, TimeSpan.Zero); |
240 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""\/Date(0+0000)\/""", JsonConvert.ToString(value)); |
241 | d78cbf09 | Panagiotis Kanavos | #endif |
242 | d78cbf09 | Panagiotis Kanavos | |
243 | d78cbf09 | Panagiotis Kanavos | value = null; |
244 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("null", JsonConvert.ToString(value)); |
245 | d78cbf09 | Panagiotis Kanavos | |
246 | d78cbf09 | Panagiotis Kanavos | value = DBNull.Value; |
247 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("null", JsonConvert.ToString(value)); |
248 | d78cbf09 | Panagiotis Kanavos | |
249 | d78cbf09 | Panagiotis Kanavos | value = "I am a string"; |
250 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""I am a string""", JsonConvert.ToString(value)); |
251 | d78cbf09 | Panagiotis Kanavos | |
252 | d78cbf09 | Panagiotis Kanavos | value = true; |
253 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("true", JsonConvert.ToString(value)); |
254 | d78cbf09 | Panagiotis Kanavos | |
255 | d78cbf09 | Panagiotis Kanavos | value = 'c'; |
256 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""c""", JsonConvert.ToString(value)); |
257 | d78cbf09 | Panagiotis Kanavos | } |
258 | d78cbf09 | Panagiotis Kanavos | |
259 | d78cbf09 | Panagiotis Kanavos | [Test] |
260 | d78cbf09 | Panagiotis Kanavos | [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "After parsing a value an unexpected character was encountered: t. Line 1, position 20.")] |
261 | d78cbf09 | Panagiotis Kanavos | public void TestInvalidStrings() |
262 | d78cbf09 | Panagiotis Kanavos | { |
263 | d78cbf09 | Panagiotis Kanavos | string orig = @"this is a string ""that has quotes"" "; |
264 | d78cbf09 | Panagiotis Kanavos | |
265 | d78cbf09 | Panagiotis Kanavos | string serialized = JsonConvert.SerializeObject(orig); |
266 | d78cbf09 | Panagiotis Kanavos | |
267 | d78cbf09 | Panagiotis Kanavos | // *** Make string invalid by stripping \" \" |
268 | d78cbf09 | Panagiotis Kanavos | serialized = serialized.Replace(@"\""", "\""); |
269 | d78cbf09 | Panagiotis Kanavos | |
270 | d78cbf09 | Panagiotis Kanavos | JsonConvert.DeserializeObject<string>(serialized); |
271 | d78cbf09 | Panagiotis Kanavos | } |
272 | d78cbf09 | Panagiotis Kanavos | |
273 | d78cbf09 | Panagiotis Kanavos | [Test] |
274 | d78cbf09 | Panagiotis Kanavos | public void DeserializeValueObjects() |
275 | d78cbf09 | Panagiotis Kanavos | { |
276 | d78cbf09 | Panagiotis Kanavos | int i = JsonConvert.DeserializeObject<int>("1"); |
277 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(1, i); |
278 | d78cbf09 | Panagiotis Kanavos | |
279 | d78cbf09 | Panagiotis Kanavos | #if !PocketPC && !NET20 |
280 | d78cbf09 | Panagiotis Kanavos | DateTimeOffset d = JsonConvert.DeserializeObject<DateTimeOffset>(@"""\/Date(-59011455539000+0000)\/"""); |
281 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(new DateTimeOffset(new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc)), d); |
282 | d78cbf09 | Panagiotis Kanavos | #endif |
283 | d78cbf09 | Panagiotis Kanavos | |
284 | d78cbf09 | Panagiotis Kanavos | bool b = JsonConvert.DeserializeObject<bool>("true"); |
285 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(true, b); |
286 | d78cbf09 | Panagiotis Kanavos | |
287 | d78cbf09 | Panagiotis Kanavos | object n = JsonConvert.DeserializeObject<object>("null"); |
288 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(null, n); |
289 | d78cbf09 | Panagiotis Kanavos | |
290 | d78cbf09 | Panagiotis Kanavos | object u = JsonConvert.DeserializeObject<object>("undefined"); |
291 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(null, u); |
292 | d78cbf09 | Panagiotis Kanavos | } |
293 | d78cbf09 | Panagiotis Kanavos | |
294 | d78cbf09 | Panagiotis Kanavos | [Test] |
295 | d78cbf09 | Panagiotis Kanavos | public void FloatToString() |
296 | d78cbf09 | Panagiotis Kanavos | { |
297 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.1", JsonConvert.ToString(1.1)); |
298 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.11", JsonConvert.ToString(1.11)); |
299 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.111", JsonConvert.ToString(1.111)); |
300 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.1111", JsonConvert.ToString(1.1111)); |
301 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.11111", JsonConvert.ToString(1.11111)); |
302 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.111111", JsonConvert.ToString(1.111111)); |
303 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.0", JsonConvert.ToString(1.0)); |
304 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.0", JsonConvert.ToString(1d)); |
305 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("-1.0", JsonConvert.ToString(-1d)); |
306 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.01", JsonConvert.ToString(1.01)); |
307 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.001", JsonConvert.ToString(1.001)); |
308 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(JsonConvert.PositiveInfinity, JsonConvert.ToString(double.PositiveInfinity)); |
309 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(JsonConvert.NegativeInfinity, JsonConvert.ToString(double.NegativeInfinity)); |
310 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(JsonConvert.NaN, JsonConvert.ToString(double.NaN)); |
311 | d78cbf09 | Panagiotis Kanavos | } |
312 | d78cbf09 | Panagiotis Kanavos | |
313 | d78cbf09 | Panagiotis Kanavos | [Test] |
314 | d78cbf09 | Panagiotis Kanavos | public void DecimalToString() |
315 | d78cbf09 | Panagiotis Kanavos | { |
316 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.1", JsonConvert.ToString(1.1m)); |
317 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.11", JsonConvert.ToString(1.11m)); |
318 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.111", JsonConvert.ToString(1.111m)); |
319 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.1111", JsonConvert.ToString(1.1111m)); |
320 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.11111", JsonConvert.ToString(1.11111m)); |
321 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.111111", JsonConvert.ToString(1.111111m)); |
322 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.0", JsonConvert.ToString(1.0m)); |
323 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("-1.0", JsonConvert.ToString(-1.0m)); |
324 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("-1.0", JsonConvert.ToString(-1m)); |
325 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.0", JsonConvert.ToString(1m)); |
326 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.01", JsonConvert.ToString(1.01m)); |
327 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("1.001", JsonConvert.ToString(1.001m)); |
328 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("79228162514264337593543950335.0", JsonConvert.ToString(decimal.MaxValue)); |
329 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual("-79228162514264337593543950335.0", JsonConvert.ToString(decimal.MinValue)); |
330 | d78cbf09 | Panagiotis Kanavos | } |
331 | d78cbf09 | Panagiotis Kanavos | |
332 | d78cbf09 | Panagiotis Kanavos | [Test] |
333 | d78cbf09 | Panagiotis Kanavos | public void StringEscaping() |
334 | d78cbf09 | Panagiotis Kanavos | { |
335 | d78cbf09 | Panagiotis Kanavos | string v = @"It's a good day |
336 | d78cbf09 | Panagiotis Kanavos | ""sunshine"""; |
337 | d78cbf09 | Panagiotis Kanavos | |
338 | d78cbf09 | Panagiotis Kanavos | string json = JsonConvert.ToString(v); |
339 | d78cbf09 | Panagiotis Kanavos | Assert.AreEqual(@"""It's a good day\r\n\""sunshine\""""", json); |
340 | d78cbf09 | Panagiotis Kanavos | } |
341 | d78cbf09 | Panagiotis Kanavos | } |
342 | d78cbf09 | Panagiotis Kanavos | } |