0

基本的に一連の関数ポインターを含む構造体である 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::iteratorstd::queue

4

0 に答える 0