package cz.habarta.typescript.generator; import static cz.habarta.typescript.generator.TsType.*; import cz.habarta.typescript.generator.compiler.Symbol; import java.util.Arrays; import static org.junit.Assert.*; import org.junit.*; public class TsTypeTest { @Test public void testEquals() { assertEquals(new TsType.ReferenceType(new Symbol(new String("Foo"))), new TsType.ReferenceType(new Symbol("Foo"))); } @Test public void testNotEquals() { assertNotEquals(new TsType.ReferenceType(new Symbol("Foo")), new TsType.ReferenceType(new Symbol("Bar"))); } @Test public void testNotEqualsNull() { assertNotEquals(new TsType.ReferenceType(new Symbol("Foo")), null); } @Test public void testTypeParentheses() { final Settings settings = TestUtils.settings(); assertEquals("string | number", new UnionType(Arrays.asList(String, Number)).format(settings)); assertEquals("string | number[]", new UnionType(Arrays.asList(String, new BasicArrayType(Number))).format(settings)); assertEquals("(string | number)[]", new BasicArrayType(new UnionType(Arrays.asList(String, Number))).format(settings)); assertEquals("(string | number)[][]", new BasicArrayType(new BasicArrayType(new UnionType(Arrays.asList(String, Number)))).format(settings)); assertEquals("{ [index: string]: string | number }", new IndexedArrayType(String, new UnionType(Arrays.asList(String, Number))).format(settings)); } @Test public void testObjectType() { final Settings settings = TestUtils.settings(); assertEquals("{ a: string; b: string | number; c: {}; d: { x: string; }; }", new TsType.ObjectType(Arrays.asList( new TsProperty("a", String), new TsProperty("b", new UnionType(Arrays.asList(String, Number))), new TsProperty("c", new ObjectType(Arrays.<TsProperty>asList())), new TsProperty("d", new ObjectType(Arrays.asList( new TsProperty("x", String) ))) )).format(settings)); } }