summaryrefslogtreecommitdiff
path: root/json4cpp/tests/abi/inline_ns
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:42:50 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:42:50 +0300
commit5fad10f89c485cfdc7b99011f07609f8871160d4 (patch)
tree1860b39753b652dfe54d3cbbc80c875f40198d1f /json4cpp/tests/abi/inline_ns
parent292baed7ac0cf84263263966ed32ed113cae857f (diff)
parent9a737481aed085fd289f82dff1fa8c3c66627a7e (diff)
downloadProject-Tick-5fad10f89c485cfdc7b99011f07609f8871160d4.tar.gz
Project-Tick-5fad10f89c485cfdc7b99011f07609f8871160d4.zip
Add 'json4cpp/' from commit '9a737481aed085fd289f82dff1fa8c3c66627a7e'
git-subtree-dir: json4cpp git-subtree-mainline: 292baed7ac0cf84263263966ed32ed113cae857f git-subtree-split: 9a737481aed085fd289f82dff1fa8c3c66627a7e
Diffstat (limited to 'json4cpp/tests/abi/inline_ns')
-rw-r--r--json4cpp/tests/abi/inline_ns/CMakeLists.txt12
-rw-r--r--json4cpp/tests/abi/inline_ns/use_current.cpp36
-rw-r--r--json4cpp/tests/abi/inline_ns/use_v3_10_5.cpp22
3 files changed, 70 insertions, 0 deletions
diff --git a/json4cpp/tests/abi/inline_ns/CMakeLists.txt b/json4cpp/tests/abi/inline_ns/CMakeLists.txt
new file mode 100644
index 0000000000..c1a0817e09
--- /dev/null
+++ b/json4cpp/tests/abi/inline_ns/CMakeLists.txt
@@ -0,0 +1,12 @@
+# test linking an old library version without an inline namespace
+# with the current library using an inline namespace into the same executable
+
+# build test executable and add test
+add_executable(abi_compat_inline_ns
+ use_v3_10_5.cpp
+ use_current.cpp)
+target_link_libraries(abi_compat_inline_ns PRIVATE abi_compat_main)
+
+add_test(
+ NAME test-abi_compat_inline_ns
+ COMMAND abi_compat_inline_ns ${DOCTEST_TEST_FILTER})
diff --git a/json4cpp/tests/abi/inline_ns/use_current.cpp b/json4cpp/tests/abi/inline_ns/use_current.cpp
new file mode 100644
index 0000000000..45d09f9c89
--- /dev/null
+++ b/json4cpp/tests/abi/inline_ns/use_current.cpp
@@ -0,0 +1,36 @@
+// __ _____ _____ _____
+// __| | __| | | | JSON for Modern C++ (supporting code)
+// | | |__ | | | | | | version 3.12.0
+// |_____|_____|_____|_|___| https://github.com/nlohmann/json
+//
+// SPDX-FileCopyrightText: 2013-2026 Niels Lohmann <https://nlohmann.me>
+// SPDX-License-Identifier: MIT
+
+#include "doctest_compatibility.h"
+
+#include <nlohmann/json.hpp>
+
+TEST_CASE("use current library with inline namespace")
+{
+ SECTION("implicitly")
+ {
+ using nlohmann::json;
+ using nlohmann::ordered_json;
+
+ json j;
+ // In v3.10.5 mixing json_pointers of different basic_json types
+ // results in implicit string conversion
+ j[ordered_json::json_pointer("/root")] = json::object();
+ CHECK(j.dump() == "{\"root\":{}}");
+ }
+
+ SECTION("explicitly")
+ {
+ using NLOHMANN_JSON_NAMESPACE::json;
+ using NLOHMANN_JSON_NAMESPACE::ordered_json;
+
+ json j;
+ j[ordered_json::json_pointer("/root")] = json::object();
+ CHECK(j.dump() == "{\"root\":{}}");
+ }
+}
diff --git a/json4cpp/tests/abi/inline_ns/use_v3_10_5.cpp b/json4cpp/tests/abi/inline_ns/use_v3_10_5.cpp
new file mode 100644
index 0000000000..a3d08985bb
--- /dev/null
+++ b/json4cpp/tests/abi/inline_ns/use_v3_10_5.cpp
@@ -0,0 +1,22 @@
+// __ _____ _____ _____
+// __| | __| | | | JSON for Modern C++ (supporting code)
+// | | |__ | | | | | | version 3.12.0
+// |_____|_____|_____|_|___| https://github.com/nlohmann/json
+//
+// SPDX-FileCopyrightText: 2013-2026 Niels Lohmann <https://nlohmann.me>
+// SPDX-License-Identifier: MIT
+
+#include "doctest_compatibility.h"
+
+#include <nlohmann/json_v3_10_5.hpp>
+using nlohmann::json;
+using nlohmann::ordered_json;
+
+TEST_CASE("use library v3.10.5 without inline namespace")
+{
+ json j;
+ j[ordered_json::json_pointer("/root")] = json::object();
+ // In v3.10.5 mixing json_pointers of different basic_json types
+ // results in implicit string conversion
+ CHECK(j.dump() == "{\"/root\":{}}");
+}