package cz.habarta.typescript.generator; import cz.habarta.typescript.generator.compiler.SymbolTable; import java.math.BigDecimal; import java.util.*; import static org.junit.Assert.assertEquals; import org.junit.Test; public class DefaultTypeProcessorTest { @Test public void testTypeConversion() { TypeProcessor converter = new DefaultTypeProcessor(); final TypeProcessor.Context context = getTestContext(converter); assertEquals(context.getSymbol(A.class).getFullName(), converter.processType(A.class, context).getTsType().toString()); assertEquals(context.getSymbol(B.class).getFullName(), converter.processType(B.class, context).getTsType().toString()); assertEquals(TsType.Void, converter.processType(void.class, context).getTsType()); assertEquals(TsType.Number, converter.processType(BigDecimal.class, context).getTsType()); assertEquals(TsType.String, converter.processType(UUID.class, context).getTsType()); // uncomment on Java 8 // assertEquals(TsType.Number, converter.processType(OptionalInt.class, context).getTsType()); // assertEquals(TsType.Number, converter.processType(OptionalLong.class, context).getTsType()); // assertEquals(TsType.Number, converter.processType(OptionalDouble.class, context).getTsType()); } @Test public void testWildcards() throws NoSuchFieldException { TypeProcessor converter = new DefaultTypeProcessor(); final TypeProcessor.Context context = getTestContext(converter); assertEquals("string[]", converter.processType(C.class.getDeclaredField("x").getGenericType(), context).getTsType().toString()); assertEquals("any[]", converter.processType(C.class.getDeclaredField("y").getGenericType(), context).getTsType().toString()); assertEquals("any[]", converter.processType(C.class.getDeclaredField("z").getGenericType(), context).getTsType().toString()); } private static class A { B x; } private static class B { B x; } private static class C { List<? extends String> x; List<? super String> y; List<?> z; } public static TypeProcessor.Context getTestContext(final TypeProcessor typeProcessor) { return new TypeProcessor.Context(new SymbolTable(TestUtils.settings()), typeProcessor); } }