| // Copyright (c) 2019 Pantor. All rights reserved. |
| |
| #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN |
| |
| #include "doctest/doctest.h" |
| #include "inja/inja.hpp" |
| |
| using json = nlohmann::json; |
| |
| TEST_CASE("copy-environment") { |
| inja::Environment env; |
| env.add_callback("double", 1, [](inja::Arguments &args) { |
| int number = args.at(0)->get<int>(); |
| return 2 * number; |
| }); |
| |
| inja::Template t1 = env.parse("{{ double(2) }}"); |
| env.include_template("tpl", t1); |
| std::string test_tpl = "{% include \"tpl\" %}"; |
| |
| REQUIRE(env.render(test_tpl, json()) == "4"); |
| |
| inja::Environment copy(env); |
| CHECK(copy.render(test_tpl, json()) == "4"); |
| |
| // overwrite template in source env |
| inja::Template t2 = env.parse("{{ double(4) }}"); |
| env.include_template("tpl", t2); |
| REQUIRE(env.render(test_tpl, json()) == "8"); |
| |
| // template is unchanged in copy |
| CHECK(copy.render(test_tpl, json()) == "4"); |
| } |