@@ -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
@@ -954,13 +955,21 @@ class DDSSQLFilterValueGlobalData
954
955
for (size_t i = 0 ; i < values.size (); ++i)
955
956
{
956
957
data[i].string_field (values[i]);
958
+ data[i].alias_string_field (values[i]);
957
959
data[i].struct_field ().string_field (values[i]);
960
+ data[i].struct_field ().alias_string_field (values[i]);
958
961
data[i].array_struct_field ()[0 ].string_field (values[i]);
962
+ data[i].array_struct_field ()[0 ].alias_string_field (values[i]);
959
963
data[i].bounded_sequence_struct_field ()[0 ].string_field (values[i]);
964
+ data[i].bounded_sequence_struct_field ()[0 ].alias_string_field (values[i]);
960
965
data[i].unbounded_sequence_struct_field ()[0 ].string_field (values[i]);
966
+ data[i].unbounded_sequence_struct_field ()[0 ].alias_string_field (values[i]);
961
967
data[i].array_string_field ()[0 ] = values[i];
968
+ data[i].array_alias_string_field ()[0 ] = values[i];
962
969
data[i].bounded_sequence_string_field ().push_back (values[i]);
970
+ data[i].bounded_sequence_alias_string_field ().push_back (values[i]);
963
971
data[i].unbounded_sequence_string_field ().push_back (values[i]);
972
+ data[i].unbounded_sequence_alias_string_field ().push_back (values[i]);
964
973
}
965
974
}
966
975
@@ -1460,6 +1469,112 @@ static std::vector<DDSSQLFilterValueParams> get_test_filtered_value_string_input
1460
1469
return inputs;
1461
1470
}
1462
1471
1472
+ static std::vector<DDSSQLFilterValueParams> get_test_filtered_value_alias_string_inputs ()
1473
+ {
1474
+ static const std::array<std::pair<std::string, std::string>, 5 > values =
1475
+ {
1476
+ std::pair<std::string, std::string>{" ''" , " minus_2" },
1477
+ std::pair<std::string, std::string>{" ' '" , " minus_1" },
1478
+ std::pair<std::string, std::string>{" ' AA'" , " 0" },
1479
+ std::pair<std::string, std::string>{" ' AZ'" , " plus_1" },
1480
+ std::pair<std::string, std::string>{" 'ZZZ'" , " plus_2" }
1481
+ };
1482
+
1483
+ // Adding standard tests
1484
+ std::vector<DDSSQLFilterValueParams> inputs;
1485
+ inputs = get_test_filtered_value_inputs_given_values_and_results (" alias_string_field" , values);
1486
+
1487
+ // Adding tests for LIKE operator
1488
+ DDSSQLFilterValueParams input;
1489
+ input.test_case_name = " like_any_percent" ;
1490
+ input.expression = " alias_string_field LIKE '%'" ;
1491
+ input.samples_filtered .assign (5 , true );
1492
+ inputs.push_back (input);
1493
+
1494
+ input.test_case_name = " like_any_star" ;
1495
+ input.expression = " alias_string_field LIKE '*'" ;
1496
+ input.samples_filtered .assign (5 , true );
1497
+ inputs.push_back (input);
1498
+
1499
+ input.test_case_name = " like_space_percent" ;
1500
+ input.expression = " alias_string_field LIKE ' %'" ;
1501
+ input.samples_filtered .assign ({ false , true , true , true , false });
1502
+ inputs.push_back (input);
1503
+
1504
+ input.test_case_name = " like_space_star" ;
1505
+ input.expression = " alias_string_field LIKE ' *'" ;
1506
+ input.samples_filtered .assign ({ false , true , true , true , false });
1507
+ inputs.push_back (input);
1508
+
1509
+ input.test_case_name = " like_A_question" ;
1510
+ input.expression = " alias_string_field LIKE '?A?'" ;
1511
+ input.samples_filtered .assign ({ false , false , true , true , false });
1512
+ inputs.push_back (input);
1513
+
1514
+ input.test_case_name = " like_A_underscore" ;
1515
+ input.expression = " alias_string_field LIKE '_A_'" ;
1516
+ input.samples_filtered .assign ({ false , false , true , true , false });
1517
+ inputs.push_back (input);
1518
+
1519
+ input.test_case_name = " like_exact_empty" ;
1520
+ input.expression = " alias_string_field LIKE ''" ;
1521
+ input.samples_filtered .assign ({ true , false , false , false , false });
1522
+ inputs.push_back (input);
1523
+
1524
+ input.test_case_name = " like_exact_ZZZ" ;
1525
+ input.expression = " alias_string_field LIKE 'ZZZ'" ;
1526
+ input.samples_filtered .assign ({ false , false , false , false , true });
1527
+ inputs.push_back (input);
1528
+
1529
+ input.test_case_name = " like_exact_none" ;
1530
+ input.expression = " alias_string_field LIKE 'BBB'" ;
1531
+ input.samples_filtered .assign ({ false , false , false , false , false });
1532
+ inputs.push_back (input);
1533
+
1534
+ // Adding tests for MATCH operator
1535
+ input.test_case_name = " match_any" ;
1536
+ input.expression = " alias_string_field match '.*'" ;
1537
+ input.samples_filtered .assign (5 , true );
1538
+ inputs.push_back (input);
1539
+
1540
+ input.test_case_name = " match_space" ;
1541
+ input.expression = " alias_string_field match ' .*'" ;
1542
+ input.samples_filtered .assign ({ false , true , true , true , false });
1543
+ inputs.push_back (input);
1544
+
1545
+ input.test_case_name = " match_A" ;
1546
+ input.expression = " alias_string_field match '.A.'" ;
1547
+ input.samples_filtered .assign ({ false , false , true , true , false });
1548
+ inputs.push_back (input);
1549
+
1550
+ input.test_case_name = " match_exact_empty" ;
1551
+ input.expression = " alias_string_field match ''" ;
1552
+ input.samples_filtered .assign ({ true , false , false , false , false });
1553
+ inputs.push_back (input);
1554
+
1555
+ input.test_case_name = " match_exact_ZZZ" ;
1556
+ input.expression = " alias_string_field match 'ZZZ'" ;
1557
+ input.samples_filtered .assign ({ false , false , false , false , true });
1558
+ inputs.push_back (input);
1559
+
1560
+ input.test_case_name = " match_exact_none" ;
1561
+ input.expression = " alias_string_field match 'BBB'" ;
1562
+ input.samples_filtered .assign ({ false , false , false , false , false });
1563
+ inputs.push_back (input);
1564
+
1565
+ input.test_case_name = " match_range" ;
1566
+ input.expression = " alias_string_field match '([A-Z])+'" ;
1567
+ input.samples_filtered .assign ({ false , false , false , false , true });
1568
+ inputs.push_back (input);
1569
+
1570
+ input.test_case_name = " match_space_and_range" ;
1571
+ input.expression = " alias_string_field match ' ([A-Z])+'" ;
1572
+ input.samples_filtered .assign ({ false , false , true , true , false });
1573
+ inputs.push_back (input);
1574
+
1575
+ return inputs;
1576
+ }
1577
+
1463
1578
static std::vector<DDSSQLFilterValueParams> get_test_filtered_value_boolean_inputs ()
1464
1579
{
1465
1580
static const std::array<std::pair<std::string, std::string>, 5 > values =
@@ -2018,6 +2133,12 @@ INSTANTIATE_TEST_SUITE_P(
2018
2133
::testing::ValuesIn (get_test_filtered_value_string_inputs()),
2019
2134
DDSSQLFilterValueTests::PrintToStringParamName());
2020
2135
2136
+ INSTANTIATE_TEST_SUITE_P (
2137
+ DDSSQLFilterValueTestsAliasString,
2138
+ DDSSQLFilterValueTests,
2139
+ ::testing::ValuesIn (get_test_filtered_value_alias_string_inputs()),
2140
+ DDSSQLFilterValueTests::PrintToStringParamName());
2141
+
2021
2142
INSTANTIATE_TEST_SUITE_P (
2022
2143
DDSSQLFilterValueTestsBool,
2023
2144
DDSSQLFilterValueTests,
0 commit comments