* Copyright (c) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
* Description: jni mock
*/
#ifndef OMNI_RUNTIME_JNI_MOCK_H
#define OMNI_RUNTIME_JNI_MOCK_H
#include <jni.h>
#include "gmock/gmock.h"
namespace omniruntime {
namespace mock {
class InAndOutputInfos {
public:
bool operator == (const InAndOutputInfos &infos) const
{
return true;
}
};
class JNIEnvMock : public JNIEnv {
public:
JNIEnvMock();
~JNIEnvMock();
MOCK_METHOD1(FindClass, jclass(const char *));
MOCK_METHOD0(ExceptionOccurred, jthrowable());
MOCK_METHOD0(ExceptionClear, void());
MOCK_METHOD1(NewGlobalRef, jobject(jobject));
MOCK_METHOD1(DeleteLocalRef, void(jobject));
MOCK_METHOD3(GetStaticMethodID, jmethodID(jclass, const char *, const char *));
MOCK_METHOD3(CallStaticObjectMethod, jobject(jclass, jmethodID, jthrowable));
MOCK_METHOD3(CallStaticVoidMethodV, void(jclass, jmethodID, InAndOutputInfos));
MOCK_METHOD3(GetStaticFieldID, jfieldID(jclass, const char *, const char *));
MOCK_METHOD2(GetStaticObjectField, jobject(jclass, jfieldID));
MOCK_METHOD1(NewStringUTF, jstring(const char *));
MOCK_METHOD2(GetStringUTFChars, const char *(jstring, jboolean *));
MOCK_METHOD2(ReleaseStringUTFChars, void(jstring, const char *));
MOCK_METHOD3(NewObjectArray, jobjectArray(jsize, jclass, jobject));
MOCK_METHOD3(SetObjectArrayElement, void(jobjectArray, jsize, jobject));
MOCK_METHOD0(ExceptionCheck, jboolean());
};
class JavaVMMock : public JavaVM {
public:
JavaVMMock();
~JavaVMMock();
MOCK_METHOD2(GetEnv, jint(void **, jint));
MOCK_METHOD2(AttachCurrentThread, jint(void **, void *));
};
JavaVMMock *CreateJavaVMMock();
void DestroyJavaVMMock(JavaVMMock *javaVM);
JNIEnvMock *CreateJNIEnvMock();
void DestroyJNIEnvMock(JNIEnvMock *env);
}
}
#endif