Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
json
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
json
Commits
2e26faf9
Commit
2e26faf9
authored
Dec 28, 2014
by
Niels
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
+ more test cases
parent
88786c86
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
44 additions
and
1 deletion
+44
-1
test/JSON_unit.cc
test/JSON_unit.cc
+44
-1
No files found.
test/JSON_unit.cc
View file @
2e26faf9
...
@@ -11,11 +11,15 @@ TEST_CASE("array")
...
@@ -11,11 +11,15 @@ TEST_CASE("array")
JSON
j
(
JSON
::
value_type
::
array
);
JSON
j
(
JSON
::
value_type
::
array
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
array
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
array
);
// const object
const
JSON
j_const
(
j
);
// string representation of default value
// string representation of default value
CHECK
(
j
.
toString
()
==
"[]"
);
CHECK
(
j
.
toString
()
==
"[]"
);
// check payload
// check payload
CHECK
(
*
(
j
.
data
().
array
)
==
JSON
::
array_t
());
CHECK
(
*
(
j
.
data
().
array
)
==
JSON
::
array_t
());
//CHECK(*(j_const.data().array) == JSON::array_t());
// container members
// container members
CHECK
(
j
.
size
()
==
0
);
CHECK
(
j
.
size
()
==
0
);
...
@@ -142,6 +146,7 @@ TEST_CASE("array")
...
@@ -142,6 +146,7 @@ TEST_CASE("array")
// exceptions
// exceptions
JSON
nonarray
=
1
;
JSON
nonarray
=
1
;
CHECK_THROWS_AS
(
nonarray
.
at
(
0
),
std
::
domain_error
);
CHECK_THROWS_AS
(
const
int
i
=
nonarray
[
0
],
std
::
domain_error
);
CHECK_THROWS_AS
(
const
int
i
=
nonarray
[
0
],
std
::
domain_error
);
CHECK_NOTHROW
(
j
[
21
]);
CHECK_NOTHROW
(
j
[
21
]);
CHECK_THROWS_AS
(
const
int
i
=
j
.
at
(
21
),
std
::
out_of_range
);
CHECK_THROWS_AS
(
const
int
i
=
j
.
at
(
21
),
std
::
out_of_range
);
...
@@ -152,6 +157,7 @@ TEST_CASE("array")
...
@@ -152,6 +157,7 @@ TEST_CASE("array")
const
JSON
nonarray_const
=
nonarray
;
const
JSON
nonarray_const
=
nonarray
;
const
JSON
j_const
=
j
;
const
JSON
j_const
=
j
;
CHECK_THROWS_AS
(
nonarray_const
.
at
(
0
),
std
::
domain_error
);
CHECK_THROWS_AS
(
const
int
i
=
nonarray_const
[
0
],
std
::
domain_error
);
CHECK_THROWS_AS
(
const
int
i
=
nonarray_const
[
0
],
std
::
domain_error
);
CHECK_NOTHROW
(
j_const
[
21
]);
CHECK_NOTHROW
(
j_const
[
21
]);
CHECK_THROWS_AS
(
const
int
i
=
j
.
at
(
21
),
std
::
out_of_range
);
CHECK_THROWS_AS
(
const
int
i
=
j
.
at
(
21
),
std
::
out_of_range
);
...
@@ -286,11 +292,15 @@ TEST_CASE("object")
...
@@ -286,11 +292,15 @@ TEST_CASE("object")
JSON
j
(
JSON
::
value_type
::
object
);
JSON
j
(
JSON
::
value_type
::
object
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
object
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
object
);
// const object
const
JSON
j_const
=
j
;
// string representation of default value
// string representation of default value
CHECK
(
j
.
toString
()
==
"{}"
);
CHECK
(
j
.
toString
()
==
"{}"
);
// check payload
// check payload
CHECK
(
*
(
j
.
data
().
object
)
==
JSON
::
object_t
());
CHECK
(
*
(
j
.
data
().
object
)
==
JSON
::
object_t
());
CHECK
(
*
(
j_const
.
data
().
object
)
==
JSON
::
object_t
());
// container members
// container members
CHECK
(
j
.
size
()
==
0
);
CHECK
(
j
.
size
()
==
0
);
...
@@ -423,6 +433,13 @@ TEST_CASE("object")
...
@@ -423,6 +433,13 @@ TEST_CASE("object")
CHECK_THROWS_AS
(
k
.
at
(
std
::
string
(
"foo"
)),
std
::
out_of_range
);
CHECK_THROWS_AS
(
k
.
at
(
std
::
string
(
"foo"
)),
std
::
out_of_range
);
CHECK_NOTHROW
(
j
.
at
(
std
::
string
(
"k0"
)));
CHECK_NOTHROW
(
j
.
at
(
std
::
string
(
"k0"
)));
CHECK_NOTHROW
(
k
.
at
(
std
::
string
(
"k0"
)));
CHECK_NOTHROW
(
k
.
at
(
std
::
string
(
"k0"
)));
{
JSON
noobject
=
1
;
const
JSON
noobject_const
=
noobject
;
CHECK_THROWS_AS
(
noobject
[
"foo"
],
std
::
domain_error
);
CHECK_THROWS_AS
(
noobject
[
std
::
string
(
"foo"
)],
std
::
domain_error
);
CHECK_THROWS_AS
(
noobject_const
[
std
::
string
(
"foo"
)],
std
::
domain_error
);
}
// add pair
// add pair
j
.
push_back
(
JSON
::
object_t
::
value_type
{
"int_key"
,
42
});
j
.
push_back
(
JSON
::
object_t
::
value_type
{
"int_key"
,
42
});
...
@@ -709,11 +726,15 @@ TEST_CASE("string")
...
@@ -709,11 +726,15 @@ TEST_CASE("string")
JSON
j
(
JSON
::
value_type
::
string
);
JSON
j
(
JSON
::
value_type
::
string
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
string
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
string
);
// const object
const
JSON
j_const
=
j
;
// string representation of default value
// string representation of default value
CHECK
(
j
.
toString
()
==
"
\"\"
"
);
CHECK
(
j
.
toString
()
==
"
\"\"
"
);
// check payload
// check payload
CHECK
(
*
(
j
.
data
().
string
)
==
JSON
::
string_t
());
CHECK
(
*
(
j
.
data
().
string
)
==
JSON
::
string_t
());
CHECK
(
*
(
j_const
.
data
().
string
)
==
JSON
::
string_t
());
// container members
// container members
CHECK
(
j
.
size
()
==
1
);
CHECK
(
j
.
size
()
==
1
);
...
@@ -787,11 +808,15 @@ TEST_CASE("boolean")
...
@@ -787,11 +808,15 @@ TEST_CASE("boolean")
JSON
j
(
JSON
::
value_type
::
boolean
);
JSON
j
(
JSON
::
value_type
::
boolean
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
boolean
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
boolean
);
// const object
const
JSON
j_const
=
j
;
// string representation of default value
// string representation of default value
CHECK
(
j
.
toString
()
==
"false"
);
CHECK
(
j
.
toString
()
==
"false"
);
// check payload
// check payload
CHECK
(
j
.
data
().
boolean
==
JSON
::
boolean_t
());
CHECK
(
j
.
data
().
boolean
==
JSON
::
boolean_t
());
CHECK
(
j_const
.
data
().
boolean
==
JSON
::
boolean_t
());
// container members
// container members
CHECK
(
j
.
size
()
==
1
);
CHECK
(
j
.
size
()
==
1
);
...
@@ -862,11 +887,15 @@ TEST_CASE("number (int)")
...
@@ -862,11 +887,15 @@ TEST_CASE("number (int)")
JSON
j
(
JSON
::
value_type
::
number
);
JSON
j
(
JSON
::
value_type
::
number
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
number
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
number
);
// const object
const
JSON
j_const
=
j
;
// string representation of default value
// string representation of default value
CHECK
(
j
.
toString
()
==
"0"
);
CHECK
(
j
.
toString
()
==
"0"
);
// check payload
// check payload
CHECK
(
j
.
data
().
number
==
JSON
::
number_t
());
CHECK
(
j
.
data
().
number
==
JSON
::
number_t
());
CHECK
(
j_const
.
data
().
number
==
JSON
::
number_t
());
// container members
// container members
CHECK
(
j
.
size
()
==
1
);
CHECK
(
j
.
size
()
==
1
);
...
@@ -944,11 +973,15 @@ TEST_CASE("number (float)")
...
@@ -944,11 +973,15 @@ TEST_CASE("number (float)")
JSON
j
(
JSON
::
value_type
::
number_float
);
JSON
j
(
JSON
::
value_type
::
number_float
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
number_float
);
CHECK
(
j
.
type
()
==
JSON
::
value_type
::
number_float
);
// const object
const
JSON
j_const
=
j
;
// string representation of default value
// string representation of default value
CHECK
(
j
.
toString
()
==
"0.000000"
);
CHECK
(
j
.
toString
()
==
"0.000000"
);
// check payload
// check payload
CHECK
(
j
.
data
().
number_float
==
JSON
::
number_float_t
());
CHECK
(
j
.
data
().
number_float
==
JSON
::
number_float_t
());
CHECK
(
j_const
.
data
().
number_float
==
JSON
::
number_float_t
());
// container members
// container members
CHECK
(
j
.
size
()
==
1
);
CHECK
(
j
.
size
()
==
1
);
...
@@ -1142,7 +1175,17 @@ TEST_CASE("Parser")
...
@@ -1142,7 +1175,17 @@ TEST_CASE("Parser")
SECTION
(
"parse from C++ string"
)
SECTION
(
"parse from C++ string"
)
{
{
std
::
string
s
=
"{
\"
foo
\"
: [1,2,true] }"
;
std
::
string
s
=
"{
\"
foo
\"
: [1,2,true] }"
;
CHECK_NOTHROW
(
JSON
::
parse
(
s
));
JSON
j
=
JSON
::
parse
(
s
);
CHECK
(
j
[
"foo"
].
size
()
==
3
);
}
SECTION
(
"parse from stream"
)
{
std
::
stringstream
s
;
s
<<
"{
\"
foo
\"
: [1,2,true] }"
;
JSON
j
;
j
<<
s
;
CHECK
(
j
[
"foo"
].
size
()
==
3
);
}
}
SECTION
(
"user-defined string literal operator"
)
SECTION
(
"user-defined string literal operator"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment