Refactor HandleHexStringParams to modify hex string directly and add hex_test for comprehensive testing of hex conversion functions with various prefixes.
This commit is contained in:
@@ -4,25 +4,22 @@
|
|||||||
|
|
||||||
#include "absl/strings/str_cat.h"
|
#include "absl/strings/str_cat.h"
|
||||||
#include "absl/strings/str_format.h"
|
#include "absl/strings/str_format.h"
|
||||||
#include "absl/strings/str_join.h"
|
|
||||||
|
|
||||||
namespace yaze {
|
namespace yaze {
|
||||||
namespace util {
|
namespace util {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
void HandleHexStringParams(const std::string &hex,
|
void HandleHexStringParams(std::string &hex, const HexStringParams ¶ms) {
|
||||||
const HexStringParams ¶ms) {
|
|
||||||
std::string result = hex;
|
|
||||||
switch (params.prefix) {
|
switch (params.prefix) {
|
||||||
case HexStringParams::Prefix::kDollar:
|
case HexStringParams::Prefix::kDollar:
|
||||||
result = absl::StrCat("$", result);
|
hex = absl::StrCat("$", hex);
|
||||||
break;
|
break;
|
||||||
case HexStringParams::Prefix::kHash:
|
case HexStringParams::Prefix::kHash:
|
||||||
result = absl::StrCat("#", result);
|
hex = absl::StrCat("#", hex);
|
||||||
break;
|
break;
|
||||||
case HexStringParams::Prefix::k0x:
|
case HexStringParams::Prefix::k0x:
|
||||||
result = absl::StrCat("0x", result);
|
hex = absl::StrCat("0x", hex);
|
||||||
case HexStringParams::Prefix::kNone:
|
case HexStringParams::Prefix::kNone:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ add_executable(
|
|||||||
yaze_test.cc
|
yaze_test.cc
|
||||||
rom_test.cc
|
rom_test.cc
|
||||||
test_editor.cc
|
test_editor.cc
|
||||||
|
hex_test.cc
|
||||||
gfx/compression_test.cc
|
gfx/compression_test.cc
|
||||||
gfx/snes_palette_test.cc
|
gfx/snes_palette_test.cc
|
||||||
zelda3/message_test.cc
|
zelda3/message_test.cc
|
||||||
|
|||||||
103
test/hex_test.cc
Normal file
103
test/hex_test.cc
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
#include "testing.h"
|
||||||
|
|
||||||
|
#include "util/hex.h"
|
||||||
|
|
||||||
|
namespace yaze {
|
||||||
|
namespace test {
|
||||||
|
|
||||||
|
using ::testing::Eq;
|
||||||
|
|
||||||
|
TEST(HexTest, HexByte) {
|
||||||
|
// Test basic byte conversion
|
||||||
|
EXPECT_THAT(util::HexByte(0x00), Eq("$00"));
|
||||||
|
EXPECT_THAT(util::HexByte(0xFF), Eq("$FF"));
|
||||||
|
EXPECT_THAT(util::HexByte(0x1A), Eq("$1A"));
|
||||||
|
|
||||||
|
// Test different prefixes
|
||||||
|
util::HexStringParams params;
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kNone;
|
||||||
|
EXPECT_THAT(util::HexByte(0x1A, params), Eq("1A"));
|
||||||
|
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kHash;
|
||||||
|
EXPECT_THAT(util::HexByte(0x1A, params), Eq("#1A"));
|
||||||
|
|
||||||
|
params.prefix = util::HexStringParams::Prefix::k0x;
|
||||||
|
EXPECT_THAT(util::HexByte(0x1A, params), Eq("0x1A"));
|
||||||
|
|
||||||
|
// Test lowercase
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kNone;
|
||||||
|
params.uppercase = false;
|
||||||
|
EXPECT_THAT(util::HexByte(0x1A, params), Eq("1a"));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(HexTest, HexWord) {
|
||||||
|
// Test basic word conversion
|
||||||
|
EXPECT_THAT(util::HexWord(0x0000), Eq("$0000"));
|
||||||
|
EXPECT_THAT(util::HexWord(0xFFFF), Eq("$FFFF"));
|
||||||
|
EXPECT_THAT(util::HexWord(0x1A2B), Eq("$1A2B"));
|
||||||
|
|
||||||
|
// Test different prefixes
|
||||||
|
util::HexStringParams params;
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kNone;
|
||||||
|
EXPECT_THAT(util::HexWord(0x1A2B, params), Eq("1A2B"));
|
||||||
|
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kHash;
|
||||||
|
EXPECT_THAT(util::HexWord(0x1A2B, params), Eq("#1A2B"));
|
||||||
|
|
||||||
|
params.prefix = util::HexStringParams::Prefix::k0x;
|
||||||
|
EXPECT_THAT(util::HexWord(0x1A2B, params), Eq("0x1A2B"));
|
||||||
|
|
||||||
|
// Test lowercase
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kNone;
|
||||||
|
params.uppercase = false;
|
||||||
|
EXPECT_THAT(util::HexWord(0x1A2B, params), Eq("1a2b"));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(HexTest, HexLong) {
|
||||||
|
// Test basic long conversion
|
||||||
|
EXPECT_THAT(util::HexLong(0x000000), Eq("$000000"));
|
||||||
|
EXPECT_THAT(util::HexLong(0xFFFFFF), Eq("$FFFFFF"));
|
||||||
|
EXPECT_THAT(util::HexLong(0x1A2B3C), Eq("$1A2B3C"));
|
||||||
|
|
||||||
|
// Test different prefixes
|
||||||
|
util::HexStringParams params;
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kNone;
|
||||||
|
EXPECT_THAT(util::HexLong(0x1A2B3C, params), Eq("1A2B3C"));
|
||||||
|
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kHash;
|
||||||
|
EXPECT_THAT(util::HexLong(0x1A2B3C, params), Eq("#1A2B3C"));
|
||||||
|
|
||||||
|
params.prefix = util::HexStringParams::Prefix::k0x;
|
||||||
|
EXPECT_THAT(util::HexLong(0x1A2B3C, params), Eq("0x1A2B3C"));
|
||||||
|
|
||||||
|
// Test lowercase
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kNone;
|
||||||
|
params.uppercase = false;
|
||||||
|
EXPECT_THAT(util::HexLong(0x1A2B3C, params), Eq("1a2b3c"));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(HexTest, HexLongLong) {
|
||||||
|
// Test basic long long conversion
|
||||||
|
EXPECT_THAT(util::HexLongLong(0x00000000), Eq("$00000000"));
|
||||||
|
EXPECT_THAT(util::HexLongLong(0xFFFFFFFF), Eq("$FFFFFFFF"));
|
||||||
|
EXPECT_THAT(util::HexLongLong(0x1A2B3C4D), Eq("$1A2B3C4D"));
|
||||||
|
|
||||||
|
// Test different prefixes
|
||||||
|
util::HexStringParams params;
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kNone;
|
||||||
|
EXPECT_THAT(util::HexLongLong(0x1A2B3C4D, params), Eq("1A2B3C4D"));
|
||||||
|
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kHash;
|
||||||
|
EXPECT_THAT(util::HexLongLong(0x1A2B3C4D, params), Eq("#1A2B3C4D"));
|
||||||
|
|
||||||
|
params.prefix = util::HexStringParams::Prefix::k0x;
|
||||||
|
EXPECT_THAT(util::HexLongLong(0x1A2B3C4D, params), Eq("0x1A2B3C4D"));
|
||||||
|
|
||||||
|
// Test lowercase
|
||||||
|
params.prefix = util::HexStringParams::Prefix::kNone;
|
||||||
|
params.uppercase = false;
|
||||||
|
EXPECT_THAT(util::HexLongLong(0x1A2B3C4D, params), Eq("1a2b3c4d"));
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace test
|
||||||
|
} // namespace yaze
|
||||||
Reference in New Issue
Block a user