1/* 2 * Copyright (c) 2025 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 */ 15import {BusinessError} from "@ohos.base"; 16import * as IfaceReadonlyTest from "iface_readonly_test"; 17import * as IfaceTest from "iface_test"; 18 19loadLibrary("ani_iface"); 20 21class SubFoo implements IfaceTest.Foo { 22 bar(): void {} 23 24 name: string = ""; 25} 26 27interface Person { 28 get name(): string; 29} 30 31class SubPerson implements Person { 32 readonly name: string = ""; 33} 34 35function getIfaceName() { 36 let foo = IfaceTest.getFooIface(); 37 let name = foo.name; 38 console.log("foo.name is " + name) 39 assertEQ(name, "foo") 40} 41 42function getIfaceReadonlyName() { 43 let noo = IfaceReadonlyTest.getNooIface(); 44 let nooName = noo.name; 45 console.log("noo.name is " + nooName) 46 assertEQ(nooName, "noo") 47} 48 49function setIfaceName() { 50 let foo = IfaceTest.getFooIface(); 51 foo.name = "alice" 52 let name = foo.name; 53 console.log("foo.name is " + name) 54 assertEQ(name, "alice") 55} 56 57function printFooName() { 58 let foo = IfaceTest.getFooIface(); 59 foo.name = "bob" 60 let name = IfaceTest.printFooName(foo) 61 console.log("foo.name is " + name) 62 assertEQ(name, "bob") 63} 64 65function printNooName() { 66 let noo = IfaceReadonlyTest.getNooIface(); 67 let name = IfaceReadonlyTest.printNooName(noo) 68 console.log("noo.name is " + name) 69 assertEQ(name, "noo") 70} 71 72function setSubFooName() { 73 let subFoo = new SubFoo() 74 subFoo.name = "aaa" 75 let name = subFoo.name 76 console.log("subFoo.name is " + name) 77 assertEQ(name, "aaa") 78} 79 80function test_iface_subBaseFun_base() { 81 let sub = IfaceTest.getSubBaseFun(); 82 let info = sub.base(); 83 84 console.log("sub.base is " + info) 85 assertEQ(info, "SubBaseFun.base") 86} 87 88function test_iface_subBaseElem_base() { 89 let sub = IfaceTest.getSubBaseElem(); 90 sub.base = "SubBaseElem.base"; 91 let info = sub.base; 92 93 console.log("SubBaseElem.base is " + info) 94 assertEQ(info, "SubBaseElem.base") 95} 96 97function main() { 98 console.log("run main ... IfacePropTest ...") 99 const suite = new ArkTestsuite("IfacePropTest") 100 101 suite.addTest("getIfaceName", getIfaceName) 102 suite.addTest("getIfaceReadonlyName", getIfaceReadonlyName) 103 suite.addTest("setIfaceName", setIfaceName) 104 suite.addTest("printFooName", printFooName) 105 suite.addTest("printNooName", printNooName) 106 suite.addTest("setSubFooName", setSubFooName) 107 108 suite.addTest("test_iface_subBaseFun_base", test_iface_subBaseFun_base) 109 suite.addTest("test_iface_subBaseElem_base", test_iface_subBaseElem_base) 110 111 exit(suite.run()) 112}