summaryrefslogtreecommitdiff
path: root/test/files/jvm
diff options
context:
space:
mode:
authorAntonio Cunei <antonio.cunei@epfl.ch>2010-05-28 15:34:32 +0000
committerAntonio Cunei <antonio.cunei@epfl.ch>2010-05-28 15:34:32 +0000
commit0b006e7762a8c3ec2f5d02c8c7c34b09511e6a47 (patch)
treed506f42b6847b9ece5240d062bb9e4b97a450019 /test/files/jvm
parent5da8a164cdd276e191ab6429e5a64e02529bbe45 (diff)
downloadscala-0b006e7762a8c3ec2f5d02c8c7c34b09511e6a47.tar.gz
scala-0b006e7762a8c3ec2f5d02c8c7c34b09511e6a47.tar.bz2
scala-0b006e7762a8c3ec2f5d02c8c7c34b09511e6a47.zip
Re-enabled a number of previously disabled tests;
according to my tests, they all currently work.
Diffstat (limited to 'test/files/jvm')
-rw-r--r--test/files/jvm/JavaInteraction.check4
-rw-r--r--test/files/jvm/JavaInteraction.scala23
-rw-r--r--test/files/jvm/libnatives-32.sobin0 -> 5359 bytes
-rw-r--r--test/files/jvm/libnatives-64.sobin0 -> 7466 bytes
-rw-r--r--test/files/jvm/libnatives.jnilibbin0 -> 8456 bytes
-rwxr-xr-xtest/files/jvm/mkLibNatives.bat67
-rwxr-xr-xtest/files/jvm/mkLibNatives.sh61
-rw-r--r--test/files/jvm/natives-32.dllbin0 -> 40960 bytes
-rw-r--r--test/files/jvm/natives.c8
-rw-r--r--test/files/jvm/natives.check1
-rw-r--r--test/files/jvm/natives.h21
-rw-r--r--test/files/jvm/natives.scala23
12 files changed, 208 insertions, 0 deletions
diff --git a/test/files/jvm/JavaInteraction.check b/test/files/jvm/JavaInteraction.check
new file mode 100644
index 0000000000..fb9d3cdd8c
--- /dev/null
+++ b/test/files/jvm/JavaInteraction.check
@@ -0,0 +1,4 @@
+p.x = 5
+p.c = java.awt.Color[r=255,g=0,b=0]
+p.getX() = 5.0
+p.getC() = java.awt.Color[r=255,g=0,b=0]
diff --git a/test/files/jvm/JavaInteraction.scala b/test/files/jvm/JavaInteraction.scala
new file mode 100644
index 0000000000..1316fad5d4
--- /dev/null
+++ b/test/files/jvm/JavaInteraction.scala
@@ -0,0 +1,23 @@
+//############################################################################
+// Test Java interaction
+//############################################################################
+
+import java.awt.Color;
+import java.awt.Point;
+
+class ColoredPoint(x: Int, y: Int, c_ : Color) extends Point(x, y) {
+ val c: Color = c_;
+ def getC(): Color = c;
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ val p = new ColoredPoint(5, 7, Color.RED);
+ Console.println("p.x = " + p.x);
+ Console.println("p.c = " + p.c);
+ Console.println("p.getX() = " + p.getX());
+ Console.println("p.getC() = " + p.getC());
+ }
+}
+
+//############################################################################
diff --git a/test/files/jvm/libnatives-32.so b/test/files/jvm/libnatives-32.so
new file mode 100644
index 0000000000..ccbcdd646f
--- /dev/null
+++ b/test/files/jvm/libnatives-32.so
Binary files differ
diff --git a/test/files/jvm/libnatives-64.so b/test/files/jvm/libnatives-64.so
new file mode 100644
index 0000000000..8cc6152057
--- /dev/null
+++ b/test/files/jvm/libnatives-64.so
Binary files differ
diff --git a/test/files/jvm/libnatives.jnilib b/test/files/jvm/libnatives.jnilib
new file mode 100644
index 0000000000..daac50e3df
--- /dev/null
+++ b/test/files/jvm/libnatives.jnilib
Binary files differ
diff --git a/test/files/jvm/mkLibNatives.bat b/test/files/jvm/mkLibNatives.bat
new file mode 100755
index 0000000000..100246af79
--- /dev/null
+++ b/test/files/jvm/mkLibNatives.bat
@@ -0,0 +1,67 @@
+@echo off
+
+rem ##########################################################################
+rem # Author : Stephane Micheloud
+rem ##########################################################################
+
+rem ##########################################################################
+rem # variables
+
+if "%OS%"=="Windows_NT" @setlocal
+
+rem debug switches are: off=0, on=1
+set DEBUG=0
+set STDOUT=NUL
+if %DEBUG%==1 set STDOUT=CON
+
+set CLASS_NAME=Test$
+set CLASS_DIR=.
+
+set OBJ_NAME=natives
+set LIB_NAME=natives-32
+
+if "%JAVA_HOME%"=="" goto error1
+if "%VSINSTALLDIR%"=="" goto error2
+
+set JAVAH=%JAVA_HOME%\bin\javah
+set JAVAH_OPTIONS=-jni -force -classpath %CLASS_DIR% -o %OBJ_NAME%.h
+
+set CC=%VSINSTALLDIR%\vc\bin\cl
+set CC_OPTIONS=/nologo /c
+set CC_INCLUDES=-I%VSINSTALLDIR%\vc\include -I%JAVA_HOME%\include -I%JAVA_HOME%\include\win32
+
+set LNK_OPTIONS=/nologo /MT /LD
+
+rem variable LIB is used by the C++ linker to find libcmt.lib, ..
+set LIB=%VSINSTALLDIR%\vc\lib
+
+rem ##########################################################################
+rem # commands
+
+del /s/q *.obj *.exp *.lib *.dll 1>%STDOUT%
+
+if %DEBUG%==1 echo %JAVAH% %JAVAH_OPTIONS% %CLASS_NAME%
+%JAVAH% %JAVAH_OPTIONS% %CLASS_NAME%
+
+if %DEBUG%==1 echo %CC% %CC_OPTIONS% %CC_INCLUDES% /Fo%OBJ_NAME%.obj natives.c
+%CC% %CC_OPTIONS% %CC_INCLUDES% /Fo%OBJ_NAME%.obj natives.c 1>%STDOUT%
+
+if %DEBUG%==1 echo %CC% %LNK_OPTIONS% /Fe%LIB_NAME%.dll %OBJ_NAME%.obj
+%CC% %LNK_OPTIONS% /Fe%LIB_NAME%.dll %OBJ_NAME%.obj 1>%STDOUT%
+
+goto end
+
+rem ##########################################################################
+rem # subroutines
+
+:error1
+echo ERROR: environment variable JAVA_HOME is undefined. It should point to your JDK installation.
+goto end
+
+:error2
+echo ERROR: environment variable VSINSTALLDIR is undefined. It should point to your MS Visual Studio installation.
+goto end
+
+:end
+if "%OS%"=="Windows_NT" @endlocal
+
diff --git a/test/files/jvm/mkLibNatives.sh b/test/files/jvm/mkLibNatives.sh
new file mode 100755
index 0000000000..ed80c24c3e
--- /dev/null
+++ b/test/files/jvm/mkLibNatives.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+##############################################################################
+# Author : Stephane Micheloud
+##############################################################################
+
+##############################################################################
+# variables
+
+# set any value to enable debugging output
+debug=
+
+cygwin=false;
+darwin=false;
+case "`uname`" in
+ CYGWIN*) cygwin=true ;;
+ Darwin*) darwin=true ;;
+esac
+
+CLASS_NAME=Test\$
+CLASS_DIR=natives-jvm.obj
+
+OBJ_NAME=natives
+LIB_NAME=libnatives
+
+if [ -z "${JAVA_HOME}" ]; then
+ echo "environment variable JAVA_HOME is undefined."
+ exit
+elif $cygwin; then
+ echo "Cygwin not supported (use 'mkLibNatives.bat')."
+ exit
+fi
+
+JAVAH=${JAVA_HOME}/bin/javah
+JAVAH_OPTIONS="-jni -force -classpath ${CLASS_DIR} -o ${OBJ_NAME}.h"
+
+CC=gcc
+
+if $darwin; then
+ CC_OPTIONS="-c -arch ppc -arch i386"
+ CC_INCLUDES="-I/System/Library/Frameworks/JavaVM.framework/Headers"
+ LNK_OPTIONS="-dynamiclib -framework JavaVM"
+ FULL_LIB_NAME=${LIB_NAME}.jnilib
+else
+ CC_OPTIONS=-c
+ CC_INCLUDES="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/${OSTYPE}"
+ LNK_OPTIONS="-shared -Wl,-soname,${LIB_NAME}"
+ FULL_LIB_NAME=${LIB_NAME}.so
+fi
+
+##############################################################################
+# commands
+
+[ $debug ] && echo ${JAVAH} ${JAVAH_OPTIONS} ${CLASS_NAME}
+${JAVAH} ${JAVAH_OPTIONS} ${CLASS_NAME}
+
+[ $debug ] && echo ${CC} ${CC_OPTIONS} ${CC_INCLUDES} -o ${OBJ_NAME}.o natives.c
+${CC} ${CC_OPTIONS} ${CC_INCLUDES} -o ${OBJ_NAME}.o natives.c
+
+[ $debug ] && echo ${CC} ${LNK_OPTIONS} -o ${FULL_LIB_NAME} ${OBJ_NAME}.o
+${CC} ${LNK_OPTIONS} -o ${FULL_LIB_NAME} ${OBJ_NAME}.o
diff --git a/test/files/jvm/natives-32.dll b/test/files/jvm/natives-32.dll
new file mode 100644
index 0000000000..a06c1da3e3
--- /dev/null
+++ b/test/files/jvm/natives-32.dll
Binary files differ
diff --git a/test/files/jvm/natives.c b/test/files/jvm/natives.c
new file mode 100644
index 0000000000..7b6d7b5ba5
--- /dev/null
+++ b/test/files/jvm/natives.c
@@ -0,0 +1,8 @@
+#include "natives.h"
+
+JNIEXPORT jstring JNICALL Java_Test_00024_sayHello
+ (JNIEnv *env, jobject thisobject, jstring js)
+
+{
+ return js;
+}
diff --git a/test/files/jvm/natives.check b/test/files/jvm/natives.check
new file mode 100644
index 0000000000..2265459198
--- /dev/null
+++ b/test/files/jvm/natives.check
@@ -0,0 +1 @@
+Invocation returned "Scala is great!"
diff --git a/test/files/jvm/natives.h b/test/files/jvm/natives.h
new file mode 100644
index 0000000000..0d360d3654
--- /dev/null
+++ b/test/files/jvm/natives.h
@@ -0,0 +1,21 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class Test__ */
+
+#ifndef _Included_Test__
+#define _Included_Test__
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: Test__
+ * Method: sayHello
+ * Signature: (Ljava/lang/String;)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_Test_00024_sayHello
+ (JNIEnv *, jobject, jstring);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/test/files/jvm/natives.scala b/test/files/jvm/natives.scala
new file mode 100644
index 0000000000..14ee4e1c1b
--- /dev/null
+++ b/test/files/jvm/natives.scala
@@ -0,0 +1,23 @@
+object Test {
+
+ //println("java.library.path=" + System.getProperty("java.library.path"))
+
+ val sysWordSize = System.getProperty("sun.arch.data.model", "32")
+ val sysType = System.getProperty("os.name")
+
+ val libName =
+ if (sysType == "Mac OS X")
+ "natives"
+ else
+ "natives-" + sysWordSize
+
+ System.loadLibrary(libName)
+
+ @native
+ def sayHello(s: String): String = null
+
+ def main(args: Array[String]) {
+ val s = sayHello("Scala is great!")
+ println("Invocation returned \"" + s + "\"")
+ }
+}