mirror of https://github.com/openXC7/prjxray.git
43 lines
1.3 KiB
C++
43 lines
1.3 KiB
C++
#include <prjxray/big_endian_span.h>
|
|
|
|
#include <cstdint>
|
|
#include <vector>
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
TEST(BigEndianSpanTest, Read32WithEmptySpan) {
|
|
std::vector<uint8_t> bytes;
|
|
auto words = prjxray::make_big_endian_span<uint32_t>(bytes);
|
|
EXPECT_EQ(words.size(), static_cast<size_t>(0));
|
|
}
|
|
|
|
TEST(BigEndianSpanTest, Read32WithTooFewBytes) {
|
|
std::vector<uint8_t> bytes{0x0, 0x1, 0x2};
|
|
auto words = prjxray::make_big_endian_span<uint32_t>(bytes);
|
|
EXPECT_EQ(words.size(), static_cast<size_t>(0));
|
|
}
|
|
|
|
TEST(BigEndianSpanTest, Read32WithExactBytes) {
|
|
std::vector<uint8_t> bytes{0x0, 0x1, 0x2, 0x3};
|
|
auto words = prjxray::make_big_endian_span<uint32_t>(bytes);
|
|
ASSERT_EQ(words.size(), static_cast<size_t>(1));
|
|
EXPECT_EQ(words[0], static_cast<uint32_t>(0x00010203));
|
|
}
|
|
|
|
TEST(BigEndianSpanTest, Read32WithMultipleWords) {
|
|
std::vector<uint8_t> bytes{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7};
|
|
auto words = prjxray::make_big_endian_span<uint32_t>(bytes);
|
|
ASSERT_EQ(words.size(), static_cast<size_t>(2));
|
|
EXPECT_EQ(words[0], static_cast<uint32_t>(0x00010203));
|
|
EXPECT_EQ(words[1], static_cast<uint32_t>(0x04050607));
|
|
}
|
|
|
|
TEST(BigEndianSpanTest, Write32) {
|
|
std::vector<uint8_t> bytes{0x0, 0x1, 0x2, 0x3};
|
|
auto words = prjxray::make_big_endian_span<uint32_t>(bytes);
|
|
words[0] = 0x04050607;
|
|
|
|
std::vector<uint8_t> expected{0x4, 0x5, 0x6, 0x7};
|
|
EXPECT_EQ(bytes, expected);
|
|
}
|