1/* 2 * Copyright (c) 2021 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#include "ecmascript/ecma_string.h" 17#include "ecmascript/ecma_vm.h" 18#include "ecmascript/global_env.h" 19#include "ecmascript/js_function.h" 20#include "ecmascript/js_handle.h" 21#include "ecmascript/js_object-inl.h" 22#include "ecmascript/object_factory.h" 23#include "ecmascript/tests/test_helper.h" 24 25using namespace panda::ecmascript; 26 27using FunctionPtr = void (*)(panda::ecmascript::JSHandle<EcmaString> &); 28 29namespace panda::test { 30class NativePointerTest : public BaseTestWithScope<false> { 31}; 32 33HWTEST_F_L0(NativePointerTest, Print) 34{ 35 // mock object needed in test 36 char array[] = "Hello World!"; 37 ObjectFactory *factory = thread->GetEcmaVM()->GetFactory(); 38 JSHandle<GlobalEnv> env = thread->GetEcmaVM()->GetGlobalEnv(); 39 JSHandle<EcmaString> str = factory->NewFromASCII(array); 40 EXPECT_TRUE(*str != nullptr); 41 42 JSHandle<JSFunction> jsFunction = factory->NewJSFunction(env); 43 EXPECT_TRUE(*jsFunction != nullptr); 44 45 JSHandle<Method> target = factory->NewMethodForNativeFunction(nullptr); 46 jsFunction->SetMethod(thread, target.GetTaggedValue()); 47 48 // run cpp methed 'Print' 49 ASSERT_EQ(Method::Cast(target.GetTaggedValue().GetTaggedObject()), jsFunction->GetCallTarget()); 50} 51} // namespace panda::test 52