@@ -40,21 +40,22 @@ namespace dds {
40
40
// Name of all the primitive fields used along the tests
41
41
static const std::vector<std::pair<std::string, std::string>> primitive_fields
42
42
{
43
- {" char_field" , " CHAR" },
44
- {" uint8_field" , " INT" },
45
- {" int16_field" , " INT" },
46
- {" uint16_field" , " INT" },
47
- {" int32_field" , " INT" },
48
- {" uint32_field" , " INT" },
49
- {" int64_field" , " INT" },
50
- {" uint64_field" , " INT" },
51
- {" float_field" , " FLOAT" },
52
- {" double_field" , " FLOAT" },
53
- {" long_double_field" , " FLOAT" },
54
- {" bool_field" , " BOOL" },
55
- {" string_field" , " STRING" },
56
- {" enum_field" , " ENUM" },
57
- {" enum2_field" , " ENUM2" }
43
+ {" char_field" , " CHAR" },
44
+ {" uint8_field" , " INT" },
45
+ {" int16_field" , " INT" },
46
+ {" uint16_field" , " INT" },
47
+ {" int32_field" , " INT" },
48
+ {" uint32_field" , " INT" },
49
+ {" int64_field" , " INT" },
50
+ {" uint64_field" , " INT" },
51
+ {" float_field" , " FLOAT" },
52
+ {" double_field" , " FLOAT" },
53
+ {" long_double_field" , " FLOAT" },
54
+ {" bool_field" , " BOOL" },
55
+ {" string_field" , " STRING" },
56
+ {" alias_string_field" , " STRING" },
57
+ {" enum_field" , " ENUM" },
58
+ {" enum2_field" , " ENUM2" }
58
59
};
59
60
60
61
static const std::map<std::string, std::set<std::string>> type_compatibility_matrix
@@ -961,13 +962,21 @@ class DDSSQLFilterValueGlobalData
961
962
for (size_t i = 0 ; i < values.size (); ++i)
962
963
{
963
964
data[i].string_field (values[i]);
965
+ data[i].alias_string_field (values[i]);
964
966
data[i].struct_field ().string_field (values[i]);
967
+ data[i].struct_field ().alias_string_field (values[i]);
965
968
data[i].array_struct_field ()[0 ].string_field (values[i]);
969
+ data[i].array_struct_field ()[0 ].alias_string_field (values[i]);
966
970
data[i].bounded_sequence_struct_field ()[0 ].string_field (values[i]);
971
+ data[i].bounded_sequence_struct_field ()[0 ].alias_string_field (values[i]);
967
972
data[i].unbounded_sequence_struct_field ()[0 ].string_field (values[i]);
973
+ data[i].unbounded_sequence_struct_field ()[0 ].alias_string_field (values[i]);
968
974
data[i].array_string_field ()[0 ] = values[i];
975
+ data[i].array_alias_string_field ()[0 ] = values[i];
969
976
data[i].bounded_sequence_string_field ().push_back (values[i]);
977
+ data[i].bounded_sequence_alias_string_field ().push_back (values[i]);
970
978
data[i].unbounded_sequence_string_field ().push_back (values[i]);
979
+ data[i].unbounded_sequence_alias_string_field ().push_back (values[i]);
971
980
}
972
981
}
973
982
@@ -1504,6 +1513,112 @@ static std::vector<DDSSQLFilterValueParams> get_test_filtered_value_string_input
1504
1513
return inputs;
1505
1514
}
1506
1515
1516
+ static std::vector<DDSSQLFilterValueParams> get_test_filtered_value_alias_string_inputs ()
1517
+ {
1518
+ static const std::array<std::pair<std::string, std::string>, 5 > values =
1519
+ {
1520
+ std::pair<std::string, std::string>{" ''" , " minus_2" },
1521
+ std::pair<std::string, std::string>{" ' '" , " minus_1" },
1522
+ std::pair<std::string, std::string>{" ' AA'" , " 0" },
1523
+ std::pair<std::string, std::string>{" ' AZ'" , " plus_1" },
1524
+ std::pair<std::string, std::string>{" 'ZZZ'" , " plus_2" }
1525
+ };
1526
+
1527
+ // Adding standard tests
1528
+ std::vector<DDSSQLFilterValueParams> inputs;
1529
+ inputs = get_test_filtered_value_inputs_given_values_and_results (" alias_string_field" , values);
1530
+
1531
+ // Adding tests for LIKE operator
1532
+ DDSSQLFilterValueParams input;
1533
+ input.test_case_name = " like_any_percent" ;
1534
+ input.expression = " alias_string_field LIKE '%'" ;
1535
+ input.samples_filtered .assign (5 , true );
1536
+ inputs.push_back (input);
1537
+
1538
+ input.test_case_name = " like_any_star" ;
1539
+ input.expression = " alias_string_field LIKE '*'" ;
1540
+ input.samples_filtered .assign (5 , true );
1541
+ inputs.push_back (input);
1542
+
1543
+ input.test_case_name = " like_space_percent" ;
1544
+ input.expression = " alias_string_field LIKE ' %'" ;
1545
+ input.samples_filtered .assign ({ false , true , true , true , false });
1546
+ inputs.push_back (input);
1547
+
1548
+ input.test_case_name = " like_space_star" ;
1549
+ input.expression = " alias_string_field LIKE ' *'" ;
1550
+ input.samples_filtered .assign ({ false , true , true , true , false });
1551
+ inputs.push_back (input);
1552
+
1553
+ input.test_case_name = " like_A_question" ;
1554
+ input.expression = " alias_string_field LIKE '?A?'" ;
1555
+ input.samples_filtered .assign ({ false , false , true , true , false });
1556
+ inputs.push_back (input);
1557
+
1558
+ input.test_case_name = " like_A_underscore" ;
1559
+ input.expression = " alias_string_field LIKE '_A_'" ;
1560
+ input.samples_filtered .assign ({ false , false , true , true , false });
1561
+ inputs.push_back (input);
1562
+
1563
+ input.test_case_name = " like_exact_empty" ;
1564
+ input.expression = " alias_string_field LIKE ''" ;
1565
+ input.samples_filtered .assign ({ true , false , false , false , false });
1566
+ inputs.push_back (input);
1567
+
1568
+ input.test_case_name = " like_exact_ZZZ" ;
1569
+ input.expression = " alias_string_field LIKE 'ZZZ'" ;
1570
+ input.samples_filtered .assign ({ false , false , false , false , true });
1571
+ inputs.push_back (input);
1572
+
1573
+ input.test_case_name = " like_exact_none" ;
1574
+ input.expression = " alias_string_field LIKE 'BBB'" ;
1575
+ input.samples_filtered .assign ({ false , false , false , false , false });
1576
+ inputs.push_back (input);
1577
+
1578
+ // Adding tests for MATCH operator
1579
+ input.test_case_name = " match_any" ;
1580
+ input.expression = " alias_string_field match '.*'" ;
1581
+ input.samples_filtered .assign (5 , true );
1582
+ inputs.push_back (input);
1583
+
1584
+ input.test_case_name = " match_space" ;
1585
+ input.expression = " alias_string_field match ' .*'" ;
1586
+ input.samples_filtered .assign ({ false , true , true , true , false });
1587
+ inputs.push_back (input);
1588
+
1589
+ input.test_case_name = " match_A" ;
1590
+ input.expression = " alias_string_field match '.A.'" ;
1591
+ input.samples_filtered .assign ({ false , false , true , true , false });
1592
+ inputs.push_back (input);
1593
+
1594
+ input.test_case_name = " match_exact_empty" ;
1595
+ input.expression = " alias_string_field match ''" ;
1596
+ input.samples_filtered .assign ({ true , false , false , false , false });
1597
+ inputs.push_back (input);
1598
+
1599
+ input.test_case_name = " match_exact_ZZZ" ;
1600
+ input.expression = " alias_string_field match 'ZZZ'" ;
1601
+ input.samples_filtered .assign ({ false , false , false , false , true });
1602
+ inputs.push_back (input);
1603
+
1604
+ input.test_case_name = " match_exact_none" ;
1605
+ input.expression = " alias_string_field match 'BBB'" ;
1606
+ input.samples_filtered .assign ({ false , false , false , false , false });
1607
+ inputs.push_back (input);
1608
+
1609
+ input.test_case_name = " match_range" ;
1610
+ input.expression = " alias_string_field match '([A-Z])+'" ;
1611
+ input.samples_filtered .assign ({ false , false , false , false , true });
1612
+ inputs.push_back (input);
1613
+
1614
+ input.test_case_name = " match_space_and_range" ;
1615
+ input.expression = " alias_string_field match ' ([A-Z])+'" ;
1616
+ input.samples_filtered .assign ({ false , false , true , true , false });
1617
+ inputs.push_back (input);
1618
+
1619
+ return inputs;
1620
+ }
1621
+
1507
1622
static std::vector<DDSSQLFilterValueParams> get_test_filtered_value_boolean_inputs ()
1508
1623
{
1509
1624
static const std::array<std::pair<std::string, std::string>, 5 > values =
@@ -2062,6 +2177,12 @@ INSTANTIATE_TEST_SUITE_P(
2062
2177
::testing::ValuesIn (get_test_filtered_value_string_inputs()),
2063
2178
DDSSQLFilterValueTests::PrintToStringParamName());
2064
2179
2180
+ INSTANTIATE_TEST_SUITE_P (
2181
+ DDSSQLFilterValueTestsAliasString,
2182
+ DDSSQLFilterValueTests,
2183
+ ::testing::ValuesIn (get_test_filtered_value_alias_string_inputs()),
2184
+ DDSSQLFilterValueTests::PrintToStringParamName());
2185
+
2065
2186
INSTANTIATE_TEST_SUITE_P (
2066
2187
DDSSQLFilterValueTestsBool,
2067
2188
DDSSQLFilterValueTests,
0 commit comments