It should be safe to invoke GeometryTileWorker::setData multiple times without invoking GeometryTileWorker::setLayers. Therefore GeometryTileWorker::redoLayout() must not consume the layers.
45 lines
1.6 KiB
C++
45 lines
1.6 KiB
C++
#include <mbgl/test/util.hpp>
|
|
|
|
#include <mbgl/style/group_by_layout.hpp>
|
|
#include <mbgl/style/layers/background_layer.hpp>
|
|
#include <mbgl/style/layers/circle_layer.hpp>
|
|
#include <mbgl/style/layers/line_layer.hpp>
|
|
|
|
using namespace mbgl;
|
|
using namespace mbgl::style;
|
|
|
|
TEST(GroupByLayout, Related) {
|
|
std::vector<std::unique_ptr<Layer>> layers;
|
|
layers.push_back(std::make_unique<LineLayer>("a", "source"));
|
|
layers.push_back(std::make_unique<LineLayer>("b", "source"));
|
|
auto result = groupByLayout(layers);
|
|
ASSERT_EQ(1u, result.size());
|
|
ASSERT_EQ(2u, result[0].size());
|
|
}
|
|
|
|
TEST(GroupByLayout, UnrelatedType) {
|
|
std::vector<std::unique_ptr<Layer>> layers;
|
|
layers.push_back(std::make_unique<BackgroundLayer>("background"));
|
|
layers.push_back(std::make_unique<CircleLayer>("circle", "source"));
|
|
auto result = groupByLayout(layers);
|
|
ASSERT_EQ(2u, result.size());
|
|
}
|
|
|
|
TEST(GroupByLayout, UnrelatedFilter) {
|
|
std::vector<std::unique_ptr<Layer>> layers;
|
|
layers.push_back(std::make_unique<LineLayer>("a", "source"));
|
|
layers.push_back(std::make_unique<LineLayer>("b", "source"));
|
|
layers[0]->as<LineLayer>()->setFilter(EqualsFilter());
|
|
auto result = groupByLayout(layers);
|
|
ASSERT_EQ(2u, result.size());
|
|
}
|
|
|
|
TEST(GroupByLayout, UnrelatedLayout) {
|
|
std::vector<std::unique_ptr<Layer>> layers;
|
|
layers.push_back(std::make_unique<LineLayer>("a", "source"));
|
|
layers.push_back(std::make_unique<LineLayer>("b", "source"));
|
|
layers[0]->as<LineLayer>()->setLineCap(LineCapType::Square);
|
|
auto result = groupByLayout(layers);
|
|
ASSERT_EQ(2u, result.size());
|
|
}
|