public void testParseRecordTypes() { assertTypeEquals( RecordType.of( ImmutableMap.<String, SoyType>builder().put("a", IntType.getInstance()).build()), "[a:int]"); assertTypeEquals( RecordType.of( ImmutableMap.<String, SoyType>builder() .put("a", IntType.getInstance()) .put("b", FloatType.getInstance()) .build()), "[a:int, b:float]"); assertTypeEquals( RecordType.of( ImmutableMap.<String, SoyType>builder() .put("a", IntType.getInstance()) .put("b", ListType.of(StringType.getInstance())) .build()), "[a:int, b:list<string>]"); }
public void testMapLiteralAsRecord() { SoyFileSetNode soyTree = SoyFileSetParserBuilder.forFileContents( constructTemplateSource( "{@param pi: int}", "{@param pf: float}", "{let $map: ['a': $pi, 'b':$pf]/}", "{captureType($map)}")) .declaredSyntaxVersion(SyntaxVersion.V2_0) .typeRegistry(typeRegistry) .parse() .fileSet(); createResolveNamesVisitorForMaxSyntaxVersion().exec(soyTree); createResolveExpressionTypesVisitorForMaxSyntaxVersion().exec(soyTree); List<SoyType> types = getCapturedTypes(soyTree); assertThat(types.get(0)) .isEqualTo( RecordType.of( ImmutableMap.<String, SoyType>of( "a", IntType.getInstance(), "b", FloatType.getInstance()))); }