- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 boost 递归变体,如下所示。当我使用断言比较两个递归变体对象时,它工作正常但使用 EXPECT_EQ 时,它给出编译错误。
typedef boost::make_recursive_variant<bool, boost::uint8_t, boost::uint32_t,
boost::int32_t, double, std::string, boost::uuids::uuid>::type rvariant_type;
variant_type b1 = true;
rvariant_type b2 = true;
assert(b1 == b2); //work fine
EXPECT_EQ(b1,b2); //gives compiler error.
EXPECT_EQ(boost::get<bool>(b1), boost::get<bool>(b2)); //works fine
boost/v1.46.1/include/boost/variant/detail/variant_io.hpp:64: 错误:'operator<<' 在'((const boost::detail::variant::printer >> *)this)->boost::detail::variant::printer >>::out_ << 操作数'
最佳答案
gtest 大量使用输出流,但似乎 boost::variant 对通过重载运算符<< 打印的支持非常有限,如果不是不存在的话。
看看这个:
#include <boost/variant.hpp>
#include <boost/cstdint.hpp>
#include <boost/uuid/uuid.hpp>
#include <iostream>
typedef boost::make_recursive_variant<bool, boost::uint8_t, boost::uint32_t,
boost::int32_t, double, std::string, boost::uuids::uuid>::type rvariant_type;
int main() {
rvariant_type v1 = true;
std::cout << v1 << std::endl;
return 0;
}
这个非常短的程序给出了与从 gtest 得到的相同的编译错误。
补充一下:
std::ostream& operator<<(std::ostream& out, const rvariant_type& p) {
return out << boost::get<bool>(p);
}
让我的测试编译,我会看看我是否能让你的例子也能正常工作。
更新:我刚刚编译并在放置上述运算符<<后根据您的代码成功运行了测试,因此缺少运算符<<正是导致它的原因。
关于c++ - 谷歌测试 EXPECT_EQ 和 boost::make_recursive_variant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5449234/
我正在使用谷歌测试功能 EXPECT_EQ运行函数的测试用例。功能,find返回 list并接受要查找的名称字符串。这是我的测试函数: TEST_F(test_neighborhood, find)
我正在使用谷歌测试函数 EXPECT_EQ 来运行函数的测试用例。函数“find”返回一个列表并接受要查找的名称的字符串。这是我的测试函数: TEST_F(test_neighborhood, fin
我正在学习数据结构,所以我通过模板制作了一个 Stack 类并使用 gtest 对其进行了测试。 虽然在使用 EXPECT_EQ 宏的 2 种方式中它显示不同的测试结果。 这样,最后一行仅在我使用“R
我想测试一个返回一些用户定义类型值的函数。我知道我可以使用 EXPECT_EQ、EXPECT_FLOAT_EQ 等测试基本的 int、float、double 等,但不能测试用户定义的类型。有什么线索
我正在使用 gtest,但我是 gtest 的新手。我想对复杂数据结构的两个 std::vector 中的值进行比较。我想做这样的事情: ASSERT_EQ(a.size(), b.size());
#include template size_t getSize(T (&arr)[N]){ return N; } template struct ArrayParam { static c
我有一个 boost 递归变体,如下所示。当我使用断言比较两个递归变体对象时,它工作正常但使用 EXPECT_EQ 时,它给出编译错误。 typedef boost::make_recursive_v
假设我有这个测试用例: TEST_F(TestCase1, HappyCase){ foo->doSomething(arg1, new inlineCallback([=](bool suc
在我的测试中,我针对某些字符(如“a”、“b”等)在字符上设置了 EXPECT_EQ()...到目前为止一切顺利。 现在我应该针对不可打印的 ASCII 字符 (0xFE) 进行测试。我的角色被定义为
我无法理解为什么在对双数或 float 求和的情况下测试用例会失败。它适用于整数数据类型。 //simple_method.h中的方法 double sum ( double a, double b)
我无法编译以下代码的最后一行: typedef boost::variant, std::vector> Container; std::vector v1; v1.push_back("sd");
我是一名优秀的程序员,十分优秀!