diff options
author | Paul Phillips <paulp@improving.org> | 2010-01-16 03:54:39 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-01-16 03:54:39 +0000 |
commit | 36ef60e68c03bc1c7fd2e910ae7d70d4ec32d3bf (patch) | |
tree | d663145af9c6e9f02bed79fbcd83549234c8727c /test/files/run | |
parent | 74c615c83567c930ce371833ff4b275312a4540f (diff) | |
download | scala-36ef60e68c03bc1c7fd2e910ae7d70d4ec32d3bf.tar.gz scala-36ef60e68c03bc1c7fd2e910ae7d70d4ec32d3bf.tar.bz2 scala-36ef60e68c03bc1c7fd2e910ae7d70d4ec32d3bf.zip |
Exposed native Array clone() method.
Review by dragos.
Diffstat (limited to 'test/files/run')
-rw-r--r-- | test/files/run/arrayclone.scala | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/test/files/run/arrayclone.scala b/test/files/run/arrayclone.scala new file mode 100644 index 0000000000..2b56c53469 --- /dev/null +++ b/test/files/run/arrayclone.scala @@ -0,0 +1,106 @@ +object Test extends Application{ + BooleanArrayClone; + ByteArrayClone; + ShortArrayClone; + CharArrayClone; + IntArrayClone; + LongArrayClone; + FloatArrayClone; + DoubleArrayClone; + ObjectArrayClone; + PolymorphicArrayClone; +} + +object BooleanArrayClone{ + val it : Array[Boolean] = Array(true, false); + val cloned = it.clone(); + assert(cloned.sameElements(it)); + cloned(0) = false; + assert(it(0) == true) +} + +object ByteArrayClone{ + val it : Array[Byte] = Array(1, 0); + val cloned = it.clone(); + assert(cloned.sameElements(it)); + cloned(0) = 0; + assert(it(0) == 1) +} + +object ShortArrayClone{ + val it : Array[Short] = Array(1, 0); + val cloned = it.clone(); + assert(cloned.sameElements(it)); + cloned(0) = 0; + assert(it(0) == 1) +} + +object CharArrayClone{ + val it : Array[Char] = Array(1, 0); + val cloned = it.clone(); + assert(cloned.sameElements(it)); + cloned(0) = 0; + assert(it(0) == 1) +} + +object IntArrayClone{ + val it : Array[Int] = Array(1, 0); + val cloned = it.clone(); + assert(cloned.sameElements(it)); + cloned(0) = 0; + assert(it(0) == 1) +} + +object LongArrayClone{ + val it : Array[Long] = Array(1, 0); + val cloned = it.clone(); + assert(cloned.sameElements(it)); + cloned(0) = 0; + assert(it(0) == 1) +} + +object FloatArrayClone{ + val it : Array[Float] = Array(1, 0); + val cloned = it.clone(); + assert(cloned.sameElements(it)); + cloned(0) = 0; + assert(it(0) == 1) +} + +object DoubleArrayClone{ + val it : Array[Double] = Array(1, 0); + val cloned = it.clone(); + assert(cloned.sameElements(it)); + cloned(0) = 0; + assert(it(0) == 1) +} + +object ObjectArrayClone{ + val it : Array[String] = Array("1", "0"); + val cloned = it.clone(); + assert(cloned.sameElements(it)); + cloned(0) = "0"; + assert(it(0) == "1") +} + +object PolymorphicArrayClone{ + def testIt[T](it : Array[T], one : T, zero : T) = { + val cloned = it.clone(); + assert(cloned.sameElements(it)); + cloned(0) = zero; + assert(it(0) == one) + } + + testIt(Array("one", "two"), "one", "two"); + + class Mangler[T: Manifest](ts : T*){ + // this will always be a BoxedAnyArray even after we've unboxed its contents. + val it = ts.toArray[T]; + } + + val mangled = new Mangler[Int](0, 1); + + val y : Array[Int] = mangled.it; // make sure it's unboxed + + testIt(mangled.it, 0, 1); +} |