diff --git a/test_drivers/negative/negative.cpp b/test_drivers/negative/negative.cpp index b1af5f7..571e6c6 100644 --- a/test_drivers/negative/negative.cpp +++ b/test_drivers/negative/negative.cpp @@ -4,9 +4,12 @@ using namespace utf8; #include #include #include +#include using namespace std; const char* TEST_FILE_PATH = "../../test_data/negative/utf8_invalid.txt"; +const unsigned INVALID_LINES[] = { 75, 76, 82, 83, 84, 85, 93, 102, 103, 105, 106, 107, 108, 109, 110, 114, 115, 116, 117, 124, 125, 130, 135, 140, 145, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 169, 175, 176, 177, 207, 208, 209, 210, 211, 220, 221, 222, 223, 224, 232, 233, 234, 235, 236, 247, 248, 249, 250, 251, 252, 253, 257, 258, 259, 260, 261, 262, 263, 264, 268, 269}; +const unsigned* INVALID_LINES_END = INVALID_LINES + sizeof(INVALID_LINES)/sizeof(unsigned); int main() { @@ -27,7 +30,10 @@ int main() line_count++; // Print out lines that contain invalid UTF-8 - if (!is_valid(line.begin(), line.end())) - cout << line_count << ": " << line << '\n'; + if (!is_valid(line.begin(), line.end())) { + const unsigned* u = find(INVALID_LINES, INVALID_LINES_END, line_count); + if (u == INVALID_LINES_END) + cout << "Unexpected invalid utf-8 at line " << line_count << '\n'; + } } } diff --git a/test_drivers/runtests.pl b/test_drivers/runtests.pl index 71ffa42..c939497 100755 --- a/test_drivers/runtests.pl +++ b/test_drivers/runtests.pl @@ -30,3 +30,11 @@ chdir '..'; die if !open(REPORT, ">>$report_name"); print REPORT "==================End of regression test==================\n"; print REPORT "\n"; +print REPORT "==================Negative Test ==================\n"; +close($report_name); +chdir 'negative'; +`./negative >> ../$report_name`; +chdir '..'; +die if !open(REPORT, ">>$report_name"); +print REPORT "==================End of negative test==================\n"; +print REPORT "\n";