Statistics
| Branch: | Revision:

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
}