~ubuntu-branches/ubuntu/trusty/monodevelop/trusty-proposed

« back to all changes in this revision

Viewing changes to external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/PopulateTests.cs

  • Committer: Package Import Robot
  • Author(s): Jo Shields
  • Date: 2013-05-12 09:46:03 UTC
  • mto: This revision was merged to the branch mainline in revision 29.
  • Revision ID: package-import@ubuntu.com-20130512094603-mad323bzcxvmcam0
Tags: upstream-4.0.5+dfsg
Import upstream version 4.0.5+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#region License
 
2
// Copyright (c) 2007 James Newton-King
 
3
//
 
4
// Permission is hereby granted, free of charge, to any person
 
5
// obtaining a copy of this software and associated documentation
 
6
// files (the "Software"), to deal in the Software without
 
7
// restriction, including without limitation the rights to use,
 
8
// copy, modify, merge, publish, distribute, sublicense, and/or sell
 
9
// copies of the Software, and to permit persons to whom the
 
10
// Software is furnished to do so, subject to the following
 
11
// conditions:
 
12
//
 
13
// The above copyright notice and this permission notice shall be
 
14
// included in all copies or substantial portions of the Software.
 
15
//
 
16
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 
17
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 
18
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 
19
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 
20
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 
21
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
22
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 
23
// OTHER DEALINGS IN THE SOFTWARE.
 
24
#endregion
 
25
 
 
26
using System;
 
27
using System.Collections.Generic;
 
28
using System.IO;
 
29
using Newtonsoft.Json.Tests.TestObjects;
 
30
#if !NETFX_CORE
 
31
using NUnit.Framework;
 
32
#else
 
33
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
 
34
using TestFixture = Microsoft.VisualStudio.TestPlatform.UnitTestFramework.TestClassAttribute;
 
35
using Test = Microsoft.VisualStudio.TestPlatform.UnitTestFramework.TestMethodAttribute;
 
36
#endif
 
37
 
 
38
namespace Newtonsoft.Json.Tests.Serialization
 
39
{
 
40
  [TestFixture]
 
41
  public class PopulateTests : TestFixtureBase
 
42
  {
 
43
    [Test]
 
44
    public void PopulatePerson()
 
45
    {
 
46
      Person p = new Person();
 
47
 
 
48
      JsonConvert.PopulateObject(@"{""Name"":""James""}", p);
 
49
 
 
50
      Assert.AreEqual("James", p.Name);
 
51
    }
 
52
 
 
53
    [Test]
 
54
    public void PopulateArray()
 
55
    {
 
56
      IList<Person> people = new List<Person>
 
57
        {
 
58
          new Person { Name = "Initial" }
 
59
        };
 
60
 
 
61
      JsonConvert.PopulateObject(@"[{""Name"":""James""}, null]", people);
 
62
 
 
63
      Assert.AreEqual(3, people.Count);
 
64
      Assert.AreEqual("Initial", people[0].Name);
 
65
      Assert.AreEqual("James", people[1].Name);
 
66
      Assert.AreEqual(null, people[2]);
 
67
    }
 
68
 
 
69
    [Test]
 
70
    public void PopulateStore()
 
71
    {
 
72
      Store s = new Store();
 
73
      s.Color = StoreColor.Red;
 
74
      s.product = new List<Product>
 
75
        {
 
76
          new Product
 
77
            {
 
78
              ExpiryDate = new DateTime(2000, 12, 3, 0, 0, 0, DateTimeKind.Utc),
 
79
              Name = "ProductName!",
 
80
              Price = 9.9m
 
81
            }
 
82
        };
 
83
      s.Width = 99.99d;
 
84
      s.Mottos = new List<string> { "Can do!", "We deliver!" };
 
85
 
 
86
      string json = @"{
 
87
  ""Color"": 2,
 
88
  ""Establised"": ""\/Date(1264122061000+0000)\/"",
 
89
  ""Width"": 99.99,
 
90
  ""Employees"": 999,
 
91
  ""RoomsPerFloor"": [
 
92
    1,
 
93
    2,
 
94
    3,
 
95
    4,
 
96
    5,
 
97
    6,
 
98
    7,
 
99
    8,
 
100
    9
 
101
  ],
 
102
  ""Open"": false,
 
103
  ""Symbol"": ""@"",
 
104
  ""Mottos"": [
 
105
    ""Fail whale""
 
106
  ],
 
107
  ""Cost"": 100980.1,
 
108
  ""Escape"": ""\r\n\t\f\b?{\\r\\n\""'"",
 
109
  ""product"": [
 
110
    {
 
111
      ""Name"": ""ProductName!"",
 
112
      ""ExpiryDate"": ""\/Date(975801600000)\/"",
 
113
      ""Price"": 9.9,
 
114
      ""Sizes"": null
 
115
    }
 
116
  ]
 
117
}";
 
118
 
 
119
      JsonConvert.PopulateObject(json, s, new JsonSerializerSettings
 
120
        {
 
121
          ObjectCreationHandling = ObjectCreationHandling.Replace
 
122
        });
 
123
 
 
124
      Assert.AreEqual(1, s.Mottos.Count);
 
125
      Assert.AreEqual("Fail whale", s.Mottos[0]);
 
126
      Assert.AreEqual(1, s.product.Count);
 
127
 
 
128
      //Assert.AreEqual("James", p.Name);
 
129
    }
 
130
 
 
131
    [Test]
 
132
    public void PopulateListOfPeople()
 
133
    {
 
134
      List<Person> p = new List<Person>();
 
135
 
 
136
      JsonSerializer serializer = new JsonSerializer();
 
137
      serializer.Populate(new StringReader(@"[{""Name"":""James""},{""Name"":""Jim""}]"), p);
 
138
 
 
139
      Assert.AreEqual(2, p.Count);
 
140
      Assert.AreEqual("James", p[0].Name);
 
141
      Assert.AreEqual("Jim", p[1].Name);
 
142
    }
 
143
 
 
144
    [Test]
 
145
    public void PopulateDictionary()
 
146
    {
 
147
      Dictionary<string, string> p = new Dictionary<string, string>();
 
148
 
 
149
      JsonSerializer serializer = new JsonSerializer();
 
150
      serializer.Populate(new StringReader(@"{""Name"":""James""}"), p);
 
151
 
 
152
      Assert.AreEqual(1, p.Count);
 
153
      Assert.AreEqual("James", p["Name"]);
 
154
    }
 
155
 
 
156
    [Test]
 
157
    public void PopulateWithBadJson()
 
158
    {
 
159
      ExceptionAssert.Throws<JsonSerializationException>("Unexpected initial token 'Integer' when populating object. Expected JSON object or array. Path '', line 1, position 1.",
 
160
        () =>
 
161
        {
 
162
          JsonConvert.PopulateObject("1", new Person());
 
163
        });
 
164
    }
 
165
  }
 
166
}
 
 
b'\\ No newline at end of file'