1 package org.simantics.scl.reflection.tests;
\r
3 import static junit.framework.Assert.*;
\r
4 import static org.simantics.scl.compiler.types.Types.parseType;
\r
6 import java.util.ArrayList;
\r
7 import java.util.List;
\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
15 public class TestReflectionUtils {
\r
18 public void testReflectionUtils() throws Exception {
\r
19 TypeBindingScheme s = MinimalTypeBindingScheme.INSTANCE;
\r
21 Class<?> c = getClass();
\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
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
39 assertFalse(ReflectionUtils.isAssignableFrom(s, parseType("String"), Integer.class));
\r
43 public static int method1(String a) {
\r
47 public static void method2(String a) {
\r
48 System.out.println(a);
\r
51 public static int method3() {
\r