summaryrefslogtreecommitdiff
path: root/test/pending/jvm
diff options
context:
space:
mode:
authorAntonio Cunei <antonio.cunei@epfl.ch>2008-08-29 13:50:04 +0000
committerAntonio Cunei <antonio.cunei@epfl.ch>2008-08-29 13:50:04 +0000
commitaf2e9f53fe30f9005157df6070fab2a582fa4769 (patch)
treef48851160bf42d8175d3271be0bd0cae10c2067d /test/pending/jvm
parentb85a3d25fcba0e6c6f056b926d02e87fc3b5b041 (diff)
downloadscala-af2e9f53fe30f9005157df6070fab2a582fa4769.tar.gz
scala-af2e9f53fe30f9005157df6070fab2a582fa4769.tar.bz2
scala-af2e9f53fe30f9005157df6070fab2a582fa4769.zip
disable inner.scala test.
Diffstat (limited to 'test/pending/jvm')
-rw-r--r--test/pending/jvm/inner.scala126
1 files changed, 126 insertions, 0 deletions
diff --git a/test/pending/jvm/inner.scala b/test/pending/jvm/inner.scala
new file mode 100644
index 0000000000..4ad1f1e215
--- /dev/null
+++ b/test/pending/jvm/inner.scala
@@ -0,0 +1,126 @@
+//############################################################################
+// Test Java interaction with scala inner classes
+//############################################################################
+// $Id$
+
+import java.io.{BufferedReader, File, FileWriter, InputStreamReader}
+
+class A {
+ val abc = "A.abc"
+
+ protected class B(x: Int, y: String) {
+ println(abc); println(x)
+ println(y)
+ }
+
+ trait Itf {
+ def method1(x: Int): Int
+
+ trait Itf2 extends Itf {
+ def method2: Unit
+ }
+ }
+
+ trait PlainTrait {
+ def method1(x: Int): Int
+ }
+
+ class Impl(a: Int) extends Itf {
+ def method1(x: Int) = {
+ println(x)
+ println(a)
+ x + a
+ }
+ }
+
+ class Impl2 extends Impl(1) with Itf#Itf2 {
+ def method2 = {
+ println(abc)
+ }
+ }
+
+ def newImpl: Itf = new Impl(1)
+ def newImpl2: Itf#Itf2 = new Impl2
+
+ class Outer1(arg1: Int) {
+ class Outer2(arg2: Int) {
+ class Outer3(arg3: Int) {
+ println("Outer3: " + arg1 + " " + arg2 + " " + arg3);
+ }
+ }
+ }
+}
+
+object Scalatest {
+ private val outputdir = System.getProperty("scalatest.output", "inner-jvm.obj")
+ private val scalalib = System.getProperty("scalatest.lib", "")
+ private val classpath = outputdir + File.pathSeparator + scalalib
+ private val javabin = {
+ val jhome = new File(System.getProperty("java.home"))
+ if (jhome.getName == "jre")
+ new File(jhome.getParent, "bin").getAbsolutePath
+ else
+ new File(jhome, "bin").getAbsolutePath
+ }
+ private val javacmd = javabin + File.separator + "java"
+ private val javac = javabin + File.separator + "javac"
+
+ def javac(src: String, fname: String) {
+ val tmpfilename = outputdir + File.separator + fname
+ val tmpfile = new FileWriter(tmpfilename)
+ tmpfile.write(src)
+ tmpfile.close
+ exec(javac + " -d " + outputdir + " -classpath " + classpath + " " + tmpfilename)
+ }
+
+ def java(cname: String) =
+ exec(javacmd + " -cp " + classpath + " " + cname)
+
+ /** Execute cmd, wait for the process to end and pipe it's output to stdout */
+ private def exec(cmd: String) {
+ val proc = Runtime.getRuntime().exec(cmd)
+ val inp = new BufferedReader(new InputStreamReader(proc.getInputStream))
+ val errp = new BufferedReader(new InputStreamReader(proc.getErrorStream))
+ proc.waitFor()
+ while (inp.ready) println(inp.readLine())
+ while (errp.ready) println(errp.readLine())
+ }
+}
+
+object Test {
+ def main(args: Array[String]) {
+ val javaInteraction = """
+public class JavaInteraction {
+ public static void main(String[] args) {
+ A a = new A();
+ A.B b = a.new B(1, "Hello");
+
+ A.Itf itf = a.newImpl();
+ itf.method1(1);
+
+ A.Itf.Itf2 itf2 = a.newImpl2();
+ itf2.method2();
+
+ A.Outer1 o1 = a.new Outer1(1);
+ A.Outer1.Outer2 o2 = o1.new Outer2(2);
+ A.Outer1.Outer2.Outer3 or = o2.new Outer3(3);
+ }
+}
+"""
+ Scalatest.javac(javaInteraction, "JavaInteraction.java")
+ Scalatest.java("JavaInteraction")
+
+ val accessingScala = """
+public class AccessingScala {
+ public static void main(String[] args) {
+ A a = new A();
+ System.out.println(a.abc());
+ }
+}
+"""
+ Scalatest.javac(accessingScala, "AccessingScala.java")
+ Scalatest.java("AccessingScala")
+ }
+}
+
+//############################################################################