summaryrefslogtreecommitdiff
path: root/test/geometry/line_atlas.test.cpp
blob: 960e4ad7ad9acdd46c604aa1d5b22d8ad166f53f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <mbgl/test/util.hpp>

#include <mbgl/geometry/line_atlas.hpp>

#include <random>

using namespace mbgl;

TEST(LineAtlas, Random) {
    std::mt19937 generator(42); // Use the same seed for reproducible tests.
    std::uniform_int_distribution<size_t> countDistribution(0, 12);
    std::uniform_int_distribution<size_t> capStyleDistribution(0, 1);
    std::normal_distribution<float> lengthDistribution(3, 5);

    for (size_t it = 0; it < 100; it++) {
        LineAtlas atlas{ Size{ 128, 1024 } };
        std::vector<float> dasharray;
        dasharray.reserve(8);
        for (size_t j = 0; j < 100; j++) {
            dasharray.resize(0);
            const size_t count = countDistribution(generator);
            for (size_t i = 0; i < count; i++) {
                dasharray.push_back(lengthDistribution(generator));
            }
            const LinePatternCap patternCap =
                capStyleDistribution(generator) > 0 ? LinePatternCap::Round : LinePatternCap::Square;

            atlas.addDash(dasharray, patternCap);
        }
    }
}