diff options
| author | manuel <manuel@mausz.at> | 2020-10-19 00:52:24 +0200 |
|---|---|---|
| committer | manuel <manuel@mausz.at> | 2020-10-19 00:52:24 +0200 |
| commit | be933ef2241d79558f91796cc5b3a161f72ebf9c (patch) | |
| tree | fe3ab2f130e20c99001f2d7a81d610c78c96a3f4 /xbmc/utils/test/TestJSONVariantWriter.cpp | |
| parent | 5f8335c1e49ce108ef3481863833c98efa00411b (diff) | |
| download | kodi-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/TestJSONVariantWriter.cpp')
| -rw-r--r-- | xbmc/utils/test/TestJSONVariantWriter.cpp | 151 |
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 | |||
| 14 | TEST(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 | |||
| 23 | TEST(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 | |||
| 35 | TEST(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 | |||
| 43 | TEST(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 | |||
| 55 | TEST(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 | |||
| 63 | TEST(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 | |||
| 71 | TEST(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 | |||
| 87 | TEST(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 | |||
| 103 | TEST(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 | |||
| 127 | TEST(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 | } | ||
