package cz.habarta.typescript.generator; import cz.habarta.typescript.generator.p2.D; import org.junit.Assert; import org.junit.Test; public class FullyQualifiedNamesTest { @Test public void test() { final Settings settings = TestUtils.settings(); settings.outputFileType = TypeScriptFileType.implementationFile; settings.mapClasses = ClassMapping.asClasses; settings.mapPackagesToNamespaces = true; final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(D.class)); final String expected = "" + "namespace cz.habarta.typescript.generator.p2 {\n" + "\n" + " export class D {\n" + " a: cz.habarta.typescript.generator.p1.A;\n" + " b: cz.habarta.typescript.generator.p2.B;\n" + " c: cz.habarta.typescript.generator.p1.C;\n" + " e: cz.habarta.typescript.generator.p1.E;\n" + " }\n" + "\n" + "}\n" + "\n" + "namespace cz.habarta.typescript.generator.p1 {\n" + "\n" + " export class A {\n" + " sa: string;\n" + " }\n" + "\n" + "}\n" + "\n" + "namespace cz.habarta.typescript.generator.p2 {\n" + "\n" + " export class B extends cz.habarta.typescript.generator.p1.A {\n" + " sb: string;\n" + " }\n" + "\n" + "}\n" + "\n" + "namespace cz.habarta.typescript.generator.p1 {\n" + "\n" + " export class C extends cz.habarta.typescript.generator.p2.B {\n" + " sc: string;\n" + " }\n" + "\n" + "}\n" + "\n" + "namespace cz.habarta.typescript.generator.p1 {\n" + "\n" + " export type E = \"Left\" | \"Right\";\n" + "\n" + "}"; Assert.assertEquals(expected.trim(), output.trim()); } @Test public void testNested() { final Settings settings = TestUtils.settings(); settings.outputFileType = TypeScriptFileType.implementationFile; settings.mapClasses = ClassMapping.asClasses; settings.mapPackagesToNamespaces = true; settings.sortTypeDeclarations = true; final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(Outer.Inner.class, Outer.class)); final String expected = "" + "namespace cz.habarta.typescript.generator.FullyQualifiedNamesTest {\n" + "\n" + " export class Outer {\n" + " outer: string;\n" + " }\n" + "\n" + "}\n" + "\n" + "namespace cz.habarta.typescript.generator.FullyQualifiedNamesTest.Outer {\n" + "\n" + " export class Inner {\n" + " inner: string;\n" + " }\n" + "\n" + "}\n"; Assert.assertEquals(expected.trim(), output.trim()); } private static class Outer { public String outer; private static class Inner { public String inner; } } }