summaryrefslogtreecommitdiff
path: root/test/programs/symbol_program.test.cpp
blob: ef1e71c2698f2ef61130a12f3023fc96cf93dd0b (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <mbgl/test/util.hpp>

#include <mbgl/programs/symbol_program.hpp>

using namespace mbgl;

TEST(SymbolProgram, SymbolSizeBinder) {
    auto binder = SymbolSizeBinder::create(5.0f, 12.0f, 0.0f);
    auto uniformValues = binder->uniformValues(5.5f);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_zoom_constant>().t, true);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_feature_constant>().t, true);
    EXPECT_EQ(uniformValues.get<uniforms::u_size>().t, 12.0f);
    EXPECT_EQ(uniformValues.get<uniforms::u_layout_size>().t, 12.0f);

    binder = SymbolSizeBinder::create(1.0f, style::CameraFunction<float>(style::ExponentialStops<float>({
        {0.0f, 8.0f},
        {10.0f, 18.0f}
    }, 1.0f)), 0.0f);
    uniformValues = binder->uniformValues(1.5f);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_zoom_constant>().t, false);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_feature_constant>().t, true);
    EXPECT_EQ(uniformValues.get<uniforms::u_size>().t, 9.5f);
    EXPECT_EQ(uniformValues.get<uniforms::u_layout_size>().t, 10.0f);
    
    binder = SymbolSizeBinder::create(0.0f, style::CameraFunction<float>(style::ExponentialStops<float>({
        {1.0f, 8.0f},
        {11.0f, 18.0f}
    }, 1.0f)), 0.0f);
    uniformValues = binder->uniformValues(0.5f);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_zoom_constant>().t, false);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_feature_constant>().t, true);
    EXPECT_EQ(uniformValues.get<uniforms::u_size>().t, 8.0f);
    EXPECT_EQ(uniformValues.get<uniforms::u_layout_size>().t, 8.0f);
    
    binder = SymbolSizeBinder::create(12.0f, style::CameraFunction<float>(style::ExponentialStops<float>({
        {1.0f, 8.0f},
        {11.0f, 18.0f}
    }, 1.0f)), 0.0f);
    uniformValues = binder->uniformValues(12.5f);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_zoom_constant>().t, false);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_feature_constant>().t, true);
    EXPECT_EQ(uniformValues.get<uniforms::u_size>().t, 18.0f);
    EXPECT_EQ(uniformValues.get<uniforms::u_layout_size>().t, 18.0f);
    
    binder = SymbolSizeBinder::create(0.0f, style::SourceFunction<float>("x", style::ExponentialStops<float>({
        {1.0f, 8.0f},
        {11.0f, 18.0f}
    }, 1.0f)), 0.0f);
    uniformValues = binder->uniformValues(12.5f);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_zoom_constant>().t, true);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_feature_constant>().t, false);

    binder = SymbolSizeBinder::create(5.0f, style::CompositeFunction<float>("x", style::CompositeExponentialStops<float>({
        {1.0f, {{0.0f, 8.0f}, {100.0f, 18.0f}}},
        {11.0f, {{0.0f, 12.0f}, {100.0f, 24.9f}}}
    }, 1.0f)), 0.0f);
    uniformValues = binder->uniformValues(5.5f);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_zoom_constant>().t, false);
    EXPECT_EQ(uniformValues.get<uniforms::u_is_size_feature_constant>().t, false);
    EXPECT_EQ(uniformValues.get<uniforms::u_size_t>().t, 0.45f);
}