From e15e893a01ab1eae7a5aff80f042edfc49bad7e3 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 20 Aug 2021 14:33:59 +0200 Subject: [PATCH] Util: use case-insensitive matching for parsing bool values --- src/lib/util.cpp | 4 ++-- tests/library/util-parse-bool-test.cpp | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/lib/util.cpp b/src/lib/util.cpp index bf192f190..7f686aeae 100644 --- a/src/lib/util.cpp +++ b/src/lib/util.cpp @@ -99,8 +99,8 @@ namespace util { namespace { - regex trueTokens{ "\\s*(true|True|TRUE|yes|Yes|YES|1|\\+)\\s*", regex::ECMAScript | regex::optimize}; - regex falseTokens{"\\s*(false|False|FALSE|no|No|NO|0|\\-)\\s*", regex::ECMAScript | regex::optimize}; + regex trueTokens { "\\s*(true|yes|on|1|\\+)\\s*", regex::icase | regex::optimize }; + regex falseTokens{ "\\s*(false|no|off|0|\\-)\\s*", regex::icase | regex::optimize }; } bool diff --git a/tests/library/util-parse-bool-test.cpp b/tests/library/util-parse-bool-test.cpp index 10a7d4db6..92c79c926 100644 --- a/tests/library/util-parse-bool-test.cpp +++ b/tests/library/util-parse-bool-test.cpp @@ -47,6 +47,7 @@ namespace test { CHECK (boolVal ("true")); CHECK (boolVal ("True")); CHECK (boolVal ("TRUE")); + CHECK (boolVal ("tRuE")); CHECK (boolVal ("yes")); CHECK (boolVal ("Yes")); CHECK (boolVal ("YES")); @@ -56,6 +57,7 @@ namespace test { CHECK (not boolVal ("false")); CHECK (not boolVal ("False")); CHECK (not boolVal ("FALSE")); + CHECK (not boolVal ("fAlSe")); CHECK (not boolVal ("no")); CHECK (not boolVal ("No")); CHECK (not boolVal ("NO")); @@ -69,8 +71,8 @@ namespace test { VERIFY_ERROR (INVALID, boolVal("") ); VERIFY_ERROR (INVALID, boolVal(" ") ); - VERIFY_ERROR (INVALID, boolVal("yEs") ); - VERIFY_ERROR (INVALID, boolVal("tRuE") ); + VERIFY_ERROR (INVALID, boolVal("Ja") ); + VERIFY_ERROR (INVALID, boolVal("truth") ); VERIFY_ERROR (INVALID, boolVal("falsehood")); VERIFY_ERROR (INVALID, boolVal("11") ); VERIFY_ERROR (INVALID, boolVal("+1") ); @@ -79,6 +81,7 @@ namespace test { CHECK (isYes ("true")); CHECK (isYes ("True")); + CHECK (isYes ("tRuE")); CHECK (isYes ("TRUE")); CHECK (isYes ("yes")); CHECK (isYes ("Yes")); @@ -89,7 +92,6 @@ namespace test { CHECK (isYes (" \n\n 1 \t ")); CHECK (not isYes (" True and False")); - CHECK (not isYes ("tRuE")); CHECK (not isYes ("+2")); CHECK (not isYes ("no")); CHECK (not isYes ("1010"));