diff options
| author | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-02 18:42:50 +0300 |
|---|---|---|
| committer | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-02 18:42:50 +0300 |
| commit | 5fad10f89c485cfdc7b99011f07609f8871160d4 (patch) | |
| tree | 1860b39753b652dfe54d3cbbc80c875f40198d1f /json4cpp/tests/src/unit-no-mem-leak-on-adl-serialize.cpp | |
| parent | 292baed7ac0cf84263263966ed32ed113cae857f (diff) | |
| parent | 9a737481aed085fd289f82dff1fa8c3c66627a7e (diff) | |
| download | Project-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/src/unit-no-mem-leak-on-adl-serialize.cpp')
| -rw-r--r-- | json4cpp/tests/src/unit-no-mem-leak-on-adl-serialize.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/json4cpp/tests/src/unit-no-mem-leak-on-adl-serialize.cpp b/json4cpp/tests/src/unit-no-mem-leak-on-adl-serialize.cpp new file mode 100644 index 0000000000..469fc2c75f --- /dev/null +++ b/json4cpp/tests/src/unit-no-mem-leak-on-adl-serialize.cpp @@ -0,0 +1,86 @@ +// __ _____ _____ _____ +// __| | __| | | | 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> +#include <exception> +#include <iostream> + +struct Foo +{ + int a; + int b; +}; + +namespace nlohmann +{ +template <> +struct adl_serializer<Foo> +{ + static void to_json(json& j, Foo const& f) + { + switch (f.b) + { + case 0: + j["a"] = f.a; + break; + case 1: + j[0] = f.a; + break; + default: + j = "test"; + } + if (f.a == 1) + { + throw std::runtime_error("b is invalid"); + } + } +}; +} // namespace nlohmann + +TEST_CASE("check_for_mem_leak_on_adl_to_json-1") +{ + try + { + const nlohmann::json j = Foo {1, 0}; + std::cout << j.dump() << "\n"; + } + catch (...) // NOLINT(bugprone-empty-catch) + { + // just ignore the exception in this POC + } +} + +TEST_CASE("check_for_mem_leak_on_adl_to_json-2") +{ + try + { + const nlohmann::json j = Foo {1, 1}; + std::cout << j.dump() << "\n"; + } + catch (...) // NOLINT(bugprone-empty-catch) + { + // just ignore the exception in this POC + } +} + +TEST_CASE("check_for_mem_leak_on_adl_to_json-2") +{ + try + { + const nlohmann::json j = Foo {1, 2}; + std::cout << j.dump() << "\n"; + } + catch (...) // NOLINT(bugprone-empty-catch) + { + // just ignore the exception in this POC + } +} + + |
