summaryrefslogtreecommitdiff
path: root/test/style/style_parser.test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/style/style_parser.test.cpp')
-rw-r--r--test/style/style_parser.test.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/test/style/style_parser.test.cpp b/test/style/style_parser.test.cpp
index 5fa81b47e9..7f7c06f4c5 100644
--- a/test/style/style_parser.test.cpp
+++ b/test/style/style_parser.test.cpp
@@ -102,3 +102,78 @@ TEST(StyleParser, FontStacks) {
ASSERT_EQ(FontStack({"a", "b"}), result[1]);
ASSERT_EQ(FontStack({"a", "b", "c"}), result[2]);
}
+
+TEST(StyleParser, FontStacksCaseExpression) {
+ style::Parser parser;
+ parser.parse(R"({
+ "version": 8,
+ "layers": [{
+ "id": "symbol",
+ "type": "symbol",
+ "source": "vector",
+ "layout": {
+ "text-font": ["case", ["==", "a", ["string", ["get", "text-font"]]], ["literal", ["Arial"]], ["literal", ["Helvetica"]]]
+ }
+ }]
+ })");
+ auto result = parser.fontStacks();
+ ASSERT_EQ(2u, result.size());
+ ASSERT_EQ(FontStack({"Arial"}), result[0]);
+ ASSERT_EQ(FontStack({"Helvetica"}), result[1]);
+}
+
+TEST(StyleParser, FontStacksMatchExpression) {
+ style::Parser parser;
+ parser.parse(R"({
+ "version": 8,
+ "layers": [{
+ "id": "symbol",
+ "type": "symbol",
+ "source": "vector",
+ "layout": {
+ "text-font": ["match", ["get", "text-font"], "a", ["literal", ["Arial"]], ["literal", ["Helvetica"]]]
+ }
+ }]
+ })");
+ auto result = parser.fontStacks();
+ ASSERT_EQ(2u, result.size());
+ ASSERT_EQ(FontStack({"Arial"}), result[0]);
+ ASSERT_EQ(FontStack({"Helvetica"}), result[1]);
+}
+
+TEST(StyleParser, FontStacksStepExpression) {
+ style::Parser parser;
+ parser.parse(R"({
+ "version": 8,
+ "layers": [{
+ "id": "symbol",
+ "type": "symbol",
+ "source": "vector",
+ "layout": {
+ "text-font": ["array", "string", ["step", ["get", "text-font"], ["literal", ["Arial"]], 0, ["literal", ["Helvetica"]]]]
+ }
+ }]
+ })");
+ auto result = parser.fontStacks();
+ ASSERT_EQ(2u, result.size());
+ ASSERT_EQ(FontStack({"Arial"}), result[0]);
+ ASSERT_EQ(FontStack({"Helvetica"}), result[1]);
+}
+
+TEST(StyleParser, FontStacksGetExpression) {
+ // Invalid style, but not currently validated.
+ style::Parser parser;
+ parser.parse(R"({
+ "version": 8,
+ "layers": [{
+ "id": "symbol",
+ "type": "symbol",
+ "source": "vector",
+ "layout": {
+ "text-font": ["array", "string", ["get", "text-font"]]
+ }
+ }]
+ })");
+ auto result = parser.fontStacks();
+ ASSERT_EQ(0u, result.size());
+}