blob: 267786596a5b490152b792f1f49e28116b4b9429 [file] [log] [blame]
package groovy
class ArrayCoerceTest extends GroovyTestCase {
Object[] field
Long[] numberField
int[] primitiveField
void testStaticallyTypedPrimitiveTypeArrays() {
int[] a = [1, 2, 3]
assert a instanceof int[]
assert a.length == 3
dump(a)
}
void testStaticallyTypedPrimitiveFieldArrays() {
primitiveField = [1, 2, 3]
dump(primitiveField)
assert primitiveField instanceof int[]
assert primitiveField.length == 3
}
void testFoo2() {
def x = [1, 2, 3] as Object[]
dump(x)
assert x instanceof Object[]
def c = x.getClass()
def et = c.componentType
assert et == Object.class
}
void testStaticallyTypedObjectArrays() {
Object[] b = [1, 2, 3]
dump(b)
assert b instanceof Object[]
assert b.length == 3
def c = b.getClass()
def et = c.componentType
assert et == Object.class
}
void testStaticallyTypedArrays() {
Integer[] b = [1, 2, 3]
dump(b)
assert b instanceof Integer[]
assert b.length == 3
def c = b.getClass()
def et = c.componentType
assert et == Integer.class
}
void testStaticallyTypedObjectFieldArrays() {
field = [1, 2, 3]
dump(field)
assert field instanceof Object[]
assert field.length == 3
}
void testStaticallyTypedFieldArrays() {
numberField = [1, 2, 3]
dump(numberField)
assert numberField instanceof Long[]
assert numberField.length == 3
}
void testMakePrimitiveArrayTypes() {
def x = null
x = [1, 0, 1] as boolean[]
assert x instanceof boolean[]
assert x.length == 3
dump(x)
x = [1, 2, 3] as byte[]
assert x.length == 3
assert x instanceof byte[]
dump(x)
x = [1, 2, 3] as char[]
assert x.length == 3
assert x instanceof char[]
dump(x)
x = [1, 2, 3] as short[]
assert x.length == 3
assert x instanceof short[]
dump(x)
x = [1, 2, 3] as int[]
assert x.length == 3
assert x instanceof int[]
dump(x)
x = [1, 2, 3] as long[]
assert x.length == 3
assert x instanceof long[]
dump(x)
x = [1, 2, 3] as float[]
assert x.length == 3
assert x instanceof float[]
dump(x)
x = [1, 2, 3] as double[]
assert x.length == 3
assert x instanceof double[]
dump(x)
}
void testAsObjectArray() {
def x = [1, 2, 3] as Object[]
def c = x.getClass()
def et = c.componentType
assert et == Object.class
dump(x)
Integer[] y = [1, 2, 3]
c = y.getClass()
et = c.componentType
assert et == Integer.class
dump(y)
}
void testMakeArrayThenCoerceToAnotherType() {
def x = [1, 2, 3] as int[]
assert x.size() == 3
assert x instanceof int[]
dump(x)
// lets try coerce it into an array of longs
def y = x as long[]
assert y instanceof long[]
dump(y)
def z = y as Object[]
assert z instanceof Object[]
def c = z.getClass()
def et = c.componentType
assert et == Object.class
dump(z)
x = y as int[]
assert x.size() == 3
assert x instanceof int[]
dump(x)
}
void testMakeArrayTypes() {
def x = null
x = [1, 0, 1] as Boolean[]
assert x instanceof Boolean[]
assert x.length == 3
dump(x)
x = [1, 2, 3] as Byte[]
assert x.length == 3
assert x instanceof Byte[]
dump(x)
x = [1, 2, 3] as Character[]
assert x.length == 3
assert x instanceof Character[]
dump(x)
x = [1, 2, 3] as Short[]
assert x.length == 3
assert x instanceof Short[]
dump(x)
x = [1, 2, 3] as Integer[]
assert x.length == 3
assert x instanceof Integer[]
dump(x)
x = [1, 2, 3] as Long[]
assert x.length == 3
assert x instanceof Long[]
dump(x)
x = [1, 2, 3] as Float[]
assert x.length == 3
assert x instanceof Float[]
dump(x)
x = [1, 2, 3] as Double[]
assert x.length == 3
assert x instanceof Double[]
dump(x)
}
void dump(array) {
println "Array is of type ${array.class} which has element type ${array.class.componentType}"
for (i in array) {
println "Contains entry $i of type ${i.class}"
}
println()
}
}