// 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(); 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"); }