|
|
@@ -0,0 +1,143 @@
|
|
|
+cmake_policy(SET CMP0186 NEW)
|
|
|
+
|
|
|
+function(check_output name expected)
|
|
|
+ set(output "${${name}}")
|
|
|
+ if(NOT output STREQUAL expected)
|
|
|
+ message(FATAL_ERROR "\"string(REGEX)\" set ${name} to \"${output}\", expected \"${expected}\"")
|
|
|
+ endif()
|
|
|
+endfunction()
|
|
|
+
|
|
|
+# Zero-length matches in REGEX MATCH
|
|
|
+
|
|
|
+string(REGEX MATCH "" out "")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+string(REGEX MATCH "" out "a")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+string(REGEX MATCH "a*" out "")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+string(REGEX MATCH "a*" out "a")
|
|
|
+check_output(out "a")
|
|
|
+
|
|
|
+string(REGEX MATCH "a*" out "b")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+string(REGEX MATCH "a*" out "ba")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+# Zero-length matches in REGEX MATCHALL
|
|
|
+
|
|
|
+string(REGEX MATCHALL "" out "")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "" out "ab")
|
|
|
+check_output(out ";;")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "^" out "ab")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "(^|,)" out "a,b")
|
|
|
+check_output(out ";,")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "(,|^)" out "a,b")
|
|
|
+check_output(out ";,")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "(^|)" out "")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "(^|)" out "ab")
|
|
|
+check_output(out ";;")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "a|^" out "ab")
|
|
|
+check_output(out "a")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "$" out "ab")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "($|,)" out "a,b")
|
|
|
+check_output(out ",;")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "(,|$)" out "a,b")
|
|
|
+check_output(out ",;")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "(|$)" out "")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "(|$)" out "ab")
|
|
|
+check_output(out ";;")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "(b|)" out "abc")
|
|
|
+check_output(out ";b;;")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "(|b)" out "abc")
|
|
|
+check_output(out ";;b;;")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "a*" out "aaa")
|
|
|
+check_output(out "aaa;")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "(a)?(b)?" out "")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+string(REGEX MATCHALL "(a)?(b)?" out "abba")
|
|
|
+check_output(out "ab;b;a;")
|
|
|
+
|
|
|
+# Zero-length matches in REGEX REPLACE
|
|
|
+
|
|
|
+string(REGEX REPLACE "" "" out "")
|
|
|
+check_output(out "")
|
|
|
+
|
|
|
+string(REGEX REPLACE "" "x" out "")
|
|
|
+check_output(out "x")
|
|
|
+
|
|
|
+string(REGEX REPLACE "" "x" out "ab")
|
|
|
+check_output(out "xaxbx")
|
|
|
+
|
|
|
+string(REGEX REPLACE "^" "x" out "ab")
|
|
|
+check_output(out "xab")
|
|
|
+
|
|
|
+string(REGEX REPLACE "(^|,)" "x" out "a,b")
|
|
|
+check_output(out "xaxb")
|
|
|
+
|
|
|
+string(REGEX REPLACE "(,|^)" "x" out "a,b")
|
|
|
+check_output(out "xaxb")
|
|
|
+
|
|
|
+string(REGEX REPLACE "(^|)" "x" out "")
|
|
|
+check_output(out "x")
|
|
|
+
|
|
|
+string(REGEX REPLACE "(^|)" "x" out "ab")
|
|
|
+check_output(out "xaxbx")
|
|
|
+
|
|
|
+string(REGEX REPLACE "a|^" "x" out "ab")
|
|
|
+check_output(out "xb")
|
|
|
+
|
|
|
+string(REGEX REPLACE "$" "x" out "ab")
|
|
|
+check_output(out "abx")
|
|
|
+
|
|
|
+string(REGEX REPLACE "($|,)" "x" out "a,b")
|
|
|
+check_output(out "axbx")
|
|
|
+
|
|
|
+string(REGEX REPLACE "(,|$)" "x" out "a,b")
|
|
|
+check_output(out "axbx")
|
|
|
+
|
|
|
+string(REGEX REPLACE "(|$)" "x" out "")
|
|
|
+check_output(out "x")
|
|
|
+
|
|
|
+string(REGEX REPLACE "(|$)" "x" out "ab")
|
|
|
+check_output(out "xaxbx")
|
|
|
+
|
|
|
+string(REGEX REPLACE "(b|)" "x" out "abc")
|
|
|
+check_output(out "xaxxcx")
|
|
|
+
|
|
|
+string(REGEX REPLACE "(|b)" "x" out "abc")
|
|
|
+check_output(out "xaxxxcx")
|
|
|
+
|
|
|
+string(REGEX REPLACE "a*" "x" out "aaa")
|
|
|
+check_output(out "xx")
|
|
|
+
|
|
|
+string(REGEX REPLACE "(a)?(b)?" "x" out "")
|
|
|
+check_output(out "x")
|
|
|
+
|
|
|
+string(REGEX REPLACE "(a)?(b)?" "x" out "abba")
|
|
|
+check_output(out "xxxx")
|