summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2021-03-17 09:36:17 +0000
committerArne Juul <arnej@verizonmedia.com>2021-03-17 09:36:21 +0000
commit7d1c39896e70c4fb4754de006ed62355c8d6bd69 (patch)
tree218beb72233a315394c10d3b23edca5fafdd4ca6 /eval
parente91a0341b66180d8a0ac8f1a8f17b0fcd4e5a30f (diff)
allow capital letters as dimension names
* also, normalize generated TensorSpec
Diffstat (limited to 'eval')
-rw-r--r--eval/src/tests/eval/gen_spec/gen_spec_test.cpp9
-rw-r--r--eval/src/vespa/eval/eval/test/gen_spec.cpp10
2 files changed, 16 insertions, 3 deletions
diff --git a/eval/src/tests/eval/gen_spec/gen_spec_test.cpp b/eval/src/tests/eval/gen_spec/gen_spec_test.cpp
index 304eac1eb09..0d620873b07 100644
--- a/eval/src/tests/eval/gen_spec/gen_spec_test.cpp
+++ b/eval/src/tests/eval/gen_spec/gen_spec_test.cpp
@@ -254,6 +254,15 @@ TEST(GenSpecFromDescTest, multi_character_sizes_work) {
EXPECT_EQ(gen_desc, expect);
}
+TEST(GenSpecFromDescTest, capital_letter_allowed) {
+ // 'A2_1b3C4'
+ auto expect = GenSpec().map("A", 2).idx("b", 3).idx("C", 4).gen();
+ auto dim_desc = GenSpec().desc("A2_1").desc("b3").desc("C4").gen();
+ auto gen_desc = GenSpec::from_desc("A2_1b3C4").gen();
+ EXPECT_EQ(dim_desc, expect);
+ EXPECT_EQ(gen_desc, expect);
+}
+
//-----------------------------------------------------------------------------
GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/eval/src/vespa/eval/eval/test/gen_spec.cpp b/eval/src/vespa/eval/eval/test/gen_spec.cpp
index 1f7c658ff79..913c23200ff 100644
--- a/eval/src/vespa/eval/eval/test/gen_spec.cpp
+++ b/eval/src/vespa/eval/eval/test/gen_spec.cpp
@@ -53,6 +53,12 @@ DimSpec::make_dict(size_t size, size_t stride, const vespalib::string &prefix)
return dict;
}
+namespace {
+auto is_dim_name = [](char c) {
+ return ((c >= 'a') && (c <= 'z'))
+ || ((c >= 'A') && (c <= 'Z')); };
+}
+
// 'a2' -> DimSpec("a", 2);
// 'b2_3' -> DimSpec("b", make_dict(2, 3, ""));
DimSpec
@@ -63,7 +69,6 @@ DimSpec::from_desc(const vespalib::string &desc)
auto is_num = [](char c) { return ((c >= '0') && (c <= '9')); };
auto as_num = [](char c) { return size_t(c - '0'); };
auto is_map_tag = [](char c) { return (c == '_'); };
- auto is_dim_name = [](char c) { return ((c >= 'a') && (c <= 'z')); };
auto extract_number = [&]() {
assert(idx < desc.size());
assert(is_num(desc[idx]));
@@ -98,7 +103,6 @@ GenSpec::from_desc(const vespalib::string &desc)
size_t idx = 0;
vespalib::string dim_desc;
std::vector<DimSpec> dim_list;
- auto is_dim_name = [](char c) { return ((c >= 'a') && (c <= 'z')); };
while (idx < desc.size()) {
dim_desc.clear();
assert(is_dim_name(desc[idx]));
@@ -155,7 +159,7 @@ GenSpec::gen() const
}
};
add_cells(0);
- return result;
+ return result.normalize();
}
} // namespace