From 1ef03a1c7043d617885d319b0803d69907c3c9cc Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Mon, 28 Feb 2022 13:24:26 +0100 Subject: Pass actions and trees in analysis result as shared pointer ... to avoid unnecessary copying and moving of larger objects. --- .../build_engine/target_map/result_map.test.cpp | 53 +++++++++++++--------- 1 file changed, 31 insertions(+), 22 deletions(-) (limited to 'test/buildtool/build_engine/target_map/result_map.test.cpp') diff --git a/test/buildtool/build_engine/target_map/result_map.test.cpp b/test/buildtool/build_engine/target_map/result_map.test.cpp index 14bf0638..a0b8f0bc 100644 --- a/test/buildtool/build_engine/target_map/result_map.test.cpp +++ b/test/buildtool/build_engine/target_map/result_map.test.cpp @@ -21,12 +21,12 @@ namespace { [[nodiscard]] auto CreateAnalysedTarget( TargetResult const& result, - std::vector const& descs, + std::vector const& descs, std::vector const& blobs) -> AnalysedTargetPtr { return std::make_shared(result, descs, blobs, - std::vector(), + std::vector(), std::unordered_set{}, std::set{}); } @@ -54,34 +54,43 @@ TEST_CASE("origins creation", "[result_map]") { using BuildMaps::Base::EntityName; using BuildMaps::Target::ResultTargetMap; - auto foo = - ActionDescription{{}, {}, Action{"run_foo", {"touch", "foo"}, {}}, {}}; - auto bar = - ActionDescription{{}, {}, Action{"run_bar", {"touch", "bar"}, {}}, {}}; - auto baz = - ActionDescription{{}, {}, Action{"run_baz", {"touch", "baz"}, {}}, {}}; + auto foo = std::make_shared( + ActionDescription::outputs_t{}, + ActionDescription::outputs_t{}, + Action{"run_foo", {"touch", "foo"}, {}}, + ActionDescription::inputs_t{}); + auto bar = std::make_shared( + ActionDescription::outputs_t{}, + ActionDescription::outputs_t{}, + Action{"run_bar", {"touch", "bar"}, {}}, + ActionDescription::inputs_t{}); + auto baz = std::make_shared( + ActionDescription::outputs_t{}, + ActionDescription::outputs_t{}, + Action{"run_baz", {"touch", "baz"}, {}}, + ActionDescription::inputs_t{}); ResultTargetMap map{0}; CHECK(map.Add(EntityName{"", ".", "foobar"}, {}, CreateAnalysedTarget( - {}, std::vector{foo, bar}, {}))); - CHECK(map.Add( - EntityName{"", ".", "baz"}, - {}, - CreateAnalysedTarget({}, std::vector{baz}, {}))); + {}, std::vector{foo, bar}, {}))); + CHECK(map.Add(EntityName{"", ".", "baz"}, + {}, + CreateAnalysedTarget( + {}, std::vector{baz}, {}))); auto result = map.ToResult(); REQUIRE(result.actions.size() == 3); CHECK(result.blobs.empty()); - auto expect_foo = foo.ToJson(); - auto expect_bar = bar.ToJson(); - auto expect_baz = baz.ToJson(); + auto expect_foo = foo->ToJson(); + auto expect_bar = bar->ToJson(); + auto expect_baz = baz->ToJson(); CHECK(map.ToJson() == nlohmann::json{{"actions", - {{foo.Id(), expect_foo}, - {bar.Id(), expect_bar}, - {baz.Id(), expect_baz}}}, + {{foo->Id(), expect_foo}, + {bar->Id(), expect_bar}, + {baz->Id(), expect_baz}}}, {"blobs", nlohmann::json::array()}, {"trees", nlohmann::json::object()}}); @@ -101,9 +110,9 @@ TEST_CASE("origins creation", "[result_map]") { nlohmann::json from_file{}; file >> from_file; CHECK(from_file == nlohmann::json{{"actions", - {{foo.Id(), expect_foo}, - {bar.Id(), expect_bar}, - {baz.Id(), expect_baz}}}, + {{foo->Id(), expect_foo}, + {bar->Id(), expect_bar}, + {baz->Id(), expect_baz}}}, {"blobs", nlohmann::json::array()}, {"trees", nlohmann::json::object()}}); } -- cgit v1.2.3