]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.reflection/tests/org/simantics/scl/reflection/tests/TestReflectionUtils.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.reflection / tests / org / simantics / scl / reflection / tests / TestReflectionUtils.java
diff --git a/bundles/org.simantics.scl.reflection/tests/org/simantics/scl/reflection/tests/TestReflectionUtils.java b/bundles/org.simantics.scl.reflection/tests/org/simantics/scl/reflection/tests/TestReflectionUtils.java
new file mode 100755 (executable)
index 0000000..7e3ccda
--- /dev/null
@@ -0,0 +1,54 @@
+package org.simantics.scl.reflection.tests;\r
+\r
+import static junit.framework.Assert.*;\r
+import static org.simantics.scl.compiler.types.Types.parseType;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.junit.Test;\r
+import org.simantics.scl.reflection.MinimalTypeBindingScheme;\r
+import org.simantics.scl.reflection.ReflectionUtils;\r
+import org.simantics.scl.reflection.TypeBindingScheme;\r
+import org.simantics.scl.runtime.function.Function;\r
+\r
+public class TestReflectionUtils {\r
+\r
+    @Test\r
+    public void testReflectionUtils() throws Exception {\r
+        TypeBindingScheme s = MinimalTypeBindingScheme.INSTANCE;        \r
+        \r
+        Class<?> c = getClass();\r
+        \r
+        assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("Integer"), Integer.class));\r
+        assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("Integer"), int.class));\r
+        assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("String"), String.class));\r
+        assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("[String]"), List.class));\r
+        assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("[String]"), ArrayList.class));\r
+        assertTrue(ReflectionUtils.isAssignableFrom(s, List.class, parseType("[String]")));\r
+        assertFalse(ReflectionUtils.isAssignableFrom(s, ArrayList.class, parseType("[String]")));\r
+        assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("String -> String"), \r
+                Function.class));\r
+        assertTrue(ReflectionUtils.isCompatible(s, parseType("String -> Integer"), \r
+                c.getMethod("method1", String.class)));\r
+        assertTrue(ReflectionUtils.isCompatible(s, parseType("String -> ()"), \r
+                c.getMethod("method2", String.class)));\r
+        assertTrue(ReflectionUtils.isCompatible(s, parseType("Integer"), \r
+                c.getMethod("method3")));\r
+        \r
+        assertFalse(ReflectionUtils.isAssignableFrom(s, parseType("String"), Integer.class));\r
+        \r
+    }\r
+    \r
+    public static int method1(String a) {\r
+        return a.length();\r
+    }\r
+    \r
+    public static void method2(String a) {\r
+        System.out.println(a);\r
+    }\r
+    \r
+    public static int method3() {\r
+        return 3;\r
+    }\r
+}\r