tests: Verify ExpressionMatch test data won't OOB
authorShane Synan <digitalcircuit36939@gmail.com>
Thu, 30 May 2019 20:19:18 +0000 (16:19 -0400)
committerManuel Nickschas <sputnick@quassel-irc.org>
Fri, 31 May 2019 14:41:59 +0000 (16:41 +0200)
Verify that the ExpressionMatch test data for test
trimMultiWildcardWhitespace won't try to access out of bounds data by
changing EXPECT to ASSERT for patternPair.size() == 2.

If the test data is wrong, the results will be undefined, so there's
no point in continuing the test.

Alternative: use std::vector's .at() function, which will raise a
runtime error if out of bounds.

tests/common/expressionmatchtest.cpp

index 8ba1bd7..a88f31d 100644 (file)
@@ -425,7 +425,7 @@ TEST(ExpressionMatchTest, trimMultiWildcardWhitespace)
     QString result;
     for (auto&& patternPair : patterns) {
         // Make sure data is valid
     QString result;
     for (auto&& patternPair : patterns) {
         // Make sure data is valid
-        EXPECT_TRUE(patternPair.size() == 2);
+        ASSERT_TRUE(patternPair.size() == 2);
         // Run transformation
         result = ExpressionMatch::trimMultiWildcardWhitespace(patternPair[PATTERN_SOURCE]);
         // Assert that source trims into expected pattern
         // Run transformation
         result = ExpressionMatch::trimMultiWildcardWhitespace(patternPair[PATTERN_SOURCE]);
         // Assert that source trims into expected pattern