Skip to content

Commit f2a57c8

Browse files
author
Blake Gross
committed
Adding tests
1 parent d4f65c0 commit f2a57c8

File tree

2 files changed

+75
-63
lines changed

2 files changed

+75
-63
lines changed

Release/tests/functional/json/negative_parsing_tests.cpp

Lines changed: 73 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -29,121 +29,133 @@ using namespace utility;
2929

3030
namespace tests { namespace functional { namespace json_tests {
3131

32+
#ifndef VERIFY_JSON_THROWS
33+
#define VERIFY_JSON_THROWS(parseString) \
34+
{ \
35+
std::error_code ec_; \
36+
VERIFY_THROWS(json::value::parse(parseString), json::json_exception); \
37+
auto value_ = json::value::parse(parseString, ec_); \
38+
VERIFY_IS_TRUE(ec_.value() > 0); \
39+
VERIFY_IS_TRUE(value_.is_null()); \
40+
}
41+
42+
#endif
43+
3244
SUITE(negative_parsing_tests)
3345
{
3446

3547
TEST(string_t)
3648
{
37-
VERIFY_THROWS(json::value::parse(U("\"\\k\"")), json::json_exception);
38-
VERIFY_THROWS(json::value::parse(U("\" \" \"")), json::json_exception);
39-
VERIFY_THROWS(json::value::parse(U("\"\\u23A\"")), json::json_exception);
40-
VERIFY_THROWS(json::value::parse(U("\"\\uXY1A\"")), json::json_exception);
41-
VERIFY_THROWS(json::value::parse(U("\"asdf")), json::json_exception);
42-
VERIFY_THROWS(json::value::parse(U("\\asdf")), json::json_exception);
43-
VERIFY_THROWS(json::value::parse(U("\"\"\"\"")), json::json_exception);
49+
VERIFY_JSON_THROWS(U("\"\\k\""));
50+
VERIFY_JSON_THROWS(U("\" \" \""));
51+
VERIFY_JSON_THROWS(U("\"\\u23A\""));
52+
VERIFY_JSON_THROWS(U("\"\\uXY1A\""));
53+
VERIFY_JSON_THROWS(U("\"asdf"));
54+
VERIFY_JSON_THROWS(U("\\asdf"));
55+
VERIFY_JSON_THROWS(U("\"\"\"\""));
4456

4557
// '\', '"', and control characters must be escaped (0x1F and below).
46-
VERIFY_THROWS(json::value::parse(U("\"\\\"")), json::json_exception);
47-
VERIFY_THROWS(json::value::parse(U("\"")), json::json_exception);
58+
VERIFY_JSON_THROWS(U("\"\\\""));
59+
VERIFY_JSON_THROWS(U("\""));
4860
utility::string_t str(U("\""));
4961
str.append(1, 0x1F);
5062
str.append(U("\""));
51-
VERIFY_THROWS(json::value::parse(str.c_str()), json::json_exception);
63+
VERIFY_JSON_THROWS(str.c_str());
5264
}
5365

5466
TEST(numbers)
5567
{
56-
VERIFY_THROWS(json::value::parse(U("-")), json::json_exception);
57-
VERIFY_THROWS(json::value::parse(U("-.")), json::json_exception);
58-
VERIFY_THROWS(json::value::parse(U("-e1")), json::json_exception);
59-
VERIFY_THROWS(json::value::parse(U("-1e")), json::json_exception);
60-
VERIFY_THROWS(json::value::parse(U("+1.1")), json::json_exception);
61-
VERIFY_THROWS(json::value::parse(U("1.1 E")), json::json_exception);
62-
VERIFY_THROWS(json::value::parse(U("1.1E-")), json::json_exception);
63-
VERIFY_THROWS(json::value::parse(U("1.1E.1")), json::json_exception);
64-
VERIFY_THROWS(json::value::parse(U("1.1E1.1")), json::json_exception);
65-
VERIFY_THROWS(json::value::parse(U("001.1")), json::json_exception);
66-
VERIFY_THROWS(json::value::parse(U("-.100")), json::json_exception);
67-
VERIFY_THROWS(json::value::parse(U("-.001")), json::json_exception);
68-
VERIFY_THROWS(json::value::parse(U(".1")), json::json_exception);
69-
VERIFY_THROWS(json::value::parse(U("0.1.1")), json::json_exception);
68+
VERIFY_JSON_THROWS(U("-"));
69+
VERIFY_JSON_THROWS(U("-."));
70+
VERIFY_JSON_THROWS(U("-e1"));
71+
VERIFY_JSON_THROWS(U("-1e"));
72+
VERIFY_JSON_THROWS(U("+1.1"));
73+
VERIFY_JSON_THROWS(U("1.1 E"));
74+
VERIFY_JSON_THROWS(U("1.1E-"));
75+
VERIFY_JSON_THROWS(U("1.1E.1"));
76+
VERIFY_JSON_THROWS(U("1.1E1.1"));
77+
VERIFY_JSON_THROWS(U("001.1"));
78+
VERIFY_JSON_THROWS(U("-.100"));
79+
VERIFY_JSON_THROWS(U("-.001"));
80+
VERIFY_JSON_THROWS(U(".1"));
81+
VERIFY_JSON_THROWS(U("0.1.1"));
7082
}
7183

7284
// TFS 535589
73-
json::value parse_help(utility::string_t str)
85+
void parse_help(utility::string_t str)
7486
{
7587
utility::stringstream_t ss1;
7688
ss1 << str;
77-
return json::value::parse(ss1);
89+
VERIFY_JSON_THROWS(ss1.str());
7890
}
7991

8092
TEST(objects)
8193
{
82-
VERIFY_THROWS(json::value::parse(U("}")), json::json_exception);
83-
VERIFY_THROWS(parse_help(U("{")), json::json_exception);
84-
VERIFY_THROWS(parse_help(U("{ 1, 10 }")), json::json_exception);
85-
VERIFY_THROWS(parse_help(U("{ : }")), json::json_exception);
86-
VERIFY_THROWS(parse_help(U("{ \"}")), json::json_exception);
87-
VERIFY_THROWS(json::value::parse(U("{")), json::json_exception);
88-
VERIFY_THROWS(json::value::parse(U("{ 1")), json::json_exception);
89-
VERIFY_THROWS(json::value::parse(U("{ \"}")), json::json_exception);
90-
VERIFY_THROWS(json::value::parse(U("{\"2\":")), json::json_exception);
91-
VERIFY_THROWS(json::value::parse(U("{\"2\":}")), json::json_exception);
92-
VERIFY_THROWS(json::value::parse(U("{\"2\": true")), json::json_exception);
93-
VERIFY_THROWS(json::value::parse(U("{\"2\": true false")), json::json_exception);
94-
VERIFY_THROWS(json::value::parse(U("{\"2\": true :false")), json::json_exception);
95-
VERIFY_THROWS(json::value::parse(U("{\"2\": false,}")), json::json_exception);
94+
VERIFY_JSON_THROWS(U("}"));
95+
parse_help(U("{"));
96+
parse_help(U("{ 1, 10 }"));
97+
parse_help(U("{ : }"));
98+
parse_help(U("{ \"}"));
99+
VERIFY_JSON_THROWS(U("{"));
100+
VERIFY_JSON_THROWS(U("{ 1"));
101+
VERIFY_JSON_THROWS(U("{ \"}"));
102+
VERIFY_JSON_THROWS(U("{\"2\":"));
103+
VERIFY_JSON_THROWS(U("{\"2\":}"));
104+
VERIFY_JSON_THROWS(U("{\"2\": true"));
105+
VERIFY_JSON_THROWS(U("{\"2\": true false"));
106+
VERIFY_JSON_THROWS(U("{\"2\": true :false"));
107+
VERIFY_JSON_THROWS(U("{\"2\": false,}"));
96108
}
97109

98110
TEST(arrays)
99111
{
100-
VERIFY_THROWS(json::value::parse(U("]")), json::json_exception);
101-
VERIFY_THROWS(json::value::parse(U("[")), json::json_exception);
102-
VERIFY_THROWS(json::value::parse(U("[ 1")), json::json_exception);
103-
VERIFY_THROWS(json::value::parse(U("[ 1,")), json::json_exception);
104-
VERIFY_THROWS(json::value::parse(U("[ 1,]")), json::json_exception);
105-
VERIFY_THROWS(json::value::parse(U("[ 1 2]")), json::json_exception);
106-
VERIFY_THROWS(json::value::parse(U("[ \"1\" : 2]")), json::json_exception);
107-
VERIFY_THROWS(parse_help(U("[,]")), json::json_exception);
108-
VERIFY_THROWS(parse_help(U("[ \"]")), json::json_exception);
109-
VERIFY_THROWS(parse_help(U("[\"2\", false,]")), json::json_exception);
112+
VERIFY_JSON_THROWS(U("]"));
113+
VERIFY_JSON_THROWS(U("["));
114+
VERIFY_JSON_THROWS(U("[ 1"));
115+
VERIFY_JSON_THROWS(U("[ 1,"));
116+
VERIFY_JSON_THROWS(U("[ 1,]"));
117+
VERIFY_JSON_THROWS(U("[ 1 2]"));
118+
VERIFY_JSON_THROWS(U("[ \"1\" : 2]"));
119+
parse_help(U("[,]"));
120+
parse_help(U("[ \"]"));
121+
parse_help(U("[\"2\", false,]"));
110122
}
111123

112124
TEST(literals_not_lower_case)
113125
{
114-
VERIFY_THROWS(json::value::parse(U("NULL")), json::json_exception);
115-
VERIFY_THROWS(json::value::parse(U("FAlse")), json::json_exception);
116-
VERIFY_THROWS(json::value::parse(U("TRue")), json::json_exception);
126+
VERIFY_JSON_THROWS(U("NULL"));
127+
VERIFY_JSON_THROWS(U("FAlse"));
128+
VERIFY_JSON_THROWS(U("TRue"));
117129
}
118130

119131
TEST(incomplete_literals)
120132
{
121-
VERIFY_THROWS(json::value::parse(U("nul")), json::json_exception);
122-
VERIFY_THROWS(json::value::parse(U("fal")), json::json_exception);
123-
VERIFY_THROWS(json::value::parse(U("tru")), json::json_exception);
133+
VERIFY_JSON_THROWS(U("nul"));
134+
VERIFY_JSON_THROWS(U("fal"));
135+
VERIFY_JSON_THROWS(U("tru"));
124136
}
125137

126138
// TFS#501321
127139
TEST(exception_string)
128140
{
129141
utility::string_t json_ip_str=U("");
130-
VERIFY_THROWS(json::value::parse(json_ip_str), json::json_exception);
142+
VERIFY_JSON_THROWS(json_ip_str);
131143
}
132144

133145
TEST(boundary_chars)
134146
{
135147
utility::string_t str(U("\""));
136148
str.append(1, 0x1F);
137149
str.append(U("\""));
138-
VERIFY_THROWS(parse_help(str), json::json_exception);
150+
parse_help(str);
139151
}
140152

141153
TEST(stream_left_over_chars)
142154
{
143155
std::stringbuf buf;
144156
buf.sputn("[false]false", 12);
145157
std::istream stream(&buf);
146-
VERIFY_THROWS(json::value::parse(stream), json::json_exception);
158+
VERIFY_THROWS(web::json::value::parse(stream), json::json_exception);
147159
}
148160

149161
// Test using Windows only API.
@@ -153,7 +165,7 @@ TEST(wstream_left_over_chars)
153165
std::wstringbuf buf;
154166
buf.sputn(L"[false]false", 12);
155167
std::wistream stream(&buf);
156-
VERIFY_THROWS(json::value::parse(stream), json::json_exception);
168+
VERIFY_THROWS(web::json::value::parse(stream), json::json_exception);
157169
}
158170
#endif
159171

@@ -168,7 +180,7 @@ void garbage_impl(wchar_t ch)
168180
for (int i = 0; i < 2500; i++)
169181
ss.push_back(static_cast<char_t>(dist(eng)));
170182

171-
VERIFY_THROWS(json::value::parse(ss.c_str()), json::json_exception);
183+
VERIFY_JSON_THROWS(ss.c_str());
172184
}
173185

174186
TEST(garbage_1)

Release/tests/functional/json/parsing_tests.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,9 +616,9 @@ TEST(non_default_locale)
616616
TEST(parse_overload_success)
617617
{
618618
std::error_code err;
619-
utility::string_t str(U("/JSONString/"));
619+
utility::string_t str(U("\"JSONString\""));
620620
json::value parsedObject = json::value::parse(str, err);
621-
621+
622622
VERIFY_IS_TRUE(err.value() == 0);
623623
VERIFY_IS_TRUE(!parsedObject.is_null());
624624
}

0 commit comments

Comments
 (0)