1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef TEST_UNITTEST_MOCK_FILE_ASSISTANT_H 17 #define TEST_UNITTEST_MOCK_FILE_ASSISTANT_H 18 19 #include <gmock/gmock.h> 20 21 #ifdef FILE_SUBSYSTEM_DEBUG_LOCAL 22 #include <node_api.h> 23 #else 24 #include "napi/native_api.h" 25 #include "napi/native_node_api.h" 26 #endif 27 #include "uv.h" 28 29 namespace OHOS { 30 namespace FileAccessFwk { 31 class Assistant { 32 public: 33 virtual ~Assistant() = default; 34 virtual bool Bool() = 0; 35 virtual int Int() = 0; 36 public: 37 virtual napi_status napi_get_uv_event_loop(napi_env, struct uv_loop_s**) = 0; 38 virtual napi_status napi_call_function(napi_env, napi_value, napi_value, size_t, const napi_value*, napi_value*) 39 = 0; 40 virtual napi_status napi_get_reference_value(napi_env, napi_ref, napi_value*) = 0; 41 virtual napi_status napi_get_named_property(napi_env, napi_value, const char*, napi_value*) = 0; 42 virtual int uv_queue_work(uv_loop_t*, uv_work_t*, uv_work_cb, uv_after_work_cb) = 0; 43 virtual napi_status napi_get_value_int32(napi_env, napi_value, int32_t*) = 0; 44 virtual napi_status napi_get_value_int64(napi_env, napi_value, int64_t*) = 0; 45 virtual napi_status napi_create_string_utf8(napi_env, const char*, size_t, napi_value*) = 0; 46 virtual napi_status napi_create_int32(napi_env, int32_t, napi_value*) = 0; 47 virtual napi_status napi_create_int64(napi_env, int64_t, napi_value*) = 0; 48 virtual napi_status napi_get_value_string_utf8(napi_env, napi_value, char*, size_t, size_t*) = 0; 49 virtual napi_status napi_get_boolean(napi_env, bool, napi_value*) = 0; 50 virtual napi_status napi_create_array(napi_env, napi_value*) = 0; 51 virtual napi_status napi_get_array_length(napi_env, napi_value, uint32_t*) = 0; 52 virtual napi_status napi_get_element(napi_env, napi_value, uint32_t, napi_value*) = 0; 53 virtual napi_status napi_escape_handle(napi_env, napi_escapable_handle_scope, napi_value, napi_value*) = 0; 54 virtual napi_status napi_get_null(napi_env, napi_value*) = 0; 55 virtual napi_status napi_create_object(napi_env, napi_value*) = 0; 56 virtual napi_status napi_create_array_with_length(napi_env, size_t, napi_value*) = 0; 57 virtual napi_status napi_create_double(napi_env, double, napi_value*) = 0; 58 virtual napi_status napi_set_named_property(napi_env, napi_value, const char*, napi_value) = 0; 59 virtual napi_status napi_create_function(napi_env, const char*, size_t, napi_callback, void*, napi_value*) = 0; 60 virtual napi_status napi_get_cb_info(napi_env, napi_callback_info, size_t*, napi_value*, napi_value*, void**) = 0; 61 virtual napi_status napi_get_undefined(napi_env, napi_value*) = 0; 62 virtual napi_status napi_get_value_bool(napi_env, napi_value, bool*) = 0; 63 public: 64 static inline std::shared_ptr<Assistant> ins_ = nullptr; 65 }; 66 67 class AssistantMock : public Assistant { 68 public: 69 MOCK_METHOD0(Bool, bool()); 70 MOCK_METHOD0(Int, int()); 71 public: 72 MOCK_METHOD2(napi_get_uv_event_loop, napi_status(napi_env, struct uv_loop_s**)); 73 MOCK_METHOD6(napi_call_function, napi_status(napi_env, napi_value, napi_value, size_t, const napi_value*, 74 napi_value*)); 75 MOCK_METHOD3(napi_get_reference_value, napi_status(napi_env, napi_ref, napi_value*)); 76 MOCK_METHOD4(napi_get_named_property, napi_status(napi_env, napi_value, const char*, napi_value*)); 77 MOCK_METHOD4(uv_queue_work, int(uv_loop_t*, uv_work_t*, uv_work_cb, uv_after_work_cb)); 78 MOCK_METHOD3(napi_get_value_int32, napi_status(napi_env, napi_value, int32_t*)); 79 MOCK_METHOD3(napi_get_value_int64, napi_status(napi_env, napi_value, int64_t*)); 80 MOCK_METHOD3(napi_create_int64, napi_status(napi_env, int64_t, napi_value*)); 81 MOCK_METHOD4(napi_create_string_utf8, napi_status(napi_env, const char*, size_t, napi_value*)); 82 MOCK_METHOD3(napi_create_int32, napi_status(napi_env, int32_t, napi_value*)); 83 MOCK_METHOD5(napi_get_value_string_utf8, napi_status(napi_env, napi_value, char*, size_t, size_t*)); 84 MOCK_METHOD3(napi_get_boolean, napi_status(napi_env, bool, napi_value*)); 85 MOCK_METHOD2(napi_create_array, napi_status(napi_env, napi_value*)); 86 MOCK_METHOD3(napi_get_array_length, napi_status(napi_env, napi_value, uint32_t*)); 87 MOCK_METHOD4(napi_get_element, napi_status(napi_env, napi_value, uint32_t, napi_value*)); 88 MOCK_METHOD4(napi_escape_handle, napi_status(napi_env, napi_escapable_handle_scope, napi_value, napi_value*)); 89 MOCK_METHOD2(napi_get_null, napi_status(napi_env, napi_value*)); 90 MOCK_METHOD2(napi_create_object, napi_status(napi_env, napi_value*)); 91 MOCK_METHOD3(napi_create_array_with_length, napi_status(napi_env, size_t, napi_value*)); 92 MOCK_METHOD3(napi_create_double, napi_status(napi_env, double, napi_value*)); 93 MOCK_METHOD4(napi_set_named_property, napi_status(napi_env, napi_value, const char*, napi_value)); 94 MOCK_METHOD6(napi_create_function, napi_status(napi_env, const char*, size_t, napi_callback, void*, napi_value*)); 95 MOCK_METHOD6(napi_get_cb_info, napi_status(napi_env, napi_callback_info, size_t*, napi_value*, napi_value*, 96 void**)); 97 MOCK_METHOD2(napi_get_undefined, napi_status(napi_env, napi_value*)); 98 MOCK_METHOD3(napi_get_value_bool, napi_status(napi_env, napi_value, bool*)); 99 }; 100 101 } // End of namespace FileAccessFwk 102 } // End of namespace OHOS 103 #endif // TEST_UNITTEST_MOCK_FILE_ASSISTANT_H