summaryrefslogtreecommitdiffstats
path: root/document/src/tests/documentselectparsertest.cpp
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@verizonmedia.com>2020-09-09 12:14:34 +0000
committerTor Brede Vekterli <vekterli@verizonmedia.com>2020-09-09 12:33:16 +0000
commita77bd571f62a602f45c2da58ce5f52d89265646d (patch)
treecce6ef523f58e148acea8de9430004d2b0d448cc /document/src/tests/documentselectparsertest.cpp
parent95197a41a32a6d28c016c0e7c12b53705283a669 (diff)
Support 'id' as field name in C++ document selection lexing/parsing
'id' is normally a reserved keyword and wasn't explicitly allowed for the purpose of field name identifiers. Change `ID` to be lexed as a string token to allow for preserving the original casing when used as an identifier.
Diffstat (limited to 'document/src/tests/documentselectparsertest.cpp')
-rw-r--r--document/src/tests/documentselectparsertest.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/document/src/tests/documentselectparsertest.cpp b/document/src/tests/documentselectparsertest.cpp
index 6fd9ab80faa..30b2bfbb1b4 100644
--- a/document/src/tests/documentselectparsertest.cpp
+++ b/document/src/tests/documentselectparsertest.cpp
@@ -94,9 +94,11 @@ void DocumentSelectParserTest::SetUp()
Struct("usergroup.header"),
Struct("usergroup.body"));
builder.document(875463456, "user",
- Struct("user.header"), Struct("user.body"));
+ Struct("user.header").addField("id", DataType::T_INT),
+ Struct("user.body"));
builder.document(567463442, "group",
- Struct("group.header"), Struct("group.body"));
+ Struct("group.header").addField("iD", DataType::T_INT),
+ Struct("group.body"));
_repo = std::make_unique<DocumentTypeRepo>(builder.config());
_parser = std::make_unique<select::Parser>(*_repo, _bucketIdFactory);
@@ -1455,6 +1457,9 @@ TEST_F(DocumentSelectParserTest, special_tokens_are_allowed_as_freestanding_iden
EXPECT_EQ("(== (ID id.user) (FIELD user user))", parse_to_tree("id.user == user.user"));
EXPECT_EQ("(NOT (DOCTYPE group))", parse_to_tree("not group"));
EXPECT_EQ("(== (ID id.group) (FIELD group group))", parse_to_tree("id.group == group.group"));
+ EXPECT_EQ("(== (FIELD user id) (ID id.user))", parse_to_tree("user.id == id.user"));
+ // Case is preserved for special ID field
+ EXPECT_EQ("(== (FIELD group iD) (ID id.user))", parse_to_tree("group.iD == id.user"));
}
TEST_F(DocumentSelectParserTest, test_can_build_field_value_from_field_expr_node)