// Extra tests for PatternScanner behavior #include #include using namespace omath; TEST(unit_test_pattern_scan_extra, IteratorScanFound) { std::vector buf = {static_cast(0xDE), static_cast(0xAD), static_cast(0xBE), static_cast(0xEF), static_cast(0x00)}; const auto it = PatternScanner::scan_for_pattern(buf.begin(), buf.end(), "DE AD BE EF"); EXPECT_NE(it, buf.end()); EXPECT_EQ(std::distance(buf.begin(), it), 0); } TEST(unit_test_pattern_scan_extra, IteratorScanNotFound) { std::vector buf = {static_cast(0x00), static_cast(0x11), static_cast(0x22)}; const auto it = PatternScanner::scan_for_pattern(buf.begin(), buf.end(), "FF EE DD"); EXPECT_EQ(it, buf.end()); } TEST(unit_test_pattern_scan_extra, ParseInvalidPattern) { // invalid hex token should cause the public scan to return end (no match) std::vector buf = {static_cast(0x00), static_cast(0x11)}; const auto it = PatternScanner::scan_for_pattern(buf.begin(), buf.end(), "GG HH"); EXPECT_EQ(it, buf.end()); }