summaryrefslogtreecommitdiffstats
path: root/xbmc/utils/test/TestJSONVariantWriter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/utils/test/TestJSONVariantWriter.cpp')
-rw-r--r--xbmc/utils/test/TestJSONVariantWriter.cpp151
1 files changed, 151 insertions, 0 deletions
diff --git a/xbmc/utils/test/TestJSONVariantWriter.cpp b/xbmc/utils/test/TestJSONVariantWriter.cpp
new file mode 100644
index 0000000..0772a4d
--- /dev/null
+++ b/xbmc/utils/test/TestJSONVariantWriter.cpp
@@ -0,0 +1,151 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#include "utils/JSONVariantWriter.h"
10#include "utils/Variant.h"
11
12#include <gtest/gtest.h>
13
14TEST(TestJSONVariantWriter, CanWriteNull)
15{
16 CVariant variant;
17 std::string str;
18
19 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
20 ASSERT_STREQ("null", str.c_str());
21}
22
23TEST(TestJSONVariantWriter, CanWriteBoolean)
24{
25 CVariant variant(true);
26 std::string str;
27 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
28 ASSERT_STREQ("true", str.c_str());
29
30 variant = false;
31 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
32 ASSERT_STREQ("false", str.c_str());
33}
34
35TEST(TestJSONVariantWriter, CanWriteSignedInteger)
36{
37 CVariant variant(-1);
38 std::string str;
39 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
40 ASSERT_STREQ("-1", str.c_str());
41}
42
43TEST(TestJSONVariantWriter, CanWriteUnsignedInteger)
44{
45 CVariant variant(0);
46 std::string str;
47 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
48 ASSERT_STREQ("0", str.c_str());
49
50 variant = 1;
51 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
52 ASSERT_STREQ("1", str.c_str());
53}
54
55TEST(TestJSONVariantWriter, CanWriteSignedInteger64)
56{
57 CVariant variant(static_cast<int64_t>(-4294967296LL));
58 std::string str;
59 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
60 ASSERT_STREQ("-4294967296", str.c_str());
61}
62
63TEST(TestJSONVariantWriter, CanWriteUnsignedInteger64)
64{
65 CVariant variant(static_cast<int64_t>(4294967296LL));
66 std::string str;
67 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
68 ASSERT_STREQ("4294967296", str.c_str());
69}
70
71TEST(TestJSONVariantWriter, CanWriteDouble)
72{
73 CVariant variant(0.0);
74 std::string str;
75 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
76 ASSERT_STREQ("0.0", str.c_str());
77
78 variant = 1.0;
79 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
80 ASSERT_STREQ("1.0", str.c_str());
81
82 variant = -1.0;
83 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
84 ASSERT_STREQ("-1.0", str.c_str());
85}
86
87TEST(TestJSONVariantWriter, CanWriteString)
88{
89 CVariant variant("");
90 std::string str;
91 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
92 ASSERT_STREQ("\"\"", str.c_str());
93
94 variant = "foo";
95 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
96 ASSERT_STREQ("\"foo\"", str.c_str());
97
98 variant = "foo bar";
99 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
100 ASSERT_STREQ("\"foo bar\"", str.c_str());
101}
102
103TEST(TestJSONVariantWriter, CanWriteObject)
104{
105 CVariant variant(CVariant::VariantTypeObject);
106 std::string str;
107 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
108 ASSERT_STREQ("{}", str.c_str());
109
110 variant.clear();
111 variant["foo"] = "bar";
112 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
113 ASSERT_STREQ("{\n\t\"foo\": \"bar\"\n}", str.c_str());
114
115 variant.clear();
116 variant["foo"] = "bar";
117 variant["bar"] = true;
118 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
119 ASSERT_STREQ("{\n\t\"bar\": true,\n\t\"foo\": \"bar\"\n}", str.c_str());
120
121 variant.clear();
122 variant["foo"]["sub-foo"] = "bar";
123 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
124 ASSERT_STREQ("{\n\t\"foo\": {\n\t\t\"sub-foo\": \"bar\"\n\t}\n}", str.c_str());
125}
126
127TEST(TestJSONVariantWriter, CanWriteArray)
128{
129 CVariant variant(CVariant::VariantTypeArray);
130 std::string str;
131 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
132 ASSERT_STREQ("[]", str.c_str());
133
134 variant.clear();
135 variant.push_back(true);
136 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
137 ASSERT_STREQ("[\n\ttrue\n]", str.c_str());
138
139 variant.clear();
140 variant.push_back(true);
141 variant.push_back("foo");
142 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
143 ASSERT_STREQ("[\n\ttrue,\n\t\"foo\"\n]", str.c_str());
144
145 variant.clear();
146 CVariant obj(CVariant::VariantTypeObject);
147 obj["foo"] = "bar";
148 variant.push_back(obj);
149 ASSERT_TRUE(CJSONVariantWriter::Write(variant, str, false));
150 ASSERT_STREQ("[\n\t{\n\t\t\"foo\": \"bar\"\n\t}\n]", str.c_str());
151}