基本的に一連の関数ポインターを含む構造体である ac api「クラス」をモックする必要があります。これが私のアプローチです。あなたの意見では有効ですか、それともより良いアプローチを提案できますか?
typedef struct MockCApi: public CApi
{
MockCApi()
{
// Hook in function
getName = nameFunc;
}
static void reset()
{
handle.clear();
name.clear();
returnValue.clear();
}
static ReturnType nameFunc(HandleType _handle, const char** _name)
{
handle.push_back(_handle);
poppedNames.push_back(name.front());
*_name = poppedNames.back().c_str();
ReturnType _returnValue = returnValue.front();
returnValue.pop_front();
return _returnValue;
}
static std::deque<HandleType> handle;
static std::deque<std::string> name;
static std::deque<ReturnType> returnValue;
private:
static std::deque<std::string> poppedNames;
};
アップデート
私が念頭に置いている別のアプローチは、の代わりにstd::vector
とを使用することです。イテレータは、ベクター内の値を「使用」するたびにインクリメントされます。std::vector::iterator
std::queue