1/* 2 * Copyright (c) 2023 - 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 16function main():void{ 17 assert foo1() == 10; 18 assert foo2() == "a"; 19 assert foo3() == true; 20 21 assert foo4() == 30; 22 assert foo4(new Int(5)) == 25; 23 24 assert foo5(new Int(5)) == 55; 25 assert foo5(new Int(5),new Int(10)) == 45; 26 27 28 assert foo6() == undefined; 29 assert foo7() == undefined; 30 assert foo8() == undefined; 31 32 assert foo9() == 0; 33 assert foo9(new Int(5)) == -1; 34 35 assert foo10(new Int(5)) == 0; 36 assert foo10(new Int(5),new Int(10)) == -1; 37 38 assert foo11() == 0; 39 assert foo12() == 0; 40 41 assert foo13(new Int(10)) == 15; 42 assert foo14(new Int(10)) == 25; 43 44 assert foo15(new Int(10),new Int(5)) == 20; 45 assert foo16(new Int(10),new Int(5)) == 30; 46} 47 48function foo1(a : Int = 10) : Int { 49 return a; 50} 51 52function foo2(a : string = "a") : string { 53 return a; 54} 55 56function foo3(a : Boolean = true) : Boolean { 57 return a; 58} 59 60function foo4(a : Int = 10, b : Int = 20) : Int { 61 return a + b; 62} 63 64function foo5(a : Int = 10, b : Int = 20, c : Int = 30) : Int { 65 assert a == 5; 66 67 return a + b + c; 68} 69 70function foo6(a? : Int) : Int|undefined { 71 return a; 72} 73 74function foo7(a? : string) : string|undefined { 75 return a; 76} 77 78function foo8(a? : Boolean) : Boolean|undefined { 79 return a; 80} 81 82function foo9(a? : Int, b? : Int) : Int { 83 if(a == undefined && b == undefined){ 84 return 0; 85 } 86 if(b == undefined){ 87 return -1; 88 } 89 return a! + b; 90} 91 92function foo10(a? : Int, b? : Int, c? : Int) : Int { 93 assert a! == 5; 94 if(b == undefined && c == undefined){ 95 return 0; 96 } 97 if(c == undefined){ 98 return -1; 99 } 100 101 return a! + b! + c; 102} 103 104function foo11(a : Int = 5, b? : Int) : Int { 105 if(b == undefined){ 106 return 0; 107 } 108 return a + b; 109} 110 111function foo12(a? : Int, b : Int = 5, c? : Int) : Int { 112 assert b == 5; 113 114 if(a == undefined && c == undefined){ 115 return 0; 116 } 117 118 return a! + b + c!; 119} 120 121function foo13(a : Int, b : Int = 5) : Int { 122 return a + b; 123} 124 125function foo14(a : Int, b : Int = 5, c : Int = 10) : Int { 126 return a + b + c; 127} 128 129function foo15(a : Int, b : Int, c : Int = 5) : Int { 130 return a + b + c; 131} 132 133function foo16(a : Int, b : Int, c : Int = 10, d : Int = 5) : Int { 134 return a + b + c + d; 135} 136