Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
json
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
json
Commits
b60fe6e7
Commit
b60fe6e7
authored
Dec 28, 2014
by
Niels
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- removed old test cases
parent
23006bd5
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
9 additions
and
429 deletions
+9
-429
Makefile.am
Makefile.am
+2
-6
JSON_test.cc
test/JSON_test.cc
+0
-423
JSON_unit.cc
test/JSON_unit.cc
+7
-0
No files found.
Makefile.am
View file @
b60fe6e7
noinst_PROGRAMS
=
json
json
_unit
noinst_PROGRAMS
=
json_unit
TESTS
=
./json
./json
_unit
TESTS
=
./json_unit
FLAGS
=
-Wall
-Wextra
-pedantic
-Weffc
++
-Wcast-align
-Wcast-qual
-Wctor-dtor-privacy
-Wdisabled-optimization
-Wformat
=
2
-Winit-self
-Wmissing-declarations
-Wmissing-include-dirs
-Wold-style-cast
-Woverloaded-virtual
-Wredundant-decls
-Wshadow
-Wsign-conversion
-Wsign-promo
-Wstrict-overflow
=
5
-Wswitch
-Wundef
-Wno-unused
-Wnon-virtual-dtor
-Wreorder
FLAGS
=
-Wall
-Wextra
-pedantic
-Weffc
++
-Wcast-align
-Wcast-qual
-Wctor-dtor-privacy
-Wdisabled-optimization
-Wformat
=
2
-Winit-self
-Wmissing-declarations
-Wmissing-include-dirs
-Wold-style-cast
-Woverloaded-virtual
-Wredundant-decls
-Wshadow
-Wsign-conversion
-Wsign-promo
-Wstrict-overflow
=
5
-Wswitch
-Wundef
-Wno-unused
-Wnon-virtual-dtor
-Wreorder
json_SOURCES
=
src/JSON.cc src/JSON.h
test
/JSON_test.cc
json_CXXFLAGS
=
$(FLAGS)
-Weffc
++
-std
=
c++11
json_CPPFLAGS
=
-I
$(top_srcdir)
/src
json_unit_SOURCES
=
src/JSON.cc src/JSON.h
test
/catch.hpp
test
/JSON_unit.cc
json_unit_SOURCES
=
src/JSON.cc src/JSON.h
test
/catch.hpp
test
/JSON_unit.cc
json_unit_CXXFLAGS
=
$(FLAGS)
-std
=
c++11
json_unit_CXXFLAGS
=
$(FLAGS)
-std
=
c++11
json_unit_CPPFLAGS
=
-I
$(top_srcdir)
/src
-I
$(top_srcdir)
/test
-Dprivate
=
public
json_unit_CPPFLAGS
=
-I
$(top_srcdir)
/src
-I
$(top_srcdir)
/test
-Dprivate
=
public
...
...
test/JSON_test.cc
deleted
100644 → 0
View file @
23006bd5
#include <iostream>
#include <fstream>
#include <cstdio>
#include <cassert>
#include <JSON.h>
#include <sstream>
void
test_null
()
{
std
::
cerr
<<
"entering test_null()
\n
"
;
/* a null object */
// construct
JSON
a
,
b
;
// copy assign
b
=
JSON
();
// copy construct
JSON
c
(
a
);
// copy construct
JSON
d
=
a
;
// assign operator
JSON
e
=
JSON
();
// compare
assert
(
a
==
b
);
// type
assert
(
a
.
type
()
==
JSON
::
value_type
::
null
);
// empty and size
assert
(
a
.
size
()
==
0
);
assert
(
a
.
empty
()
==
true
);
// output
std
::
cout
<<
a
<<
'\n'
;
// string represetations
assert
(
a
.
toString
()
==
std
::
string
(
"null"
));
// invalid conversion to int
try
{
int
i
=
0
;
i
=
a
;
assert
(
false
);
}
catch
(
const
std
::
exception
&
ex
)
{
assert
(
ex
.
what
()
==
std
::
string
(
"cannot cast null to JSON number"
));
}
// invalid conversion to double
try
{
double
f
=
0
;
f
=
a
;
assert
(
false
);
}
catch
(
const
std
::
exception
&
ex
)
{
assert
(
ex
.
what
()
==
std
::
string
(
"cannot cast null to JSON number"
));
}
// invalid conversion to bool
try
{
bool
b
=
a
;
assert
(
false
);
}
catch
(
const
std
::
exception
&
ex
)
{
assert
(
ex
.
what
()
==
std
::
string
(
"cannot cast null to JSON Boolean"
));
}
// invalid conversion to string
try
{
std
::
string
s
=
a
;
assert
(
false
);
}
catch
(
const
std
::
exception
&
ex
)
{
assert
(
ex
.
what
()
==
std
::
string
(
"cannot cast null to JSON string"
));
}
std
::
cerr
<<
"leaving test_null()
\n
"
;
}
void
test_bool
()
{
std
::
cerr
<<
"entering test_bool()
\n
"
;
JSON
True
=
true
;
JSON
False
=
false
;
bool
x
=
True
;
std
::
cerr
<<
"leaving test_bool()
\n
"
;
}
void
test_string
()
{
std
::
cerr
<<
"entering test_string()
\n
"
;
/* a string object */
// construct
JSON
a
=
"object a"
;
JSON
b
;
// copy assign
b
=
JSON
(
"object a"
);
// copy construct
JSON
c
(
a
);
// copy construct
JSON
d
=
a
;
// assign operator
JSON
e
=
JSON
(
""
);
// compare
assert
(
a
==
b
);
// type
assert
(
a
.
type
()
==
JSON
::
value_type
::
string
);
// empty and size
assert
(
a
.
size
()
==
1
);
assert
(
a
.
empty
()
==
false
);
// output
std
::
cout
<<
a
<<
'\n'
;
// string represetations
assert
(
a
.
toString
()
==
std
::
string
(
"
\"
object a
\"
"
));
// invalid conversion to int
try
{
int
i
=
0
;
i
=
a
;
assert
(
false
);
}
catch
(
const
std
::
exception
&
ex
)
{
assert
(
ex
.
what
()
==
std
::
string
(
"cannot cast string to JSON number"
));
}
// invalid conversion to double
try
{
double
f
=
0
;
f
=
a
;
assert
(
false
);
}
catch
(
const
std
::
exception
&
ex
)
{
assert
(
ex
.
what
()
==
std
::
string
(
"cannot cast string to JSON number"
));
}
// invalid conversion to bool
try
{
bool
b
=
false
;
b
=
a
;
assert
(
false
);
}
catch
(
const
std
::
exception
&
ex
)
{
assert
(
ex
.
what
()
==
std
::
string
(
"cannot cast string to JSON Boolean"
));
}
{
// get payload
std
::
string
*
s1
=
a
.
data
().
string
;
std
::
string
s2
=
a
;
assert
(
*
s1
==
s2
);
}
std
::
cerr
<<
"leaving test_string()
\n
"
;
}
void
test_array
()
{
std
::
cerr
<<
"entering test_array()
\n
"
;
JSON
a
;
a
+=
JSON
();
a
+=
1
;
a
+=
1.0
;
a
+=
true
;
a
+=
"string"
;
// type
assert
(
a
.
type
()
==
JSON
::
value_type
::
array
);
// empty and size
assert
(
a
.
size
()
==
5
);
assert
(
a
.
empty
()
==
false
);
// output
std
::
cout
<<
a
<<
'\n'
;
// check for elements
assert
(
a
[
1
]
==
JSON
(
1
));
assert
(
a
[
2
]
==
JSON
(
1.0
));
assert
(
a
[
3
]
==
JSON
(
true
));
assert
(
a
[
4
]
==
JSON
(
"string"
));
// invalid access to element
try
{
a
[
5
]
=
1
;
// assert(false);
}
catch
(
const
std
::
exception
&
ex
)
{
assert
(
ex
.
what
()
==
std
::
string
(
"cannot access element at index 5"
));
}
// get elements
{
int
i
=
a
[
1
];
double
d
=
a
[
2
];
bool
b
=
a
[
3
];
std
::
string
s
=
a
[
4
];
}
// set elements
a
[
1
]
=
2
;
#ifdef __cplusplus11
// construction from initializer list
JSON
b
=
{
JSON
(),
2
,
1.0
,
true
,
"string"
};
assert
(
a
==
b
);
#endif
// iterators
{
size_t
count
=
0
;
for
(
JSON
::
iterator
i
=
a
.
begin
();
i
!=
a
.
end
();
++
i
)
{
std
::
cerr
<<
*
i
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
{
size_t
count
=
0
;
for
(
JSON
::
const_iterator
i
=
a
.
begin
();
i
!=
a
.
end
();
++
i
)
{
std
::
cerr
<<
*
i
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
{
size_t
count
=
0
;
for
(
JSON
::
const_iterator
i
=
a
.
cbegin
();
i
!=
a
.
cend
();
++
i
)
{
std
::
cerr
<<
*
i
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
#ifdef __cplusplus11
{
size_t
count
=
0
;
for
(
auto
element
:
a
)
{
std
::
cerr
<<
element
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
#endif
{
JSON
::
iterator
i
;
size_t
count
=
0
;
for
(
i
=
a
.
begin
();
i
!=
a
.
end
();
++
i
)
{
std
::
cerr
<<
*
i
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
{
JSON
::
const_iterator
i
;
size_t
count
=
0
;
for
(
i
=
a
.
begin
();
i
!=
a
.
end
();
++
i
)
{
std
::
cerr
<<
*
i
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
{
JSON
::
const_iterator
i
;
size_t
count
=
0
;
for
(
i
=
a
.
cbegin
();
i
!=
a
.
cend
();
++
i
)
{
std
::
cerr
<<
*
i
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
{
// get payload
std
::
vector
<
JSON
>*
array
=
a
.
data
().
array
;
assert
(
array
->
size
()
==
a
.
size
());
assert
(
array
->
empty
()
==
a
.
empty
());
}
std
::
cerr
<<
"leaving test_array()
\n
"
;
}
void
test_object
()
{
std
::
cerr
<<
"entering test_object()
\n
"
;
// check find()
{
JSON
o
;
o
[
"foo"
]
=
"bar"
;
JSON
::
iterator
i1
=
o
.
find
(
"foo"
);
assert
(
i1
!=
o
.
end
());
assert
(
i1
.
value
()
==
"bar"
);
assert
(
i1
.
key
()
==
"foo"
);
assert
(
*
i1
==
"bar"
);
JSON
::
iterator
i2
=
o
.
find
(
"baz"
);
assert
(
i2
==
o
.
end
());
JSON
a
;
a
+=
"foo"
;
a
+=
"bar"
;
JSON
::
iterator
i
;
i
=
a
.
find
(
"foo"
);
assert
(
i
==
a
.
end
());
}
std
::
cerr
<<
"leaving test_object()
\n
"
;
}
void
test_streaming
()
{
std
::
cerr
<<
"entering test_streaming()
\n
"
;
// stream text representation into stream
std
::
stringstream
i
;
i
<<
"{
\"
foo
\"
: true,
\"
baz
\"
: [1,2,3,4] }"
;
// create JSON from stream
{
JSON
j
,
k
;
i
>>
j
;
k
<<
i
;
assert
(
j
.
toString
()
==
k
.
toString
());
}
// roundtrip
{
std
::
stringstream
o
;
JSON
j
,
k
;
i
>>
j
;
j
>>
o
;
o
>>
k
;
// assert(j.toString() == k.toString()); (order is not preserved)
}
// check numbers
{
std
::
stringstream
number_stream
;
number_stream
<<
"[0, -1, 1, 1.0, -1.0, 1.0e+1, 1.0e-1, 1.0E+1, 1.0E-1, -1.2345678e-12]"
;
JSON
j
;
j
<<
number_stream
;
}
// check Unicode
{
std
::
stringstream
unicode_stream
;
unicode_stream
<<
"[
\"
öäüÖÄÜß
\"
,
\"
ÀÁÂÃĀĂȦ
\"
,
\"
★☆→➠♥︎♦︎☁︎
\"
]"
;
JSON
j
;
j
<<
unicode_stream
;
}
// check escaped strings
{
std
::
stringstream
escaped_stream
;
escaped_stream
<<
"[
\"\\\"
Hallo
\\\"\"
,
\"
\u0123
\"
]"
;
JSON
j
;
j
<<
escaped_stream
;
}
std
::
cerr
<<
"leaving test_streaming()
\n
"
;
}
int
main
()
{
test_null
();
test_bool
();
test_string
();
test_array
();
test_object
();
test_streaming
();
return
0
;
}
test/JSON_unit.cc
View file @
b60fe6e7
...
@@ -149,6 +149,7 @@ TEST_CASE("array")
...
@@ -149,6 +149,7 @@ TEST_CASE("array")
CHECK_NOTHROW
(
j
[
21
]
=
5
);
CHECK_NOTHROW
(
j
[
21
]
=
5
);
CHECK_THROWS_AS
(
j
.
at
(
21
)
=
5
,
std
::
out_of_range
);
CHECK_THROWS_AS
(
j
.
at
(
21
)
=
5
,
std
::
out_of_range
);
CHECK_THROWS_AS
(
nonarray
+=
2
,
std
::
runtime_error
);
CHECK_THROWS_AS
(
nonarray
+=
2
,
std
::
runtime_error
);
CHECK_THROWS_AS
(
nonarray
.
push_back
(
JSON
(
nullptr
)),
std
::
runtime_error
);
const
JSON
k
=
j
;
const
JSON
k
=
j
;
CHECK_NOTHROW
(
k
[
21
]);
CHECK_NOTHROW
(
k
[
21
]);
...
@@ -1026,6 +1027,12 @@ TEST_CASE("Parser")
...
@@ -1026,6 +1027,12 @@ TEST_CASE("Parser")
CHECK_THROWS_AS
(
JSON
::
parse
(
"infinity"
),
std
::
invalid_argument
);
CHECK_THROWS_AS
(
JSON
::
parse
(
"infinity"
),
std
::
invalid_argument
);
}
}
SECTION
(
"parse from C++ string"
)
{
std
::
string
s
=
"{
\"
foo
\"
: [1,2,true] }"
;
CHECK_NOTHROW
(
JSON
::
parse
(
s
));
}
SECTION
(
"user-defined string literal operator"
)
SECTION
(
"user-defined string literal operator"
)
{
{
auto
j1
=
"[1,2,3]"
_json
;
auto
j1
=
"[1,2,3]"
_json
;
...
...
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