google test

This commit is contained in:
2026-06-06 15:26:46 +08:00
parent fa6fdfe95e
commit 00be65c0e1
2 changed files with 27 additions and 15 deletions

View File

@@ -7,7 +7,7 @@
namespace {
std::vector<std::uint8_t> BuildMinimalFrame(std::uint8_t channel_count)
std::vector<std::uint8_t> BuildMinimalFrame(std::uint8_t channel_count, std::uint32_t frame_index)
{
constexpr std::size_t kSamplesPerFrame = 5;
constexpr std::uint8_t kHeader = 0xAA;
@@ -24,10 +24,10 @@ std::vector<std::uint8_t> BuildMinimalFrame(std::uint8_t channel_count)
frame[offset++] = kHeader;
// index, little endian
frame[offset++] = 0x01;
frame[offset++] = 0x00;
frame[offset++] = 0x00;
frame[offset++] = 0x00;
frame[offset++] = static_cast<std::uint8_t>(frame_index & 0xFF);
frame[offset++] = static_cast<std::uint8_t>((frame_index >> 8) & 0xFF);
frame[offset++] = static_cast<std::uint8_t>((frame_index >> 16) & 0xFF);
frame[offset++] = static_cast<std::uint8_t>((frame_index >> 24) & 0xFF);
// payload length, big endian
frame[offset++] = static_cast<std::uint8_t>((payload_length >> 8) & 0xFF);
@@ -57,6 +57,11 @@ std::vector<std::uint8_t> BuildMinimalFrame(std::uint8_t channel_count)
return frame;
}
std::vector<std::uint8_t> BuildMinimalFrame(std::uint8_t channel_count)
{
return BuildMinimalFrame(channel_count, 1U);
}
} // namespace
void MinimalExampleFor8ChParser()

View File

@@ -43,8 +43,9 @@ private:
/// 构建最小帧数据的辅助函数
/// 生成符合 XYParser 协议格式的测试帧数据
/// @param channel_count 通道数量
/// @param frame_index 帧索引,小端写入标签区前 4 字节
/// @return 包含完整帧数据的字节向量
std::vector<std::uint8_t> BuildMinimalFrame(std::uint8_t channel_count)
std::vector<std::uint8_t> BuildMinimalFrame(std::uint8_t channel_count, std::uint32_t frame_index)
{
constexpr std::size_t kSamplesPerFrame = 5; ///< 每帧采样数
constexpr std::uint8_t kHeader = 0xAA; ///< 帧头标记
@@ -62,11 +63,11 @@ std::vector<std::uint8_t> BuildMinimalFrame(std::uint8_t channel_count)
// 写入帧头
frame[offset++] = kHeader;
// 写入标签数据(版本号等
frame[offset++] = 0x01;
frame[offset++] = 0x00;
frame[offset++] = 0x00;
frame[offset++] = 0x00;
// 写入标签数据中的帧索引(小端序
frame[offset++] = static_cast<std::uint8_t>(frame_index & 0xFF);
frame[offset++] = static_cast<std::uint8_t>((frame_index >> 8) & 0xFF);
frame[offset++] = static_cast<std::uint8_t>((frame_index >> 16) & 0xFF);
frame[offset++] = static_cast<std::uint8_t>((frame_index >> 24) & 0xFF);
// 写入负载长度(大端序)
frame[offset++] = static_cast<std::uint8_t>((payload_length >> 8) & 0xFF);
@@ -99,6 +100,12 @@ std::vector<std::uint8_t> BuildMinimalFrame(std::uint8_t channel_count)
return frame;
}
/// 为现有调用点保留默认 frame_index=1 的便捷重载
std::vector<std::uint8_t> BuildMinimalFrame(std::uint8_t channel_count)
{
return BuildMinimalFrame(channel_count, 1U);
}
} // namespace
/// 测试:创建解析器时拒绝不支持的通道数
@@ -336,8 +343,8 @@ TEST(XYParserApiTests, FeedParsesMultipleFrames)
XYParser_SetBypassChecksum(parser.get(), 1);
// 构建两个连续的帧
const std::vector<std::uint8_t> frame1 = BuildMinimalFrame(8);
const std::vector<std::uint8_t> frame2 = BuildMinimalFrame(8);
const std::vector<std::uint8_t> frame1 = BuildMinimalFrame(8, 1U);
const std::vector<std::uint8_t> frame2 = BuildMinimalFrame(8, 2U);
std::vector<std::uint8_t> combined(frame1);
combined.insert(combined.end(), frame2.begin(), frame2.end());
@@ -368,7 +375,7 @@ TEST(XYParserApiTests, FeedIncrementsFrameIndex)
int total_frames = 0;
for (int i = 0; i < 3; ++i) {
const std::vector<std::uint8_t> frame = BuildMinimalFrame(8);
const std::vector<std::uint8_t> frame = BuildMinimalFrame(8, static_cast<std::uint32_t>(i + 1));
const int count = XYParser_Feed(
parser.get(),
frame.data(),