### Question:
ElmChoiceBuilder implements ElmTypeDef { public ILines typeDefinition() { val definition = line("type " + spec.typeName()); val choices = spec.sourceSpec() .choices.stream() .map(toCaseTypes) .map(toLine); val lines = linesOf(choices) .containWith("=", "|", null); return definition .append(indent(lines)); } ElmChoiceBuilder(ElmChoiceSpec spec); String typeName(); String encoderName(); String decoderName(); ILines typeDefinition(); ElmFunctionBuilder encoder(); ElmFunctionBuilder decoder(); String toElmCode();  }### Answer:
@Test public void testChoiceTypeDefinition() { val builder = setupBuilder(); assertEquals( "type LoginStatus\n" + " = LoggedIn String Int (List Int) (Maybe Float) Functionalj.Types.Elm.User\n" + " | LoggedOut", builder.typeDefinition().toText()); }