Проверка аргумента GMOCK

У меня есть класс с массивом членов типа int

// Class Defenition
class Foo {
     int array[5];
     // ... Other Memebers
}

Иметь другой класс с функцией-членом, который имеет параметр типа Foo*

class SerialTXInterface {
 public:
    virtual bool print_foo(Foo* strPtr) = 0;
    // ... Other Members
};

Макет для вышеуказанного метода:

MOCK_METHOD1(print_str_s, bool(Array_s<char>* strPtr));

Интерфейс SerialTX

SerialTXInterface* STX = &SerialTXObject;

Объект Фу

Foo FooObj;

Вызов функции

STX.print_foo(&FooOjb)

Как я могу убедиться, что массив элементов Foo [5] == {1, 2, 3, 4, 5}


person user1135541    schedule 10.02.2015    source источник
comment
Существуют сопоставители и пользовательские сопоставители?   -  person πάντα ῥεῖ    schedule 10.02.2015
comment
Но как сопоставить пуант с пуантом? Поскольку аргумент является указателем класса, массив является указателем.   -  person user1135541    schedule 10.02.2015
comment
Массивы не являются указателями.   -  person πάντα ῥεῖ    schedule 10.02.2015
comment
Единственное, что я могу найти, это использовать Invoke(), но для этого требуется дополнительная функция.   -  person user1135541    schedule 10.02.2015


Ответы (1)


Это работает для меня (если я сделаю Foo::array общедоступным)

#include <gtest/gtest.h>
#include <gmock/gmock.h>

using namespace testing;

class Foo {
public:
    int array[5];
    // ... Other Memebers
};

class SerialTXInterface {
public:
    virtual bool print_foo(Foo* strPtr) = 0;
    // ... Other Members
};

class SerialTXMock {
public:
    MOCK_METHOD1(print_foo, bool(Foo* strPtr));
};

TEST(STXUser, Sends12345)
{
    SerialTXMock STXM;
    EXPECT_CALL(STXM, print_foo(Pointee(Field(&Foo::array,ElementsAre(1,2,3,4,    5)))));
    Foo testfoo = {{1,2,3,4,5}};
    STXM.print_foo(&testfoo);
}
person Michael Karcher    schedule 10.02.2015