mirror of
https://github.com/kerberos-io/openalpr-base.git
synced 2025-10-06 02:26:53 +08:00
Added regex unit tests
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
enable_testing()
|
||||
|
||||
ADD_EXECUTABLE( unittests test_api.cpp test_utility.cpp )
|
||||
ADD_EXECUTABLE( unittests
|
||||
test_api.cpp
|
||||
test_utility.cpp
|
||||
test_regex.cpp
|
||||
)
|
||||
|
||||
TARGET_LINK_LIBRARIES(unittests
|
||||
|
||||
|
108
src/tests/test_regex.cpp
Normal file
108
src/tests/test_regex.cpp
Normal file
@@ -0,0 +1,108 @@
|
||||
#include <cstdlib>
|
||||
#include "utility.h"
|
||||
#include "catch.hpp"
|
||||
#include "postprocess/regexrule.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace cv;
|
||||
using namespace alpr;
|
||||
|
||||
|
||||
|
||||
TEST_CASE( "ASCII tests", "[Regex]" ) {
|
||||
|
||||
RegexRule rule1("us", "@@@####");
|
||||
|
||||
REQUIRE( rule1.match("123ABCD") == false);
|
||||
REQUIRE( rule1.match("123ABC") == false);
|
||||
REQUIRE( rule1.match("23ABCD") == false);
|
||||
REQUIRE( rule1.match("ABC123") == false);
|
||||
REQUIRE( rule1.match("BC1234") == false);
|
||||
REQUIRE( rule1.match("ABC12345") == false);
|
||||
REQUIRE( rule1.match("AABC1234") == false);
|
||||
REQUIRE( rule1.match("ABCD234") == false);
|
||||
REQUIRE( rule1.match("AB11234") == false);
|
||||
REQUIRE( rule1.match("ABC-234") == false);
|
||||
|
||||
REQUIRE( rule1.match("ABC1234") == true);
|
||||
REQUIRE( rule1.match("AAA1111") == true);
|
||||
REQUIRE( rule1.match("zzz1111") == true);
|
||||
|
||||
RegexRule rule2("us", "[ABC]@@####");
|
||||
|
||||
REQUIRE( rule2.match("ZBC1234") == false);
|
||||
REQUIRE( rule2.match("DBC1234") == false);
|
||||
REQUIRE( rule2.match("1BC1234") == false);
|
||||
|
||||
REQUIRE( rule2.match("ABC1234") == true);
|
||||
REQUIRE( rule2.match("BAA1111") == true);
|
||||
REQUIRE( rule2.match("CAA1111") == true);
|
||||
|
||||
RegexRule rule3("us", "[A]@@###[12]");
|
||||
|
||||
REQUIRE( rule3.match("ZBC1234") == false);
|
||||
REQUIRE( rule3.match("ZBC1231") == false);
|
||||
REQUIRE( rule3.match("ABC1234") == false);
|
||||
|
||||
REQUIRE( rule3.match("ABC1231") == true);
|
||||
REQUIRE( rule3.match("ABC1232") == true);
|
||||
|
||||
|
||||
RegexRule rule4("us", "[A-C][E-G]1111");
|
||||
|
||||
REQUIRE( rule4.match("DG1111") == false);
|
||||
REQUIRE( rule4.match("AD1111") == false);
|
||||
REQUIRE( rule4.match("AF1112") == false);
|
||||
|
||||
REQUIRE( rule4.match("AF1111") == true);
|
||||
REQUIRE( rule4.match("BF1111") == true);
|
||||
REQUIRE( rule4.match("CF1111") == true);
|
||||
REQUIRE( rule4.match("BE1111") == true);
|
||||
REQUIRE( rule4.match("BF1111") == true);
|
||||
REQUIRE( rule4.match("BG1111") == true);
|
||||
|
||||
RegexRule rule5("us", "\\d\\d\\D\\D");
|
||||
REQUIRE( rule5.match("AA11") == false);
|
||||
REQUIRE( rule5.match("11AA") == true);
|
||||
|
||||
}
|
||||
|
||||
TEST_CASE( "Unicode tests", "[Regex]" ) {
|
||||
|
||||
RegexRule rule1("us", "@@@####");
|
||||
|
||||
REQUIRE( rule1.match("123与与与下") == false);
|
||||
REQUIRE( rule1.match("与万12345") == false);
|
||||
REQUIRE( rule1.match("与万口口234") == false);
|
||||
REQUIRE( rule1.match("与万口abcd") == false);
|
||||
|
||||
REQUIRE( rule1.match("与万口1234") == true);
|
||||
|
||||
RegexRule rule2("us", "[십팔]@@####");
|
||||
|
||||
REQUIRE( rule2.match("123与与与下") == false);
|
||||
REQUIRE( rule2.match("与万12345") == false);
|
||||
REQUIRE( rule2.match("与万口口234") == false);
|
||||
REQUIRE( rule2.match("与万口abcd") == false);
|
||||
REQUIRE( rule2.match("与万口1234") == false);
|
||||
REQUIRE( rule2.match("与팔십1234") == false);
|
||||
|
||||
REQUIRE( rule2.match("십万口1234") == true);
|
||||
REQUIRE( rule2.match("팔万口1234") == true);
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE( "Invalid tests", "[Regex]" ) {
|
||||
RegexRule rule1("us", "[A@@####");
|
||||
|
||||
REQUIRE( rule1.match("123ABCD") == false);
|
||||
REQUIRE( rule1.match("123ABC") == false);
|
||||
REQUIRE( rule1.match("23ABCD") == false);
|
||||
|
||||
REQUIRE( rule1.match("ABC1234") == false);
|
||||
REQUIRE( rule1.match("AAA1111") == false);
|
||||
REQUIRE( rule1.match("zzz1111") == false);
|
||||
|
||||
RegexRule rule2("us", "A####]");
|
||||
REQUIRE( rule2.match("A1234") == false);
|
||||
}
|
Reference in New Issue
Block a user