summaryrefslogtreecommitdiff
path: root/test/files/jvm/manifests.scala
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2008-11-25 16:04:12 +0000
committermichelou <michelou@epfl.ch>2008-11-25 16:04:12 +0000
commit2d61f09332dbc6038f869c6a23a95dca1bc3b6c7 (patch)
treedefa829dd7c0757a68b10b6b7b4235df2cb485de /test/files/jvm/manifests.scala
parent6700e9988435eb981972754ecf86d11567457e4d (diff)
downloadscala-2d61f09332dbc6038f869c6a23a95dca1bc3b6c7.tar.gz
scala-2d61f09332dbc6038f869c6a23a95dca1bc3b6c7.tar.bz2
scala-2d61f09332dbc6038f869c6a23a95dca1bc3b6c7.zip
added manifest tests and util.Marshal
Diffstat (limited to 'test/files/jvm/manifests.scala')
-rw-r--r--test/files/jvm/manifests.scala79
1 files changed, 67 insertions, 12 deletions
diff --git a/test/files/jvm/manifests.scala b/test/files/jvm/manifests.scala
index 61c5152283..a240278eaa 100644
--- a/test/files/jvm/manifests.scala
+++ b/test/files/jvm/manifests.scala
@@ -1,50 +1,100 @@
object Test extends Application {
- import scala.reflect._
+ Test1
+ Test2
+ Test3
+}
- def manifestOf[T](implicit m: Manifest[T]): Manifest[T] = m
+class Foo[T](x: T)
+trait Bar[T] { def f: T }
- def print[T](x: T)(implicit m: Manifest[T]) {
- val m1: Manifest[T] = Serialize.read(Serialize.write(m))
- val x1 = x.toString.replaceAll("@[0-9a-z]+$", "")
- println("x="+x1+", m="+m1)
- }
+object Test1 extends TestUtil {
print(())
print(true)
print('a')
print(1)
print("abc")
+ print('abc)
+ println()
print(List(()))
print(List(true))
print(List(1))
print(List("abc"))
+ print(List('abc))
+ println()
//print(Array(())) //Illegal class name "[V" in class file Test$
print(Array(true))
print(Array('a'))
print(Array(1))
print(Array("abc"))
+ print(Array('abc))
+ println()
print(((), ()))
print((true, false))
print((1, 2))
print(("abc", "xyz"))
+ print(('abc, 'xyz))
+ println()
- print(Serialize)
print(Test)
print(List)
+ println()
- class Foo[T](x: T)
print(new Foo(2))
print(new Foo(List(2)))
print(new Foo(new Foo(2)))
print(new Foo(List(new Foo(2))))
+ println()
- trait Bar[T] { def f: T }
print(new Bar[String] { def f = "abc" })
+ println()
}
-object Serialize {
+object Test2 {
+ import scala.util.Marshal._
+ println("()="+load[Unit](dump(())))
+ println("true="+load[Boolean](dump(true)))
+ println("a="+load[Char](dump('a')))
+ println("1="+load[Int](dump(1)))
+ println("'abc="+load[Symbol](dump('abc)))
+ println()
+
+ println("List(())="+load[List[Unit]](dump(List(()))))
+ println("List(true)="+load[List[Boolean]](dump(List(true))))
+ println("List('abc)="+load[List[Symbol]](dump(List('abc))))
+ println()
+
+ def loadArray[T](x: Array[Byte])(implicit m: reflect.Manifest[Array[T]]) =
+ load[Array[T]](x)(m).deepToString
+ println("Array()="+loadArray[Int](dump(Array(): Array[Int])))
+ println("Array(true)="+loadArray[Boolean](dump(Array(true))))
+ println("Array(a)="+loadArray[Char](dump(Array('a'))))
+ println("Array(1)="+loadArray[Int](dump(Array(1))))
+ println()
+
+ println("((),())="+load[(Unit, Unit)](dump(((), ()))))
+ println("(true,false)="+load[(Boolean, Boolean)](dump((true, false))))
+ println()
+
+ println("List(List(1), List(2))="+load[List[List[Int]]](dump(List(List(1), List(2)))))
+ println()
+
+ println("Array(Array(1), Array(2))="+loadArray[Array[Int]](dump(Array(Array(1), Array(2)))))
+ println()
+}
+
+object Test3 extends TestUtil {
+ import scala.reflect.Manifest._
+ val ct1 = classType(classOf[Char])
+ val ct2 = classType(classOf[List[_]], ct1)
+ print(ct1)
+ //print(ct2) // ??? x=scala.List[char], m=scala.reflect.Manifest[scala.runtime.Nothing$]
+ println()
+}
+
+trait TestUtil {
import java.io._
def write[A](o: A): Array[Byte] = {
val ba = new ByteArrayOutputStream(512)
@@ -57,5 +107,10 @@ object Serialize {
val in = new ObjectInputStream(new ByteArrayInputStream(buffer))
in.readObject().asInstanceOf[A]
}
+ import scala.reflect._
+ def print[T](x: T)(implicit m: Manifest[T]) {
+ val m1: Manifest[T] = read(write(m))
+ val x1 = x.toString.replaceAll("@[0-9a-z]+$", "")
+ println("x="+x1+", m="+m1)
+ }
}
-