blob: d442cda5937cf0614ea218187db96ada18a18939 [file] [log] [blame]
fun barB(vararg args: Byte) = args
fun barC(vararg args: Char) = args
fun barD(vararg args: Double) = args
fun barF(vararg args: Float) = args
fun barI(vararg args: Int) = args
fun barJ(vararg args: Long) = args
fun barS(vararg args: Short) = args
fun barZ(vararg args: Boolean) = args
fun sumInt(x: Int, vararg args: Int): Int {
var result = x
for(a in args) {
result += a
}
return result
}
fun sumFunOnParameters(x: Int, vararg args: Int, f: (Int) -> Int): Int {
var result = f(x)
for(a in args) {
result += f(a)
}
return result
}
fun concatParameters(vararg args: Int): String {
var result = ""
for(a in args) {
result += a.toString()
}
return result
}
fun box(): String {
val aB = ByteArray(3)
val aC = CharArray(3)
val aD = DoubleArray(3)
val aF = FloatArray(3)
val aI = IntArray(3)
aI[0] = 1
aI[1] = 2
aI[2] = 3
val bI = IntArray(2)
bI[0] = 4
bI[1] = 5
val aJ = LongArray(3)
val aS = ShortArray(3)
val aZ = BooleanArray(3)
if (barB(*aB, 23.toByte()).size != 4) return "fail: Byte"
if (barB(11.toByte(), *aB, 23.toByte(), *aB).size != 8) return "fail: Byte"
if (barC(*aC, 'A').size != 4) return "fail: Char"
if (barC('A', *aC, 'A', *aC).size != 8) return "fail: Char"
if (barD(*aD, 2.3).size != 4) return "fail: Double"
if (barD(*aD, *aD, 2.3).size != 7) return "fail: Double"
if (barF(*aF, 2.3f).size != 4) return "fail: Float"
if (barF(*aF, 2.3f, 1.1f).size != 5) return "fail: Float"
if (barI(*aI, 23).size != 4) return "fail: Int"
if (barI(11, 10, *aI, 23).size != 6) return "fail: Int"
if (barI(100, *aI, *aI).size != 7) return "fail: Int 3"
if (sumInt(100, *aI) != 106) return "fail: sumInt 1"
if (sumInt(100, *aI, 200) != 306) return "fail: sumInt 2"
if (sumInt(100, *aI, *aI) != 112) return "fail: sumInt 3"
if (sumFunOnParameters(100, *aI, 200) { 2*it } != 612) return "fail: sumFunOnParameters 1"
if (sumFunOnParameters(100, *aI, *aI) { 2*it } != 224) return "fail: sumFunOnParameters 2"
if (concatParameters(1,2,3) != "123") return "fail: concatParameters 1"
if (concatParameters(*aI) != "123") return "fail: concatParameters 2"
if (concatParameters(4, 5, *aI) != "45123") return "fail: concatParameters 3"
if (concatParameters(*aI, 4, 5) != "12345") return "fail: concatParameters 4"
if (concatParameters(*aI, *bI) != "12345") return "fail: concatParameters 5"
if (concatParameters(*aI, 7, 8, *bI) != "1237845") return "fail: concatParameters 6"
if (concatParameters(*aI, 7, *bI, *aI, 9) != "1237451239") return "fail: concatParameters 7"
if (barJ(*aJ, 23L).size != 4) return "fail: Long"
if (barJ(*aJ, 23L, *aJ, *aJ).size != 10) return "fail: Long"
if (barS(*aS, 23.toShort()).size != 4) return "fail: Short"
if (barS(*aS, *aS, 23.toShort(), *aS).size != 10) return "fail: Short"
if (barZ(*aZ, true).size != 4) return "fail: Boolean"
if (barZ(false, *aZ, true, *aZ).size != 8) return "fail: Boolean"
return "OK"
}