18d05d8e7Sopenharmony_ci/*
28d05d8e7Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
38d05d8e7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
48d05d8e7Sopenharmony_ci * you may not use this file except in compliance with the License.
58d05d8e7Sopenharmony_ci * You may obtain a copy of the License at
68d05d8e7Sopenharmony_ci *
78d05d8e7Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
88d05d8e7Sopenharmony_ci *
98d05d8e7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
108d05d8e7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
118d05d8e7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
128d05d8e7Sopenharmony_ci * See the License for the specific language governing permissions and
138d05d8e7Sopenharmony_ci * limitations under the License.
148d05d8e7Sopenharmony_ci */
158d05d8e7Sopenharmony_ci
168d05d8e7Sopenharmony_ci#ifndef TEST_UNITTEST_MOCK_FILE_ASSISTANT_H
178d05d8e7Sopenharmony_ci#define TEST_UNITTEST_MOCK_FILE_ASSISTANT_H
188d05d8e7Sopenharmony_ci
198d05d8e7Sopenharmony_ci#include <gmock/gmock.h>
208d05d8e7Sopenharmony_ci
218d05d8e7Sopenharmony_ci#ifdef FILE_SUBSYSTEM_DEBUG_LOCAL
228d05d8e7Sopenharmony_ci#include <node_api.h>
238d05d8e7Sopenharmony_ci#else
248d05d8e7Sopenharmony_ci#include "napi/native_api.h"
258d05d8e7Sopenharmony_ci#include "napi/native_node_api.h"
268d05d8e7Sopenharmony_ci#endif
278d05d8e7Sopenharmony_ci#include "uv.h"
288d05d8e7Sopenharmony_ci
298d05d8e7Sopenharmony_cinamespace OHOS {
308d05d8e7Sopenharmony_cinamespace FileAccessFwk {
318d05d8e7Sopenharmony_ciclass Assistant {
328d05d8e7Sopenharmony_cipublic:
338d05d8e7Sopenharmony_ci    virtual ~Assistant() = default;
348d05d8e7Sopenharmony_ci    virtual bool Bool() = 0;
358d05d8e7Sopenharmony_ci    virtual int Int() = 0;
368d05d8e7Sopenharmony_cipublic:
378d05d8e7Sopenharmony_ci    virtual napi_status napi_get_uv_event_loop(napi_env, struct uv_loop_s**) = 0;
388d05d8e7Sopenharmony_ci    virtual napi_status napi_call_function(napi_env, napi_value, napi_value, size_t, const napi_value*, napi_value*)
398d05d8e7Sopenharmony_ci        = 0;
408d05d8e7Sopenharmony_ci    virtual napi_status napi_get_reference_value(napi_env, napi_ref, napi_value*) = 0;
418d05d8e7Sopenharmony_ci    virtual napi_status napi_get_named_property(napi_env, napi_value, const char*, napi_value*) = 0;
428d05d8e7Sopenharmony_ci    virtual int uv_queue_work(uv_loop_t*, uv_work_t*, uv_work_cb, uv_after_work_cb) = 0;
438d05d8e7Sopenharmony_ci    virtual napi_status napi_get_value_int32(napi_env, napi_value, int32_t*) = 0;
448d05d8e7Sopenharmony_ci    virtual napi_status napi_get_value_int64(napi_env, napi_value, int64_t*) = 0;
458d05d8e7Sopenharmony_ci    virtual napi_status napi_create_string_utf8(napi_env, const char*, size_t, napi_value*) = 0;
468d05d8e7Sopenharmony_ci    virtual napi_status napi_create_int32(napi_env, int32_t, napi_value*) = 0;
478d05d8e7Sopenharmony_ci    virtual napi_status napi_create_int64(napi_env, int64_t, napi_value*) = 0;
488d05d8e7Sopenharmony_ci    virtual napi_status napi_get_value_string_utf8(napi_env, napi_value, char*, size_t, size_t*) = 0;
498d05d8e7Sopenharmony_ci    virtual napi_status napi_get_boolean(napi_env, bool, napi_value*) = 0;
508d05d8e7Sopenharmony_ci    virtual napi_status napi_create_array(napi_env, napi_value*) = 0;
518d05d8e7Sopenharmony_ci    virtual napi_status napi_get_array_length(napi_env, napi_value, uint32_t*) = 0;
528d05d8e7Sopenharmony_ci    virtual napi_status napi_get_element(napi_env, napi_value, uint32_t, napi_value*) = 0;
538d05d8e7Sopenharmony_ci    virtual napi_status napi_escape_handle(napi_env, napi_escapable_handle_scope, napi_value, napi_value*) = 0;
548d05d8e7Sopenharmony_ci    virtual napi_status napi_get_null(napi_env, napi_value*) = 0;
558d05d8e7Sopenharmony_ci    virtual napi_status napi_create_object(napi_env, napi_value*) = 0;
568d05d8e7Sopenharmony_ci    virtual napi_status napi_create_array_with_length(napi_env, size_t, napi_value*) = 0;
578d05d8e7Sopenharmony_ci    virtual napi_status napi_create_double(napi_env, double, napi_value*) = 0;
588d05d8e7Sopenharmony_ci    virtual napi_status napi_set_named_property(napi_env, napi_value, const char*, napi_value) = 0;
598d05d8e7Sopenharmony_ci    virtual napi_status napi_create_function(napi_env, const char*, size_t, napi_callback, void*, napi_value*) = 0;
608d05d8e7Sopenharmony_ci    virtual napi_status napi_get_cb_info(napi_env, napi_callback_info, size_t*, napi_value*, napi_value*, void**) = 0;
618d05d8e7Sopenharmony_ci    virtual napi_status napi_get_undefined(napi_env, napi_value*) = 0;
628d05d8e7Sopenharmony_ci    virtual napi_status napi_get_value_bool(napi_env, napi_value, bool*) = 0;
638d05d8e7Sopenharmony_cipublic:
648d05d8e7Sopenharmony_ci    static inline std::shared_ptr<Assistant> ins_ = nullptr;
658d05d8e7Sopenharmony_ci};
668d05d8e7Sopenharmony_ci
678d05d8e7Sopenharmony_ciclass AssistantMock : public Assistant {
688d05d8e7Sopenharmony_cipublic:
698d05d8e7Sopenharmony_ci    MOCK_METHOD0(Bool, bool());
708d05d8e7Sopenharmony_ci    MOCK_METHOD0(Int, int());
718d05d8e7Sopenharmony_cipublic:
728d05d8e7Sopenharmony_ci    MOCK_METHOD2(napi_get_uv_event_loop, napi_status(napi_env, struct uv_loop_s**));
738d05d8e7Sopenharmony_ci    MOCK_METHOD6(napi_call_function, napi_status(napi_env, napi_value, napi_value, size_t, const napi_value*,
748d05d8e7Sopenharmony_ci        napi_value*));
758d05d8e7Sopenharmony_ci    MOCK_METHOD3(napi_get_reference_value, napi_status(napi_env, napi_ref, napi_value*));
768d05d8e7Sopenharmony_ci    MOCK_METHOD4(napi_get_named_property, napi_status(napi_env, napi_value, const char*, napi_value*));
778d05d8e7Sopenharmony_ci    MOCK_METHOD4(uv_queue_work, int(uv_loop_t*, uv_work_t*, uv_work_cb, uv_after_work_cb));
788d05d8e7Sopenharmony_ci    MOCK_METHOD3(napi_get_value_int32, napi_status(napi_env, napi_value, int32_t*));
798d05d8e7Sopenharmony_ci    MOCK_METHOD3(napi_get_value_int64, napi_status(napi_env, napi_value, int64_t*));
808d05d8e7Sopenharmony_ci    MOCK_METHOD3(napi_create_int64, napi_status(napi_env, int64_t, napi_value*));
818d05d8e7Sopenharmony_ci    MOCK_METHOD4(napi_create_string_utf8, napi_status(napi_env, const char*, size_t, napi_value*));
828d05d8e7Sopenharmony_ci    MOCK_METHOD3(napi_create_int32, napi_status(napi_env, int32_t, napi_value*));
838d05d8e7Sopenharmony_ci    MOCK_METHOD5(napi_get_value_string_utf8, napi_status(napi_env, napi_value, char*, size_t, size_t*));
848d05d8e7Sopenharmony_ci    MOCK_METHOD3(napi_get_boolean, napi_status(napi_env, bool, napi_value*));
858d05d8e7Sopenharmony_ci    MOCK_METHOD2(napi_create_array, napi_status(napi_env, napi_value*));
868d05d8e7Sopenharmony_ci    MOCK_METHOD3(napi_get_array_length, napi_status(napi_env, napi_value, uint32_t*));
878d05d8e7Sopenharmony_ci    MOCK_METHOD4(napi_get_element, napi_status(napi_env, napi_value, uint32_t, napi_value*));
888d05d8e7Sopenharmony_ci    MOCK_METHOD4(napi_escape_handle, napi_status(napi_env, napi_escapable_handle_scope, napi_value, napi_value*));
898d05d8e7Sopenharmony_ci    MOCK_METHOD2(napi_get_null, napi_status(napi_env, napi_value*));
908d05d8e7Sopenharmony_ci    MOCK_METHOD2(napi_create_object, napi_status(napi_env, napi_value*));
918d05d8e7Sopenharmony_ci    MOCK_METHOD3(napi_create_array_with_length, napi_status(napi_env, size_t, napi_value*));
928d05d8e7Sopenharmony_ci    MOCK_METHOD3(napi_create_double, napi_status(napi_env, double, napi_value*));
938d05d8e7Sopenharmony_ci    MOCK_METHOD4(napi_set_named_property, napi_status(napi_env, napi_value, const char*, napi_value));
948d05d8e7Sopenharmony_ci    MOCK_METHOD6(napi_create_function, napi_status(napi_env, const char*, size_t, napi_callback, void*, napi_value*));
958d05d8e7Sopenharmony_ci    MOCK_METHOD6(napi_get_cb_info, napi_status(napi_env, napi_callback_info, size_t*, napi_value*, napi_value*,
968d05d8e7Sopenharmony_ci        void**));
978d05d8e7Sopenharmony_ci    MOCK_METHOD2(napi_get_undefined, napi_status(napi_env, napi_value*));
988d05d8e7Sopenharmony_ci    MOCK_METHOD3(napi_get_value_bool, napi_status(napi_env, napi_value, bool*));
998d05d8e7Sopenharmony_ci};
1008d05d8e7Sopenharmony_ci
1018d05d8e7Sopenharmony_ci} // End of namespace FileAccessFwk
1028d05d8e7Sopenharmony_ci} // End of namespace OHOS
1038d05d8e7Sopenharmony_ci#endif // TEST_UNITTEST_MOCK_FILE_ASSISTANT_H