#include #include #include #include #include #include #include using namespace mbgl; using namespace mbgl::style; using namespace mbgl::style::expression; static std::vector> toRenderLayers(const std::vector>& layers) { std::vector> result; result.reserve(layers.size()); for (auto& layer : layers) { result.push_back(RenderLayer::create(layer->baseImpl)); } return result; } TEST(GroupByLayout, Related) { std::vector> layers; layers.push_back(std::make_unique("a", "source")); layers.push_back(std::make_unique("b", "source")); auto result = groupByLayout(toRenderLayers(layers)); ASSERT_EQ(1u, result.size()); ASSERT_EQ(2u, result[0].size()); } TEST(GroupByLayout, UnrelatedType) { std::vector> layers; layers.push_back(std::make_unique("background")); layers.push_back(std::make_unique("circle", "source")); auto result = groupByLayout(toRenderLayers(layers)); ASSERT_EQ(2u, result.size()); } TEST(GroupByLayout, UnrelatedFilter) { using namespace mbgl::style::expression::dsl; std::vector> layers; auto lineLayer = std::make_unique("a", "source"); lineLayer->setFilter(Filter(get("property"))); layers.push_back(std::move(lineLayer)); layers.push_back(std::make_unique("b", "source")); auto result = groupByLayout(toRenderLayers(layers)); ASSERT_EQ(2u, result.size()); } TEST(GroupByLayout, UnrelatedLayout) { std::vector> layers; auto lineLayer = std::make_unique("a", "source"); lineLayer->setLineCap(LineCapType::Square); layers.push_back(std::move(lineLayer)); layers.push_back(std::make_unique("b", "source")); auto result = groupByLayout(toRenderLayers(layers)); ASSERT_EQ(2u, result.size()); }