mirror of
https://github.com/orange-cpp/omath.git
synced 2026-02-13 07:03:25 +00:00
Adds corner case tests for pattern scanning
Adds new test cases to cover additional scenarios for pattern scanning, including tests for leading/trailing whitespace and spacing variations to ensure robustness.
This commit is contained in:
@@ -10,6 +10,9 @@
|
|||||||
|
|
||||||
// ReSharper disable once CppInconsistentNaming
|
// ReSharper disable once CppInconsistentNaming
|
||||||
class unit_test_pattern_scan_read_test_Test;
|
class unit_test_pattern_scan_read_test_Test;
|
||||||
|
class unit_test_pattern_scan_corner_case_1_Test;
|
||||||
|
class unit_test_pattern_scan_corner_case_2_Test;
|
||||||
|
class unit_test_pattern_scan_corner_case_3_Test;
|
||||||
namespace omath
|
namespace omath
|
||||||
{
|
{
|
||||||
enum class PatternScanError
|
enum class PatternScanError
|
||||||
@@ -19,6 +22,9 @@ namespace omath
|
|||||||
class PatternScanner
|
class PatternScanner
|
||||||
{
|
{
|
||||||
friend unit_test_pattern_scan_read_test_Test;
|
friend unit_test_pattern_scan_read_test_Test;
|
||||||
|
friend unit_test_pattern_scan_corner_case_1_Test;
|
||||||
|
friend unit_test_pattern_scan_corner_case_2_Test;
|
||||||
|
friend unit_test_pattern_scan_corner_case_3_Test;
|
||||||
public:
|
public:
|
||||||
private:
|
private:
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ namespace omath
|
|||||||
start = end != pattern_string.end() ? std::next(end) : end;
|
start = end != pattern_string.end() ? std::next(end) : end;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (byte_str == "?" || byte_str == "??")
|
if (byte_str == "?" || byte_str == "??")
|
||||||
{
|
{
|
||||||
pattern.emplace_back(std::nullopt);
|
pattern.emplace_back(std::nullopt);
|
||||||
|
|||||||
@@ -5,7 +5,43 @@
|
|||||||
#include <omath/utility/pattern_scan.hpp>
|
#include <omath/utility/pattern_scan.hpp>
|
||||||
#include <source_location>
|
#include <source_location>
|
||||||
|
|
||||||
|
|
||||||
TEST(unit_test_pattern_scan, read_test)
|
TEST(unit_test_pattern_scan, read_test)
|
||||||
{
|
{
|
||||||
std::ignore = omath::PatternScanner::parse_pattern("FF ? ?? E9");
|
const auto result = omath::PatternScanner::parse_pattern("FF ? ?? E9");
|
||||||
|
|
||||||
|
EXPECT_EQ(result->at(0), static_cast<std::byte>(0xFF));
|
||||||
|
EXPECT_EQ(result->at(1), std::nullopt);
|
||||||
|
EXPECT_EQ(result->at(2), std::nullopt);
|
||||||
|
EXPECT_EQ(result->at(3), static_cast<std::byte>(0xE9));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(unit_test_pattern_scan, corner_case_1)
|
||||||
|
{
|
||||||
|
const auto result = omath::PatternScanner::parse_pattern(" FF ? ?? E9");
|
||||||
|
|
||||||
|
EXPECT_EQ(result->at(0), static_cast<std::byte>(0xFF));
|
||||||
|
EXPECT_EQ(result->at(1), std::nullopt);
|
||||||
|
EXPECT_EQ(result->at(2), std::nullopt);
|
||||||
|
EXPECT_EQ(result->at(3), static_cast<std::byte>(0xE9));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(unit_test_pattern_scan, corner_case_2)
|
||||||
|
{
|
||||||
|
const auto result = omath::PatternScanner::parse_pattern(" FF ? ?? E9 ");
|
||||||
|
|
||||||
|
EXPECT_EQ(result->at(0), static_cast<std::byte>(0xFF));
|
||||||
|
EXPECT_EQ(result->at(1), std::nullopt);
|
||||||
|
EXPECT_EQ(result->at(2), std::nullopt);
|
||||||
|
EXPECT_EQ(result->at(3), static_cast<std::byte>(0xE9));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(unit_test_pattern_scan, corner_case_3)
|
||||||
|
{
|
||||||
|
const auto result = omath::PatternScanner::parse_pattern(" FF ? ?? E9 ");
|
||||||
|
|
||||||
|
EXPECT_EQ(result->at(0), static_cast<std::byte>(0xFF));
|
||||||
|
EXPECT_EQ(result->at(1), std::nullopt);
|
||||||
|
EXPECT_EQ(result->at(2), std::nullopt);
|
||||||
|
EXPECT_EQ(result->at(3), static_cast<std::byte>(0xE9));
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user