@@ -46,22 +46,27 @@ def testColorAsHslaComponents(self):
46
46
47
47
def testParseInterpolateColorByZoom (self ):
48
48
conversion_context = QgsMapBoxGlStyleConversionContext ()
49
- self .assertEqual (QgsMapBoxGlStyleConverter .parseInterpolateColorByZoom ({}, conversion_context ).isActive (),
49
+ props , default_col = QgsMapBoxGlStyleConverter .parseInterpolateColorByZoom ({}, conversion_context )
50
+ self .assertEqual (props .isActive (),
50
51
False )
51
- self .assertEqual (QgsMapBoxGlStyleConverter .parseInterpolateColorByZoom ({'base' : 1 ,
52
- 'stops' : [[0 , '#f1f075' ],
53
- [150 , '#b52e3e' ],
54
- [250 , '#e55e5e' ]]
55
- },
56
- conversion_context ).expressionString (),
52
+ props , default_col = QgsMapBoxGlStyleConverter .parseInterpolateColorByZoom ({'base' : 1 ,
53
+ 'stops' : [[0 , '#f1f075' ],
54
+ [150 , '#b52e3e' ],
55
+ [250 , '#e55e5e' ]]
56
+ },
57
+ conversion_context )
58
+ self .assertEqual (props .expressionString (),
57
59
'CASE WHEN @zoom_level >= 0 AND @zoom_level < 150 THEN color_hsla(scale_linear(@zoom_level, 0, 150, 59, 352), scale_linear(@zoom_level, 0, 150, 81, 59), scale_linear(@zoom_level, 0, 150, 70, 44), scale_linear(@zoom_level, 0, 150, 255, 255)) WHEN @zoom_level >= 150 AND @zoom_level < 250 THEN color_hsla(scale_linear(@zoom_level, 150, 250, 352, 0), scale_linear(@zoom_level, 150, 250, 59, 72), scale_linear(@zoom_level, 150, 250, 44, 63), scale_linear(@zoom_level, 150, 250, 255, 255)) WHEN @zoom_level >= 250 THEN color_hsla(0, 72, 63, 255) ELSE color_hsla(0, 72, 63, 255) END' )
58
- self .assertEqual (QgsMapBoxGlStyleConverter .parseInterpolateColorByZoom ({'base' : 2 ,
59
- 'stops' : [[0 , '#f1f075' ],
60
- [150 , '#b52e3e' ],
61
- [250 , '#e55e5e' ]]
62
- },
63
- conversion_context ).expressionString (),
60
+ self .assertEqual (default_col .name (), '#f1f075' )
61
+ props , default_col = QgsMapBoxGlStyleConverter .parseInterpolateColorByZoom ({'base' : 2 ,
62
+ 'stops' : [[0 , '#f1f075' ],
63
+ [150 , '#b52e3e' ],
64
+ [250 , '#e55e5e' ]]
65
+ },
66
+ conversion_context )
67
+ self .assertEqual (props .expressionString (),
64
68
'CASE WHEN @zoom_level >= 0 AND @zoom_level < 150 THEN color_hsla(59 + 293 * (2^(@zoom_level-0)-1)/(2^(150-0)-1), 81 + -22 * (2^(@zoom_level-0)-1)/(2^(150-0)-1), 70 + -26 * (2^(@zoom_level-0)-1)/(2^(150-0)-1), 255 + 0 * (2^(@zoom_level-0)-1)/(2^(150-0)-1)) WHEN @zoom_level >= 150 AND @zoom_level < 250 THEN color_hsla(352 + -352 * (2^(@zoom_level-150)-1)/(2^(250-150)-1), 59 + 13 * (2^(@zoom_level-150)-1)/(2^(250-150)-1), 44 + 19 * (2^(@zoom_level-150)-1)/(2^(250-150)-1), 255 + 0 * (2^(@zoom_level-150)-1)/(2^(250-150)-1)) WHEN @zoom_level >= 250 THEN color_hsla(0, 72, 63, 255) ELSE color_hsla(0, 72, 63, 255) END' )
69
+ self .assertEqual (default_col .name (), '#f1f075' )
65
70
66
71
def testParseStops (self ):
67
72
conversion_context = QgsMapBoxGlStyleConversionContext ()
@@ -74,22 +79,28 @@ def testParseStops(self):
74
79
75
80
def testInterpolateByZoom (self ):
76
81
conversion_context = QgsMapBoxGlStyleConversionContext ()
77
- self .assertEqual (QgsMapBoxGlStyleConverter .parseInterpolateByZoom ({'base' : 1 ,
78
- 'stops' : [[0 , 11 ],
79
- [150 , 15 ],
80
- [250 , 22 ]]
81
- }, conversion_context ).expressionString (),
82
+ prop , default_val = QgsMapBoxGlStyleConverter .parseInterpolateByZoom ({'base' : 1 ,
83
+ 'stops' : [[0 , 11 ],
84
+ [150 , 15 ],
85
+ [250 , 22 ]]
86
+ }, conversion_context )
87
+ self .assertEqual (prop .expressionString (),
82
88
'CASE WHEN @zoom_level > 0 AND @zoom_level <= 150 THEN scale_linear(@zoom_level, 0, 150, 11, 15) * 1 WHEN @zoom_level > 150 AND @zoom_level <= 250 THEN scale_linear(@zoom_level, 150, 250, 15, 22) * 1 END' )
83
- self .assertEqual (QgsMapBoxGlStyleConverter .parseInterpolateByZoom ({'base' : 1 ,
84
- 'stops' : [[0 , 11 ],
85
- [150 , 15 ]]
86
- }, conversion_context ).expressionString (),
89
+ self .assertEqual (default_val , 11.0 )
90
+ prop , default_val = QgsMapBoxGlStyleConverter .parseInterpolateByZoom ({'base' : 1 ,
91
+ 'stops' : [[0 , 11 ],
92
+ [150 , 15 ]]
93
+ }, conversion_context )
94
+ self .assertEqual (prop .expressionString (),
87
95
'scale_linear(@zoom_level, 0, 150, 11, 15) * 1' )
88
- self .assertEqual (QgsMapBoxGlStyleConverter .parseInterpolateByZoom ({'base' : 2 ,
89
- 'stops' : [[0 , 11 ],
90
- [150 , 15 ]]
91
- }, conversion_context ).expressionString (),
96
+ self .assertEqual (default_val , 11.0 )
97
+ prop , default_val = QgsMapBoxGlStyleConverter .parseInterpolateByZoom ({'base' : 2 ,
98
+ 'stops' : [[0 , 11 ],
99
+ [150 , 15 ]]
100
+ }, conversion_context )
101
+ self .assertEqual (prop .expressionString (),
92
102
'11 + 4 * (2^(@zoom_level-0)-1)/(2^(150-0)-1)* 1' )
103
+ self .assertEqual (default_val , 11.0 )
93
104
94
105
def testInterpolateOpacityByZoom (self ):
95
106
self .assertEqual (QgsMapBoxGlStyleConverter .parseInterpolateOpacityByZoom ({'base' : 1 ,
@@ -111,7 +122,7 @@ def testInterpolateOpacityByZoom(self):
111
122
112
123
def testInterpolateListByZoom (self ):
113
124
conversion_context = QgsMapBoxGlStyleConversionContext ()
114
- self . assertEqual ( QgsMapBoxGlStyleConverter .parseInterpolateListByZoom ([
125
+ prop , default_color , default_val = QgsMapBoxGlStyleConverter .parseInterpolateListByZoom ([
115
126
"interpolate" ,
116
127
["linear" ],
117
128
["zoom" ],
@@ -121,9 +132,11 @@ def testInterpolateListByZoom(self):
121
132
0.3 ,
122
133
18 ,
123
134
0.6
124
- ], QgsMapBoxGlStyleConverter .Opacity , conversion_context , 2 ).expressionString (),
125
- "CASE WHEN @zoom_level < 10 THEN set_color_part(@symbol_color, 'alpha', 0.1 * 255) WHEN @zoom_level >= 10 AND @zoom_level < 15 THEN set_color_part(@symbol_color, 'alpha', scale_linear(@zoom_level, 10, 15, 0.1 * 255, 0.3 * 255)) WHEN @zoom_level >= 15 AND @zoom_level < 18 THEN set_color_part(@symbol_color, 'alpha', scale_linear(@zoom_level, 15, 18, 0.3 * 255, 0.6 * 255)) WHEN @zoom_level >= 18 THEN set_color_part(@symbol_color, 'alpha', 0.6) END" )
126
- self .assertEqual (QgsMapBoxGlStyleConverter .parseInterpolateListByZoom ([
135
+ ], QgsMapBoxGlStyleConverter .Opacity , conversion_context , 2 )
136
+ self .assertEqual (prop .expressionString (),
137
+ "CASE WHEN @zoom_level < 10 THEN set_color_part(@symbol_color, 'alpha', 0.1 * 255) WHEN @zoom_level >= 10 AND @zoom_level < 15 THEN set_color_part(@symbol_color, 'alpha', scale_linear(@zoom_level, 10, 15, 0.1 * 255, 0.3 * 255)) WHEN @zoom_level >= 15 AND @zoom_level < 18 THEN set_color_part(@symbol_color, 'alpha', scale_linear(@zoom_level, 15, 18, 0.3 * 255, 0.6 * 255)) WHEN @zoom_level >= 18 THEN set_color_part(@symbol_color, 'alpha', 0.6) END" )
138
+
139
+ prop , default_color , default_val = QgsMapBoxGlStyleConverter .parseInterpolateListByZoom ([
127
140
"interpolate" ,
128
141
["linear" ],
129
142
["zoom" ],
@@ -133,8 +146,10 @@ def testInterpolateListByZoom(self):
133
146
0.3 ,
134
147
18 ,
135
148
0.6
136
- ], QgsMapBoxGlStyleConverter .Numeric , conversion_context , 2 ).expressionString (),
137
- "CASE WHEN @zoom_level > 10 AND @zoom_level <= 15 THEN scale_linear(@zoom_level, 10, 15, 0.1, 0.3) * 2 WHEN @zoom_level > 15 AND @zoom_level <= 18 THEN scale_linear(@zoom_level, 15, 18, 0.3, 0.6) * 2 END" )
149
+ ], QgsMapBoxGlStyleConverter .Numeric , conversion_context , 2 )
150
+ self .assertEqual (prop .expressionString (),
151
+ "CASE WHEN @zoom_level > 10 AND @zoom_level <= 15 THEN scale_linear(@zoom_level, 10, 15, 0.1, 0.3) * 2 WHEN @zoom_level > 15 AND @zoom_level <= 18 THEN scale_linear(@zoom_level, 15, 18, 0.3, 0.6) * 2 END" )
152
+ self .assertEqual (default_val , 0.2 )
138
153
139
154
def testParseExpression (self ):
140
155
conversion_context = QgsMapBoxGlStyleConversionContext ()
0 commit comments