#include <vector>
#include "gtest/gtest.h"
#include "gmock/gmock.h"
using namespace ::testing;
class A {
public:
virtual void f(std::vector<int>& b, std::vector<int>& b1) { }
};
class AA : public A {
public:
MOCK_METHOD2(f, void(std::vector<int>&, std::vector<int>&));
};
int main()
{
std::vector<int> v = { 3,2,1 };
std::vector<int> v1 = { 1,2,3 };
AA a;
EXPECT_CALL(a, f(ContainerEq(v), ContainerEq(v1))).Times(1);
// code will call f finally
return 0;
}
我模拟的函数f
将传入2个向量。但是,序列可以是随机的,v,v1或v1,v都是正确的。如何在EXPECT_CALL中添加OR运算符,如:
EXPECT_CALL(a, f(ContainerEq(v) or ContainerEq(v1), ContainerEq(v1) or ContainerEq(v))).Times(1);
有可能吗?
答案 0 :(得分:0)
是的,可以使用for(int m=1; m<5; ++m){
int[] Array+m = new int[5];
}
:
AnyOf
使用C ++ 11或更高版本,您还可以执行以下操作:
EXPECT_CALL(a, f(AnyOf(ContainerEq(v),ContainerEq(v1)),
AnyOf(ContainerEq(v),ContainerEq(v1)));