aboutsummaryrefslogtreecommitdiff
path: root/pw_hex_dump/hex_dump_test.cc
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2023-08-14 15:38:30 -0700
committerXin Li <delphij@google.com>2023-08-14 15:38:30 -0700
commitbddf63953e111d742b591c1c0c7c34bcda8a51c7 (patch)
tree3a93128bff4b737b24b0c9581922c0b20410f0f4 /pw_hex_dump/hex_dump_test.cc
parentee890da55c82b95deca3518d5f3777e3d8ca9f0e (diff)
parentfbb9890f8922aa55fde183655a0017e69127ea4b (diff)
downloadpigweed-tmp_amf_298295554.tar.gz
Merge Android U (ab/10368041)tmp_amf_298295554
Bug: 291102124 Merged-In: I10c41adb8fe3e126cfa4ff2f49b15863fff379de Change-Id: I66f7a6cccaafc173d3924dae62a736c6c53520c7
Diffstat (limited to 'pw_hex_dump/hex_dump_test.cc')
-rw-r--r--pw_hex_dump/hex_dump_test.cc61
1 files changed, 51 insertions, 10 deletions
diff --git a/pw_hex_dump/hex_dump_test.cc b/pw_hex_dump/hex_dump_test.cc
index c2b4126bc..a95b292d6 100644
--- a/pw_hex_dump/hex_dump_test.cc
+++ b/pw_hex_dump/hex_dump_test.cc
@@ -18,11 +18,11 @@
#include <cinttypes>
#include <cstdint>
#include <cstring>
-#include <span>
#include <string_view>
#include "gtest/gtest.h"
#include "pw_log/log.h"
+#include "pw_span/span.h"
namespace pw::dump {
namespace {
@@ -308,8 +308,8 @@ TEST_F(HexDump, FormattedHexDump_AsciiHeaderGroupEvery) {
}
TEST_F(HexDump, FormattedHexDump_OffsetPrefix) {
- constexpr const char* expected1 = "0000";
- constexpr const char* expected2 = "0010";
+ constexpr const char* expected1 = "0000:";
+ constexpr const char* expected2 = "0010:";
default_flags_.bytes_per_line = 16;
default_flags_.prefix_mode = FormattedHexDumper::AddressMode::kOffset;
@@ -329,14 +329,52 @@ TEST_F(HexDump, FormattedHexDump_OffsetPrefix) {
EXPECT_STREQ(expected2, dest_.data());
}
+TEST_F(HexDump, FormattedHexDump_OffsetPrefix_ShortLine) {
+ constexpr const char* expected = "0000:";
+
+ default_flags_.bytes_per_line = 16;
+ default_flags_.prefix_mode = FormattedHexDumper::AddressMode::kOffset;
+ dumper_ = FormattedHexDumper(dest_, default_flags_);
+
+ EXPECT_TRUE(dumper_.BeginDump(pw::span(source_data).first(8)).ok());
+ // Dump first and only line.
+ EXPECT_TRUE(dumper_.DumpLine().ok());
+ // Truncate string to only contain the offset.
+ dest_[strlen(expected)] = '\0';
+ EXPECT_STREQ(expected, dest_.data());
+}
+
+TEST_F(HexDump, FormattedHexDump_OffsetPrefix_LongData) {
+ constexpr std::array<std::byte, 300> long_data = {std::byte{0xff}};
+
+ constexpr const char* expected1 = "0000:";
+ constexpr const char* expected2 = "0010:";
+
+ default_flags_.bytes_per_line = 16;
+ default_flags_.prefix_mode = FormattedHexDumper::AddressMode::kOffset;
+ dumper_ = FormattedHexDumper(dest_, default_flags_);
+
+ EXPECT_TRUE(dumper_.BeginDump(long_data).ok());
+ // Dump first line.
+ EXPECT_TRUE(dumper_.DumpLine().ok());
+ // Truncate string to only contain the offset.
+ dest_[strlen(expected1)] = '\0';
+ EXPECT_STREQ(expected1, dest_.data());
+
+ // Dump second line.
+ EXPECT_TRUE(dumper_.DumpLine().ok());
+ // Truncate string to only contain the offset.
+ dest_[strlen(expected2)] = '\0';
+ EXPECT_STREQ(expected2, dest_.data());
+}
+
TEST_F(HexDump, FormattedHexDump_AbsolutePrefix) {
constexpr size_t kTestBytesPerLine = 16;
std::array<char, kHexAddrStringSize + 1> expected1;
std::array<char, kHexAddrStringSize + 1> expected2;
- DumpAddr(expected1, source_data.data())
- .IgnoreError(); // TODO(pwbug/387): Handle Status properly
- DumpAddr(expected2, source_data.data() + kTestBytesPerLine)
- .IgnoreError(); // TODO(pwbug/387): Handle Status properly
+ ASSERT_EQ(OkStatus(), DumpAddr(expected1, source_data.data()));
+ ASSERT_EQ(OkStatus(),
+ DumpAddr(expected2, source_data.data() + kTestBytesPerLine));
default_flags_.bytes_per_line = kTestBytesPerLine;
default_flags_.prefix_mode = FormattedHexDumper::AddressMode::kAbsolute;
@@ -346,12 +384,14 @@ TEST_F(HexDump, FormattedHexDump_AbsolutePrefix) {
// Dump first line.
EXPECT_TRUE(dumper_.DumpLine().ok());
// Truncate string to only contain the offset.
+ EXPECT_EQ(dest_[kHexAddrStringSize], ':');
dest_[kHexAddrStringSize] = '\0';
EXPECT_STREQ(expected1.data(), dest_.data());
// Dump second line.
EXPECT_TRUE(dumper_.DumpLine().ok());
// Truncate string to only contain the offset.
+ EXPECT_EQ(dest_[kHexAddrStringSize], ':');
dest_[kHexAddrStringSize] = '\0';
EXPECT_STREQ(expected2.data(), dest_.data());
}
@@ -405,7 +445,7 @@ TEST_F(SmallBuffer, PrefixIncreasesBufferRequirement) {
TEST(BadBuffer, ZeroSize) {
char buffer[1] = {static_cast<char>(0xaf)};
- FormattedHexDumper dumper(std::span<char>(buffer, 0));
+ FormattedHexDumper dumper(span<char>(buffer, 0));
EXPECT_EQ(dumper.BeginDump(source_data), Status::FailedPrecondition());
EXPECT_EQ(dumper.DumpLine(), Status::FailedPrecondition());
EXPECT_EQ(buffer[0], static_cast<char>(0xaf));
@@ -413,7 +453,7 @@ TEST(BadBuffer, ZeroSize) {
TEST(BadBuffer, NullPtrDest) {
FormattedHexDumper dumper;
- EXPECT_EQ(dumper.SetLineBuffer(std::span<char>()), Status::InvalidArgument());
+ EXPECT_EQ(dumper.SetLineBuffer(span<char>()), Status::InvalidArgument());
EXPECT_EQ(dumper.BeginDump(source_data), Status::FailedPrecondition());
EXPECT_EQ(dumper.DumpLine(), Status::FailedPrecondition());
}
@@ -421,7 +461,8 @@ TEST(BadBuffer, NullPtrDest) {
TEST(BadBuffer, NullPtrSrc) {
char buffer[24] = {static_cast<char>(0)};
FormattedHexDumper dumper(buffer);
- EXPECT_EQ(dumper.BeginDump(ByteSpan(nullptr, 64)), Status::InvalidArgument());
+ EXPECT_EQ(dumper.BeginDump(ByteSpan(static_cast<std::byte*>(nullptr), 64)),
+ Status::InvalidArgument());
// Don't actually dump nullptr in this test as it could cause a crash.
}