namespace vpvl2 {
namespace VPVL2_VERSION_NS {

class MockIMotion : public IMotion {
 public:
  MOCK_METHOD2(load,
      bool(const uint8 *data, vsize size));
  MOCK_CONST_METHOD1(save,
      void(uint8 *data));
  MOCK_CONST_METHOD0(estimateSize,
      vsize());
  MOCK_CONST_METHOD0(error,
      Error());
  MOCK_CONST_METHOD0(parentModelRef,
      IModel*());
  MOCK_METHOD1(setParentModelRef,
      void(IModel *model));
  MOCK_METHOD1(seekSeconds,
      void(const float64 &seconds));
  MOCK_METHOD2(seekSceneSeconds,
      void(const float64 &seconds, Scene *scene));
  MOCK_METHOD1(seekTimeIndex,
      void(const IKeyframe::TimeIndex &timeIndex));
  MOCK_METHOD2(seekSceneTimeIndex,
      void(const IKeyframe::TimeIndex &timeIndex, Scene *scene));
  MOCK_METHOD0(reset,
      void());
  MOCK_CONST_METHOD0(durationSeconds,
      float64());
  MOCK_CONST_METHOD0(durationTimeIndex,
      IKeyframe::TimeIndex());
  MOCK_CONST_METHOD1(isReachedTo,
      bool(const IKeyframe::TimeIndex &timeIndex));
  MOCK_METHOD0(createBoneKeyframe,
      IBoneKeyframe*());
  MOCK_METHOD0(createCameraKeyframe,
      ICameraKeyframe*());
  MOCK_METHOD0(createEffectKeyframe,
      IEffectKeyframe*());
  MOCK_METHOD0(createLightKeyframe,
      ILightKeyframe*());
  MOCK_METHOD0(createModelKeyframe,
      IModelKeyframe*());
  MOCK_METHOD0(createMorphKeyframe,
      IMorphKeyframe*());
  MOCK_METHOD0(createProjectKeyframe,
      IProjectKeyframe*());
  MOCK_METHOD1(addKeyframe,
      void(IKeyframe *value));
  MOCK_CONST_METHOD1(countKeyframes,
      int(IKeyframe::Type value));
  MOCK_CONST_METHOD2(countLayers,
      IKeyframe::LayerIndex(const IString *name, IKeyframe::Type type));
  MOCK_METHOD4(getKeyframeRefs,
      void(const IKeyframe::TimeIndex &timeIndex, const IKeyframe::LayerIndex &layerIndex, IKeyframe::Type type, Array<IKeyframe *> &keyframes));
  MOCK_CONST_METHOD3(findBoneKeyframeRef,
      IBoneKeyframe*(const IKeyframe::TimeIndex &timeIndex, const IString *name, const IKeyframe::LayerIndex &layerIndex));
  MOCK_CONST_METHOD1(findBoneKeyframeRefAt,
      IBoneKeyframe*(int index));
  MOCK_CONST_METHOD2(findCameraKeyframeRef,
      ICameraKeyframe*(const IKeyframe::TimeIndex &timeIndex, const IKeyframe::LayerIndex &layerIndex));
  MOCK_CONST_METHOD1(findCameraKeyframeRefAt,
      ICameraKeyframe*(int index));
  MOCK_CONST_METHOD3(findEffectKeyframeRef,
      IEffectKeyframe*(const IKeyframe::TimeIndex &timeIndex, const IString *name, const IKeyframe::LayerIndex &layerIndex));
  MOCK_CONST_METHOD1(findEffectKeyframeRefAt,
      IEffectKeyframe*(int index));
  MOCK_CONST_METHOD2(findLightKeyframeRef,
      ILightKeyframe*(const IKeyframe::TimeIndex &timeIndex, const IKeyframe::LayerIndex &layerIndex));
  MOCK_CONST_METHOD1(findLightKeyframeRefAt,
      ILightKeyframe*(int index));
  MOCK_CONST_METHOD2(findModelKeyframeRef,
      IModelKeyframe*(const IKeyframe::TimeIndex &timeIndex, const IKeyframe::LayerIndex &layerIndex));
  MOCK_CONST_METHOD1(findModelKeyframeRefAt,
      IModelKeyframe*(int index));
  MOCK_CONST_METHOD3(findMorphKeyframeRef,
      IMorphKeyframe*(const IKeyframe::TimeIndex &timeIndex, const IString *name, const IKeyframe::LayerIndex &layerIndex));
  MOCK_CONST_METHOD1(findMorphKeyframeRefAt,
      IMorphKeyframe*(int index));
  MOCK_CONST_METHOD2(findProjectKeyframeRef,
      IProjectKeyframe*(const IKeyframe::TimeIndex &timeIndex, const IKeyframe::LayerIndex &layerIndex));
  MOCK_CONST_METHOD1(findProjectKeyframeRefAt,
      IProjectKeyframe*(int index));
  MOCK_METHOD2(replaceKeyframe,
      void(IKeyframe *value, bool alsoDelete));
  MOCK_METHOD1(removeKeyframe,
      void(IKeyframe *value));
  MOCK_METHOD1(deleteKeyframe,
      void(IKeyframe *&value));
  MOCK_METHOD1(update,
      void(IKeyframe::Type type));
  MOCK_METHOD2(getAllKeyframeRefs,
      void(Array<IKeyframe *> &value, IKeyframe::Type type));
  MOCK_METHOD2(setAllKeyframes,
      void(const Array<IKeyframe *> &value, IKeyframe::Type type));
  MOCK_METHOD0(createFirstKeyframesUnlessFound,
      void());
  MOCK_CONST_METHOD0(clone,
      IMotion*());
  MOCK_CONST_METHOD0(isNullFrameEnabled,
      bool());
  MOCK_METHOD1(setNullFrameEnable,
      void(bool value));
  MOCK_CONST_METHOD0(parentSceneRef,
      Scene*());
  MOCK_CONST_METHOD0(name,
      const IString*());
  MOCK_CONST_METHOD0(type,
      FormatType());
};

}  // namespace VPVL2_VERSION_NS
}  // namespace vpvl2
