]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.scl.reflection.tests;\r
2 \r
3 import static junit.framework.Assert.*;\r
4 import static org.simantics.scl.compiler.types.Types.parseType;\r
5 \r
6 import java.util.ArrayList;\r
7 import java.util.List;\r
8 \r
9 import org.junit.Test;\r
10 import org.simantics.scl.reflection.MinimalTypeBindingScheme;\r
11 import org.simantics.scl.reflection.ReflectionUtils;\r
12 import org.simantics.scl.reflection.TypeBindingScheme;\r
13 import org.simantics.scl.runtime.function.Function;\r
14 \r
15 public class TestReflectionUtils {\r
16 \r
17     @Test\r
18     public void testReflectionUtils() throws Exception {\r
19         TypeBindingScheme s = MinimalTypeBindingScheme.INSTANCE;        \r
20         \r
21         Class<?> c = getClass();\r
22         \r
23         assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("Integer"), Integer.class));\r
24         assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("Integer"), int.class));\r
25         assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("String"), String.class));\r
26         assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("[String]"), List.class));\r
27         assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("[String]"), ArrayList.class));\r
28         assertTrue(ReflectionUtils.isAssignableFrom(s, List.class, parseType("[String]")));\r
29         assertFalse(ReflectionUtils.isAssignableFrom(s, ArrayList.class, parseType("[String]")));\r
30         assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("String -> String"), \r
31                 Function.class));\r
32         assertTrue(ReflectionUtils.isCompatible(s, parseType("String -> Integer"), \r
33                 c.getMethod("method1", String.class)));\r
34         assertTrue(ReflectionUtils.isCompatible(s, parseType("String -> ()"), \r
35                 c.getMethod("method2", String.class)));\r
36         assertTrue(ReflectionUtils.isCompatible(s, parseType("Integer"), \r
37                 c.getMethod("method3")));\r
38         \r
39         assertFalse(ReflectionUtils.isAssignableFrom(s, parseType("String"), Integer.class));\r
40         \r
41     }\r
42     \r
43     public static int method1(String a) {\r
44         return a.length();\r
45     }\r
46     \r
47     public static void method2(String a) {\r
48         System.out.println(a);\r
49     }\r
50     \r
51     public static int method3() {\r
52         return 3;\r
53     }\r
54 }\r