source: rtos_arduino/trunk/arduino_lib/libraries/ArduinoJson/test/JsonParser_Object_Tests.cpp@ 209

Last change on this file since 209 was 209, checked in by ertl-honda, 8 years ago

BlueMix用のフィアルを追加

File size: 4.4 KB
Line 
1// Copyright Benoit Blanchon 2014-2016
2// MIT License
3//
4// Arduino JSON library
5// https://github.com/bblanchon/ArduinoJson
6// If you like this project, please add a star!
7
8#include <gtest/gtest.h>
9#include <ArduinoJson.h>
10
11class JsonParser_Object_Test : public testing::Test {
12 protected:
13 void whenInputIs(const char *jsonString) {
14 strcpy(_jsonString, jsonString);
15 _object = &_jsonBuffer.parseObject(_jsonString);
16 }
17
18 void parseMustSucceed() { EXPECT_TRUE(_object->success()); }
19
20 void parseMustFail() { EXPECT_FALSE(_object->success()); }
21
22 void sizeMustBe(int expected) { EXPECT_EQ(expected, _object->size()); }
23
24 void keyMustHaveValue(const char *key, const char *expected) {
25 EXPECT_STREQ(expected, (*_object)[key]);
26 }
27
28 template <typename T>
29 void keyMustHaveValue(const char *key, T expected) {
30 EXPECT_EQ(expected, (*_object)[key].as<T>());
31 }
32
33 private:
34 DynamicJsonBuffer _jsonBuffer;
35 JsonObject *_object;
36 char _jsonString[256];
37};
38
39TEST_F(JsonParser_Object_Test, EmptyObject) {
40 whenInputIs("{}");
41 parseMustSucceed();
42 sizeMustBe(0);
43}
44
45TEST_F(JsonParser_Object_Test, MissingOpeningBrace) {
46 whenInputIs("}");
47 parseMustFail();
48}
49
50TEST_F(JsonParser_Object_Test, MissingClosingBrace) {
51 whenInputIs("{");
52 parseMustFail();
53}
54
55TEST_F(JsonParser_Object_Test, MissingColonAndValue) {
56 whenInputIs("{\"key\"}");
57 parseMustFail();
58}
59
60TEST_F(JsonParser_Object_Test, MissingQuotesAndColonAndValue) {
61 whenInputIs("{key}");
62 parseMustFail();
63}
64
65TEST_F(JsonParser_Object_Test, OneString) {
66 whenInputIs("{\"key\":\"value\"}");
67 parseMustSucceed();
68 sizeMustBe(1);
69 keyMustHaveValue("key", "value");
70}
71
72TEST_F(JsonParser_Object_Test, OneStringSingleQuotes) {
73 whenInputIs("{'key':'value'}");
74 parseMustSucceed();
75 sizeMustBe(1);
76 keyMustHaveValue("key", "value");
77}
78
79TEST_F(JsonParser_Object_Test, OneStringNoQuotes) {
80 whenInputIs("{key:value}");
81 parseMustSucceed();
82 sizeMustBe(1);
83 keyMustHaveValue("key", "value");
84}
85
86TEST_F(JsonParser_Object_Test, OneStringSpaceBeforeKey) {
87 whenInputIs("{ \"key\":\"value\"}");
88 parseMustSucceed();
89 sizeMustBe(1);
90 keyMustHaveValue("key", "value");
91}
92
93TEST_F(JsonParser_Object_Test, OneStringSpaceAfterKey) {
94 whenInputIs("{\"key\" :\"value\"}");
95 parseMustSucceed();
96 sizeMustBe(1);
97 keyMustHaveValue("key", "value");
98}
99
100TEST_F(JsonParser_Object_Test, OneStringSpaceBeforeValue) {
101 whenInputIs("{\"key\": \"value\"}");
102 parseMustSucceed();
103 sizeMustBe(1);
104 keyMustHaveValue("key", "value");
105}
106
107TEST_F(JsonParser_Object_Test, OneStringSpaceAfterValue) {
108 whenInputIs("{\"key\":\"value\" }");
109 parseMustSucceed();
110 sizeMustBe(1);
111 keyMustHaveValue("key", "value");
112}
113
114TEST_F(JsonParser_Object_Test, TwoStrings) {
115 whenInputIs("{\"key1\":\"value1\",\"key2\":\"value2\"}");
116 parseMustSucceed();
117 sizeMustBe(2);
118 keyMustHaveValue("key1", "value1");
119 keyMustHaveValue("key2", "value2");
120}
121
122TEST_F(JsonParser_Object_Test, TwoStringsSpaceBeforeComma) {
123 whenInputIs("{\"key1\":\"value1\" ,\"key2\":\"value2\"}");
124 parseMustSucceed();
125 sizeMustBe(2);
126 keyMustHaveValue("key1", "value1");
127 keyMustHaveValue("key2", "value2");
128}
129
130TEST_F(JsonParser_Object_Test, TwoStringsSpaceAfterComma) {
131 whenInputIs("{\"key1\":\"value1\" ,\"key2\":\"value2\"}");
132 parseMustSucceed();
133 sizeMustBe(2);
134 keyMustHaveValue("key1", "value1");
135 keyMustHaveValue("key2", "value2");
136}
137
138TEST_F(JsonParser_Object_Test, EndingWithAComma) {
139 whenInputIs("{\"key1\":\"value1\",}");
140 parseMustFail();
141 sizeMustBe(0);
142}
143
144TEST_F(JsonParser_Object_Test, TwoIntergers) {
145 whenInputIs("{\"key1\":42,\"key2\":-42}");
146 parseMustSucceed();
147 sizeMustBe(2);
148 keyMustHaveValue("key1", 42);
149 keyMustHaveValue("key2", -42);
150}
151
152TEST_F(JsonParser_Object_Test, TwoDoubles) {
153 whenInputIs("{\"key1\":12.345,\"key2\":-7E89}");
154 parseMustSucceed();
155 sizeMustBe(2);
156 keyMustHaveValue("key1", 12.345);
157 keyMustHaveValue("key2", -7E89);
158}
159
160TEST_F(JsonParser_Object_Test, TwoBooleans) {
161 whenInputIs("{\"key1\":true,\"key2\":false}");
162 parseMustSucceed();
163 sizeMustBe(2);
164 keyMustHaveValue("key1", true);
165 keyMustHaveValue("key2", false);
166}
167
168TEST_F(JsonParser_Object_Test, TwoNulls) {
169 const char *const nullstr = 0;
170
171 whenInputIs("{\"key1\":null,\"key2\":null}");
172 parseMustSucceed();
173 sizeMustBe(2);
174 keyMustHaveValue("key1", nullstr);
175 keyMustHaveValue("key2", nullstr);
176}
177
178TEST_F(JsonParser_Object_Test, NullForKey) {
179 whenInputIs("null:\"value\"}");
180 parseMustFail();
181}
Note: See TracBrowser for help on using the repository browser.