package cz.habarta.typescript.generator;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonValue;
import cz.habarta.typescript.generator.compiler.EnumKind;
import cz.habarta.typescript.generator.parser.EnumModel;
import cz.habarta.typescript.generator.parser.Model;
import cz.habarta.typescript.generator.parser.ModelParser;
import java.io.File;
import java.util.Arrays;
import org.junit.Assert;
import org.junit.Test;
public class NumberEnumTest {
@Test
public void testParser() {
final Settings settings = TestUtils.settings();
final ModelParser parser = new TypeScriptGenerator(settings).getModelParser();
final Model model = parser.parseModel(SomeCode.class);
Assert.assertEquals(1, model.getEnums().size());
final EnumModel<?> enumModel = model.getEnums().get(0);
Assert.assertEquals(EnumKind.NumberBased, enumModel.getKind());
Assert.assertEquals(2, enumModel.getMembers().size());
Assert.assertEquals(10, enumModel.getMembers().get(0).getEnumValue());
Assert.assertEquals(11, enumModel.getMembers().get(1).getEnumValue());
}
@Test
public void test() {
final Settings settings = TestUtils.settings();
final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(SomeCode.class));
Assert.assertEquals(
"declare const enum SomeCode {\n" +
" VALUE0 = 10,\n" +
" VALUE1 = 11,\n" +
"}",
output.trim());
}
@Test
public void testJavadoc() {
final Settings settings = TestUtils.settings();
settings.javadocXmlFiles = Arrays.asList(new File("target/test-javadoc.xml"));
final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(SomeCode.class));
Assert.assertTrue(output.contains("Documentation for SomeCode enum."));
Assert.assertTrue(output.contains("Documentation for VALUE0."));
Assert.assertTrue(output.contains("Documentation for VALUE1."));
}
/**
* Documentation for SomeCode enum.
*/
@JsonFormat(shape = JsonFormat.Shape.NUMBER_INT)
public static enum SomeCode {
/**
* Documentation for VALUE0.
*/
VALUE0(10),
/**
* Documentation for VALUE1.
*/
VALUE1(11);
private final Integer jsonValue;
private SomeCode(final Integer jsonValue) {
this.jsonValue = jsonValue;
}
@JsonValue
public Integer getJsonValue() {
return this.jsonValue;
}
}
}