@@ -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
@@ -1474,6 +1483,112 @@ static std::vector<DDSSQLFilterValueParams> get_test_filtered_value_string_input
1474
1483
return inputs;
1475
1484
}
1476
1485
1486
+ static std::vector<DDSSQLFilterValueParams> get_test_filtered_value_alias_string_inputs ()
1487
+ {
1488
+ static const std::array<std::pair<std::string, std::string>, 5 > values =
1489
+ {
1490
+ std::pair<std::string, std::string>{" ''" , " minus_2" },
1491
+ std::pair<std::string, std::string>{" ' '" , " minus_1" },
1492
+ std::pair<std::string, std::string>{" ' AA'" , " 0" },
1493
+ std::pair<std::string, std::string>{" ' AZ'" , " plus_1" },
1494
+ std::pair<std::string, std::string>{" 'ZZZ'" , " plus_2" }
1495
+ };
1496
+
1497
+ // Adding standard tests
1498
+ std::vector<DDSSQLFilterValueParams> inputs;
1499
+ inputs = get_test_filtered_value_inputs_given_values_and_results (" alias_string_field" , values);
1500
+
1501
+ // Adding tests for LIKE operator
1502
+ DDSSQLFilterValueParams input;
1503
+ input.test_case_name = " like_any_percent" ;
1504
+ input.expression = " alias_string_field LIKE '%'" ;
1505
+ input.samples_filtered .assign (5 , true );
1506
+ inputs.push_back (input);
1507
+
1508
+ input.test_case_name = " like_any_star" ;
1509
+ input.expression = " alias_string_field LIKE '*'" ;
1510
+ input.samples_filtered .assign (5 , true );
1511
+ inputs.push_back (input);
1512
+
1513
+ input.test_case_name = " like_space_percent" ;
1514
+ input.expression = " alias_string_field LIKE ' %'" ;
1515
+ input.samples_filtered .assign ({ false , true , true , true , false });
1516
+ inputs.push_back (input);
1517
+
1518
+ input.test_case_name = " like_space_star" ;
1519
+ input.expression = " alias_string_field LIKE ' *'" ;
1520
+ input.samples_filtered .assign ({ false , true , true , true , false });
1521
+ inputs.push_back (input);
1522
+
1523
+ input.test_case_name = " like_A_question" ;
1524
+ input.expression = " alias_string_field LIKE '?A?'" ;
1525
+ input.samples_filtered .assign ({ false , false , true , true , false });
1526
+ inputs.push_back (input);
1527
+
1528
+ input.test_case_name = " like_A_underscore" ;
1529
+ input.expression = " alias_string_field LIKE '_A_'" ;
1530
+ input.samples_filtered .assign ({ false , false , true , true , false });
1531
+ inputs.push_back (input);
1532
+
1533
+ input.test_case_name = " like_exact_empty" ;
1534
+ input.expression = " alias_string_field LIKE ''" ;
1535
+ input.samples_filtered .assign ({ true , false , false , false , false });
1536
+ inputs.push_back (input);
1537
+
1538
+ input.test_case_name = " like_exact_ZZZ" ;
1539
+ input.expression = " alias_string_field LIKE 'ZZZ'" ;
1540
+ input.samples_filtered .assign ({ false , false , false , false , true });
1541
+ inputs.push_back (input);
1542
+
1543
+ input.test_case_name = " like_exact_none" ;
1544
+ input.expression = " alias_string_field LIKE 'BBB'" ;
1545
+ input.samples_filtered .assign ({ false , false , false , false , false });
1546
+ inputs.push_back (input);
1547
+
1548
+ // Adding tests for MATCH operator
1549
+ input.test_case_name = " match_any" ;
1550
+ input.expression = " alias_string_field match '.*'" ;
1551
+ input.samples_filtered .assign (5 , true );
1552
+ inputs.push_back (input);
1553
+
1554
+ input.test_case_name = " match_space" ;
1555
+ input.expression = " alias_string_field match ' .*'" ;
1556
+ input.samples_filtered .assign ({ false , true , true , true , false });
1557
+ inputs.push_back (input);
1558
+
1559
+ input.test_case_name = " match_A" ;
1560
+ input.expression = " alias_string_field match '.A.'" ;
1561
+ input.samples_filtered .assign ({ false , false , true , true , false });
1562
+ inputs.push_back (input);
1563
+
1564
+ input.test_case_name = " match_exact_empty" ;
1565
+ input.expression = " alias_string_field match ''" ;
1566
+ input.samples_filtered .assign ({ true , false , false , false , false });
1567
+ inputs.push_back (input);
1568
+
1569
+ input.test_case_name = " match_exact_ZZZ" ;
1570
+ input.expression = " alias_string_field match 'ZZZ'" ;
1571
+ input.samples_filtered .assign ({ false , false , false , false , true });
1572
+ inputs.push_back (input);
1573
+
1574
+ input.test_case_name = " match_exact_none" ;
1575
+ input.expression = " alias_string_field match 'BBB'" ;
1576
+ input.samples_filtered .assign ({ false , false , false , false , false });
1577
+ inputs.push_back (input);
1578
+
1579
+ input.test_case_name = " match_range" ;
1580
+ input.expression = " alias_string_field match '([A-Z])+'" ;
1581
+ input.samples_filtered .assign ({ false , false , false , false , true });
1582
+ inputs.push_back (input);
1583
+
1584
+ input.test_case_name = " match_space_and_range" ;
1585
+ input.expression = " alias_string_field match ' ([A-Z])+'" ;
1586
+ input.samples_filtered .assign ({ false , false , true , true , false });
1587
+ inputs.push_back (input);
1588
+
1589
+ return inputs;
1590
+ }
1591
+
1477
1592
static std::vector<DDSSQLFilterValueParams> get_test_filtered_value_boolean_inputs ()
1478
1593
{
1479
1594
static const std::array<std::pair<std::string, std::string>, 5 > values =
@@ -2032,6 +2147,12 @@ INSTANTIATE_TEST_SUITE_P(
2032
2147
::testing::ValuesIn (get_test_filtered_value_string_inputs()),
2033
2148
DDSSQLFilterValueTests::PrintToStringParamName());
2034
2149
2150
+ INSTANTIATE_TEST_SUITE_P (
2151
+ DDSSQLFilterValueTestsAliasString,
2152
+ DDSSQLFilterValueTests,
2153
+ ::testing::ValuesIn (get_test_filtered_value_alias_string_inputs()),
2154
+ DDSSQLFilterValueTests::PrintToStringParamName());
2155
+
2035
2156
INSTANTIATE_TEST_SUITE_P (
2036
2157
DDSSQLFilterValueTestsBool,
2037
2158
DDSSQLFilterValueTests,
0 commit comments