summaryrefslogtreecommitdiff
path: root/libjsonpp/testSerialise.cpp
blob: 98e9b41a05cab7f0e6abd32f761d136d7e78626d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <pch.hpp>

#define BOOST_TEST_MODULE serialise
#include <boost/test/unit_test.hpp>

#include "jsonpp.h"
#include <fstream>
#include <boost/filesystem/path.hpp>

#define XSTR(s) STR(s)
#define STR(s) #s
const boost::filesystem::path root(XSTR(ROOT));

template <typename T>
static
json::ValuePtr
jvp(const T & t)
{
	return json::ValuePtr(new json::Value(t));
}

static
std::string
writeString(const json::Value & v)
{
	std::stringstream ss;
	json::serializeValue(v, ss, "utf-8");
	return ss.str();
}

BOOST_AUTO_TEST_CASE( serialise_true )
{
	BOOST_REQUIRE_EQUAL("true", writeString(true));
}

BOOST_AUTO_TEST_CASE( serialise_false )
{
	BOOST_REQUIRE_EQUAL("false", writeString(false));
}

BOOST_AUTO_TEST_CASE( serialise_0 )
{
	BOOST_REQUIRE_EQUAL("0", writeString(0.0));
}

BOOST_AUTO_TEST_CASE( serialise_48 )
{
	BOOST_REQUIRE_EQUAL("48", writeString(48.0));
}

BOOST_AUTO_TEST_CASE( serialise_neg48 )
{
	BOOST_REQUIRE_EQUAL("-48", writeString(-48.0));
}

BOOST_AUTO_TEST_CASE( serialise_pi )
{
	BOOST_REQUIRE_EQUAL("3.14159", writeString(3.14159));
}

BOOST_AUTO_TEST_CASE( serialise_emptyArray )
{
	BOOST_REQUIRE_EQUAL("[]", writeString(json::Array()));
}

BOOST_AUTO_TEST_CASE( serialise_emptyObject )
{
	BOOST_REQUIRE_EQUAL("{}", writeString(json::Object()));
}

BOOST_AUTO_TEST_CASE( serialise_null )
{
	BOOST_REQUIRE_EQUAL("null", writeString(json::Null()));
}

BOOST_AUTO_TEST_CASE( serialise_unicode )
{
	BOOST_REQUIRE_EQUAL("\"A Űņĩćőđē string.\"", writeString(Glib::ustring("A Űņĩćőđē string.")));
}

BOOST_AUTO_TEST_CASE( serialise_whitespace )
{
	BOOST_REQUIRE_EQUAL("\"\\r\\n\\t\"", writeString(Glib::ustring("\r\n\t")));
}

BOOST_AUTO_TEST_CASE( serialise_quotes )
{
	BOOST_REQUIRE_EQUAL("\"string with \\\" in\"", writeString(Glib::ustring("string with \" in")));
}

BOOST_AUTO_TEST_CASE( serialise_complexObject )
{
	BOOST_REQUIRE_EQUAL("{\"a\":\"string\",\"b\":null,\"c\":64,\"d\":true,\"e\":{\"suba\":\"suba-val\",\"subb\":\"subb-val\"},\"f\":[true,false,-4.9,\"item\"]}", writeString(json::Object({
					{"a", jvp(Glib::ustring("string"))},
					{"b", jvp(json::Null())},
					{"c", jvp(64.0)},
					{"d", jvp(true)},
					{"e", jvp(
								json::Object({
									{"suba", jvp(Glib::ustring("suba-val"))},
									{"subb", jvp(Glib::ustring("subb-val"))}
									})
								)},
					{"f", jvp(
								json::Array({
									jvp(true),
									jvp(false),
									jvp(-4.9),
									jvp(Glib::ustring("item"))
									})
								)},
					})));
}