//############################################################################
// Arrays
//############################################################################
// $Id$
//############################################################################
import java.lang.System; // to avoid name clash with .NET's library
object arrays {
type JObject = java.lang.Object;
type JSet = java.util.Set;
def check(what: String, actual: Any, expected: Any): Unit = {
val success: Boolean = actual == expected;
System.out.print(if (success) "ok" else "KO");
var value: String = if (actual == null) "null" else actual.toString();
if (value == "\u0000") value = "\\u0000";
System.out.print(": " + what + " = " + value);
if (!success) System.out.print(" != " + expected);
System.out.println();
System.out.flush();
}
def check1(name: String, array: Array[Any], i: Int, exp: Any): Unit = {
check (name+"("+i+")", array(i), exp);
}
def check2(name: String, array: Array[AnyVal], i: Int, exp: AnyVal): Unit = {
check (name+"("+i+")", array(i), exp);
}
def check3(name: String, array: Array[AnyRef], i: Int, exp: AnyRef): Unit = {
check (name+"("+i+")", array(i), exp);
}
def check4(name: String, array: Array[Object], i: Int, exp: Object): Unit = {
check (name+"("+i+")", array(i), exp);
}
def check5(name: String, array: Array[JObject], i: Int, exp: JObject): Unit={
check (name+"("+i+")", array(i), exp);
}
def check6(name: String, array: Array[Double], i: Int, exp: Double): Unit = {
check (name+"("+i+")", array(i), exp);
}
def test: Unit = {
val zarray: Array[Boolean] = new Array[Boolean](2);
val barray: Array[Byte] = new Array[Byte](2);
val sarray: Array[Short] = new Array[Short](2);
val carray: Array[Char] = new Array[Char](2);
val iarray: Array[Int] = new Array[Int](2);
val larray: Array[Long] = new Array[Long](2);
val farray: Array[Float] = new Array[Float](2);
val darray: Array[Double] = new Array[Double](2);
// !!! test Array[Any]
// !!! test Array[AnyVal] ?
val rarray: Array[AnyRef] = new Array[AnyRef](2);
// !!! test Array[Object]
// !!! test Array[List]
// !!! test Array[JavaObject]
// !!! test Array[JavaSet]
check("zarray.length", zarray.length, 2);
check("barray.length", barray.length, 2);
check("sarray.length", sarray.length, 2);
check("carray.length", carray.length, 2);
check("iarray.length", iarray.length, 2);
check("larray.length", larray.length, 2);
check("farray.length", farray.length, 2);
check("darray.length", darray.length, 2);
check("rarray.length", rarray.length, 2);
System.out.println();
check("zarray(0)", zarray(0), false);
check("barray(0)", barray(0), 0: byte);
check("sarray(0)", sarray(0), 0: short);
check("carray(0)", carray(0), '\u0000');
check("iarray(0)", iarray(0), 0);
check("larray(0)", larray(0), 0l);
check("farray(0)", farray(0), 0f);
check("darray(0)", darray(0), 0d);
check("rarray(0)", rarray(0), null);
System.out.println();
check("zarray(1)", zarray(1), false);
check("barray(1)", barray(1), 0: byte);
check("sarray(1)", sarray(1), 0: short);
check("carray(1)", carray(1), '\u0000');
check("iarray(1)", iarray(1), 0);
check("larray(1)", larray(1), 0l);
check("farray(1)", farray(1), 0f);
check("darray(1)", darray(1), 0d);
check("rarray(1)", rarray(1), null);
System.out.println();
zarray(0) = false;
barray(0) = 1.asInstanceOf[Byte];
sarray(0) = 2.asInstanceOf[Short];
carray(0) ='3';
iarray(0) = 4;
larray(0) = 5;
farray(0) = 6;
darray(0) = 7;
rarray(0) ="8";
zarray(1) = true;
barray(1) = 2.asInstanceOf[Byte];
sarray(1) = 3.asInstanceOf[Short];
carray(1) ='4';
iarray(1) = 5;
larray(1) = 6;
farray(1) = 7;
darray(1) = 8;
rarray(1) ="9";
check("zarray(0)", zarray(0), false);
check("barray(0)", barray(0), 1: byte);
check("sarray(0)", sarray(0), 2: short);
check("carray(0)", carray(0),'3');
check("iarray(0)", iarray(0), 4);
check("larray(0)", larray(0), 5l);
check("farray(0)", farray(0), 6f);
check("darray(0)", darray(0), 7d);
check("rarray(0)", rarray(0),"8");
System.out.println();
check("zarray(1)", zarray(1), true);
check("barray(1)", barray(1), 2: byte);
check("sarray(1)", sarray(1), 3: short);
check("carray(1)", carray(1),'4');
check("iarray(1)", iarray(1), 5);
check("larray(1)", larray(1), 6l);
check("farray(1)", farray(1), 7f);
check("darray(1)", darray(1), 8d);
check("rarray(1)", rarray(1),"9");
System.out.println();
// !!! check1("zarray(1)", zarray, 1, true);
// !!! check2("zarray(1)", zarray, 1, true);
// !!! ...
}
}
//############################################################################
object Test {
def main(args: Array[String]): Unit = {
arrays.test;
}
}
//############################################################################