gpt4 book ai didi

c++ - 如何设置对 boost::shared_array 的期望

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:20 25 4
gpt4 key购买 nike

我正在为某些类编写一些单元测试。这些类使用另一个 comms_client 来执行网络通信。例如,comms_client 提供了一个 send 方法,它接收一个 boost::shared_array 作为参数:

class comms_client
{
...

public:
void send(boost::shared_array<boost::uint8_t> const & buffer, size_t size) = 0;

...
};

为了测试类发送的内容,我想创建一个模拟类,允许我检查发送的数组内容是否正确。模拟类看起来像

class comms_client_mock : public comms_client
{
...

public:
MOCK_METHOD2(send, void(boost::shared_array<boost::uint8_t> const & buffer, size_t size));

..
};

不幸的是,我还没有找到在这种类型的参数中放置期望值的方法。我尝试使用 testing::ElementsAreArray 但它引发了编译错误。是否有可用于将期望值置于此类类型的参数中的函数?您能否为 gmock 库提供自定义谓词或类来比较预期参数和实际参数?

最佳答案

在谷歌搜索和阅读一些文档后,我终于找到了 GoogleMock Cookbook .按照其中包含的规范和示例编写简单的自定义匹配器非常简单。

这是结果匹配器:

#include <gmock/gmock.h>

MATCHER_P2(CompareArray, expected, size, "The buffer doesn't match the expected value.")
{
return std::equal(arg.get(), arg.get() + size, expected.get());
}

这就是它的使用方式:

boost::shared_array<boost::uint8_t> buffer(new boost::uint8_t[1]);
buffer[0] = 0x01;
EXPECT_CALL(send(_camera.get(), CompareArray(buffer, 1), 1));

关于c++ - 如何设置对 boost::shared_array 的期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10930730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com