1 package org.simantics.scl.reflection.tests;
3 import static junit.framework.Assert.*;
4 import static org.simantics.scl.compiler.types.Types.parseType;
6 import java.util.ArrayList;
10 import org.simantics.scl.reflection.MinimalTypeBindingScheme;
11 import org.simantics.scl.reflection.ReflectionUtils;
12 import org.simantics.scl.reflection.TypeBindingScheme;
13 import org.simantics.scl.runtime.function.Function;
15 public class TestReflectionUtils {
18 public void testReflectionUtils() throws Exception {
19 TypeBindingScheme s = MinimalTypeBindingScheme.INSTANCE;
21 Class<?> c = getClass();
23 assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("Integer"), Integer.class));
24 assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("Integer"), int.class));
25 assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("String"), String.class));
26 assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("[String]"), List.class));
27 assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("[String]"), ArrayList.class));
28 assertTrue(ReflectionUtils.isAssignableFrom(s, List.class, parseType("[String]")));
29 assertFalse(ReflectionUtils.isAssignableFrom(s, ArrayList.class, parseType("[String]")));
30 assertTrue(ReflectionUtils.isAssignableFrom(s, parseType("String -> String"),
32 assertTrue(ReflectionUtils.isCompatible(s, parseType("String -> Integer"),
33 c.getMethod("method1", String.class)));
34 assertTrue(ReflectionUtils.isCompatible(s, parseType("String -> ()"),
35 c.getMethod("method2", String.class)));
36 assertTrue(ReflectionUtils.isCompatible(s, parseType("Integer"),
37 c.getMethod("method3")));
39 assertFalse(ReflectionUtils.isAssignableFrom(s, parseType("String"), Integer.class));
43 public static int method1(String a) {
47 public static void method2(String a) {
48 System.out.println(a);
51 public static int method3() {