summaryrefslogtreecommitdiffstats
path: root/xbmc/utils/test/TestUrlOptions.cpp
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2020-10-19 00:52:24 +0200
committermanuel <manuel@mausz.at>2020-10-19 00:52:24 +0200
commitbe933ef2241d79558f91796cc5b3a161f72ebf9c (patch)
treefe3ab2f130e20c99001f2d7a81d610c78c96a3f4 /xbmc/utils/test/TestUrlOptions.cpp
parent5f8335c1e49ce108ef3481863833c98efa00411b (diff)
downloadkodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.tar.gz
kodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.tar.bz2
kodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.zip
sync with upstream
Diffstat (limited to 'xbmc/utils/test/TestUrlOptions.cpp')
-rw-r--r--xbmc/utils/test/TestUrlOptions.cpp193
1 files changed, 193 insertions, 0 deletions
diff --git a/xbmc/utils/test/TestUrlOptions.cpp b/xbmc/utils/test/TestUrlOptions.cpp
new file mode 100644
index 0000000..f684fe5
--- /dev/null
+++ b/xbmc/utils/test/TestUrlOptions.cpp
@@ -0,0 +1,193 @@
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/UrlOptions.h"
10#include "utils/Variant.h"
11
12#include <gtest/gtest.h>
13
14TEST(TestUrlOptions, Clear)
15{
16 const char *key = "foo";
17
18 CUrlOptions urlOptions;
19 urlOptions.AddOption(key, "bar");
20 EXPECT_TRUE(urlOptions.HasOption(key));
21
22 urlOptions.Clear();
23 EXPECT_FALSE(urlOptions.HasOption(key));
24}
25
26TEST(TestUrlOptions, AddOption)
27{
28 const char *keyChar = "char";
29 const char *keyString = "string";
30 const char *keyEmpty = "empty";
31 const char *keyInt = "int";
32 const char *keyFloat = "float";
33 const char *keyDouble = "double";
34 const char *keyBool = "bool";
35
36 const char *valueChar = "valueChar";
37 const std::string valueString = "valueString";
38 const char *valueEmpty = "";
39 int valueInt = 1;
40 float valueFloat = 1.0f;
41 double valueDouble = 1.0;
42 bool valueBool = true;
43
44 CVariant variantValue;
45
46 CUrlOptions urlOptions;
47 urlOptions.AddOption(keyChar, valueChar);
48 {
49 CVariant variantValue;
50 EXPECT_TRUE(urlOptions.GetOption(keyChar, variantValue));
51 EXPECT_TRUE(variantValue.isString());
52 EXPECT_STREQ(valueChar, variantValue.asString().c_str());
53 }
54
55 urlOptions.AddOption(keyString, valueString);
56 {
57 CVariant variantValue;
58 EXPECT_TRUE(urlOptions.GetOption(keyString, variantValue));
59 EXPECT_TRUE(variantValue.isString());
60 EXPECT_STREQ(valueString.c_str(), variantValue.asString().c_str());
61 }
62
63 urlOptions.AddOption(keyEmpty, valueEmpty);
64 {
65 CVariant variantValue;
66 EXPECT_TRUE(urlOptions.GetOption(keyEmpty, variantValue));
67 EXPECT_TRUE(variantValue.isString());
68 EXPECT_STREQ(valueEmpty, variantValue.asString().c_str());
69 }
70
71 urlOptions.AddOption(keyInt, valueInt);
72 {
73 CVariant variantValue;
74 EXPECT_TRUE(urlOptions.GetOption(keyInt, variantValue));
75 EXPECT_TRUE(variantValue.isInteger());
76 EXPECT_EQ(valueInt, (int)variantValue.asInteger());
77 }
78
79 urlOptions.AddOption(keyFloat, valueFloat);
80 {
81 CVariant variantValue;
82 EXPECT_TRUE(urlOptions.GetOption(keyFloat, variantValue));
83 EXPECT_TRUE(variantValue.isDouble());
84 EXPECT_EQ(valueFloat, variantValue.asFloat());
85 }
86
87 urlOptions.AddOption(keyDouble, valueDouble);
88 {
89 CVariant variantValue;
90 EXPECT_TRUE(urlOptions.GetOption(keyDouble, variantValue));
91 EXPECT_TRUE(variantValue.isDouble());
92 EXPECT_EQ(valueDouble, variantValue.asDouble());
93 }
94
95 urlOptions.AddOption(keyBool, valueBool);
96 {
97 CVariant variantValue;
98 EXPECT_TRUE(urlOptions.GetOption(keyBool, variantValue));
99 EXPECT_TRUE(variantValue.isBoolean());
100 EXPECT_EQ(valueBool, variantValue.asBoolean());
101 }
102}
103
104TEST(TestUrlOptions, AddOptions)
105{
106 std::string ref = "foo=bar&key=value";
107
108 CUrlOptions urlOptions(ref);
109 {
110 CVariant value;
111 EXPECT_TRUE(urlOptions.GetOption("foo", value));
112 EXPECT_TRUE(value.isString());
113 EXPECT_STREQ("bar", value.asString().c_str());
114 }
115 {
116 CVariant value;
117 EXPECT_TRUE(urlOptions.GetOption("key", value));
118 EXPECT_TRUE(value.isString());
119 EXPECT_STREQ("value", value.asString().c_str());
120 }
121
122 ref = "foo=bar&key";
123 urlOptions.Clear();
124 urlOptions.AddOptions(ref);
125 {
126 CVariant value;
127 EXPECT_TRUE(urlOptions.GetOption("foo", value));
128 EXPECT_TRUE(value.isString());
129 EXPECT_STREQ("bar", value.asString().c_str());
130 }
131 {
132 CVariant value;
133 EXPECT_TRUE(urlOptions.GetOption("key", value));
134 EXPECT_TRUE(value.isString());
135 EXPECT_TRUE(value.empty());
136 }
137}
138
139TEST(TestUrlOptions, RemoveOption)
140{
141 const char *key = "foo";
142
143 CUrlOptions urlOptions;
144 urlOptions.AddOption(key, "bar");
145 EXPECT_TRUE(urlOptions.HasOption(key));
146
147 urlOptions.RemoveOption(key);
148 EXPECT_FALSE(urlOptions.HasOption(key));
149}
150
151TEST(TestUrlOptions, HasOption)
152{
153 const char *key = "foo";
154
155 CUrlOptions urlOptions;
156 urlOptions.AddOption(key, "bar");
157 EXPECT_TRUE(urlOptions.HasOption(key));
158 EXPECT_FALSE(urlOptions.HasOption("bar"));
159}
160
161TEST(TestUrlOptions, GetOptions)
162{
163 const char *key1 = "foo";
164 const char *key2 = "key";
165 const char *value1 = "bar";
166 const char *value2 = "value";
167
168 CUrlOptions urlOptions;
169 urlOptions.AddOption(key1, value1);
170 urlOptions.AddOption(key2, value2);
171 const CUrlOptions::UrlOptions &options = urlOptions.GetOptions();
172 EXPECT_FALSE(options.empty());
173 EXPECT_EQ(2U, options.size());
174
175 CUrlOptions::UrlOptions::const_iterator it1 = options.find(key1);
176 EXPECT_TRUE(it1 != options.end());
177 CUrlOptions::UrlOptions::const_iterator it2 = options.find(key2);
178 EXPECT_TRUE(it2 != options.end());
179 EXPECT_FALSE(options.find("wrong") != options.end());
180 EXPECT_TRUE(it1->second.isString());
181 EXPECT_TRUE(it2->second.isString());
182 EXPECT_STREQ(value1, it1->second.asString().c_str());
183 EXPECT_STREQ(value2, it2->second.asString().c_str());
184}
185
186TEST(TestUrlOptions, GetOptionsString)
187{
188 const char *ref = "foo=bar&key";
189
190 CUrlOptions urlOptions(ref);
191 std::string value = urlOptions.GetOptionsString();
192 EXPECT_STREQ(ref, value.c_str());
193}