Skip to content

Commit 05c9f3c

Browse files
committed
[Go] Use upper case type name when referencing bit sets.
1 parent f33cd87 commit 05c9f3c

File tree

3 files changed

+60
-1
lines changed

3 files changed

+60
-1
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/golang/GolangGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1776,7 +1776,7 @@ private void generateTypeBody(
17761776
sb.append("\t").append(propertyName)
17771777
.append(generateWhitespace(length))
17781778
.append(arrayspec)
1779-
.append(encodingToken.applicableTypeName())
1779+
.append(formatTypeName(encodingToken.applicableTypeName()))
17801780
.append("\n");
17811781
break;
17821782

sbe-tool/src/test/java/uk/co/real_logic/sbe/generation/golang/GolangGeneratorTest.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,35 @@ void shouldUseUpperCaseTypeNamesWhenReferencingEnumValues() throws Exception
5757
assertThat(messageSource, containsString("type SomeMessage struct {\n\tEngineType EngineTypeEnum\n}"));
5858
}
5959
}
60+
61+
@Test
62+
void shouldUseUpperCaseTypeNamesWhenReferencingBitSet() throws Exception
63+
{
64+
try (InputStream in = Tests.getLocalResource("message-with-lower-case-bitset.xml"))
65+
{
66+
final ParserOptions options = ParserOptions.builder().stopOnError(true).build();
67+
final MessageSchema schema = parse(in, options);
68+
final IrGenerator irg = new IrGenerator();
69+
final Ir ir = irg.generate(schema);
70+
final StringWriterOutputManager outputManager = new StringWriterOutputManager();
71+
outputManager.setPackageName(ir.applicableNamespace());
72+
73+
final GolangGenerator generator = new GolangGenerator(ir, outputManager);
74+
generator.generate();
75+
76+
final String eventTypeSource = outputManager.getSource("test.EventType").toString();
77+
assertThat(eventTypeSource,
78+
containsString("type EventType [8]bool\n" +
79+
"type EventTypeChoiceValue uint8\n" +
80+
"type EventTypeChoiceValues struct {\n" +
81+
"\tA EventTypeChoiceValue\n" +
82+
"\tBb EventTypeChoiceValue\n" +
83+
"\tCcc EventTypeChoiceValue\n" +
84+
"\tD EventTypeChoiceValue\n" +
85+
"\tEeeee EventTypeChoiceValue\n}\n\n" +
86+
"var EventTypeChoice = EventTypeChoiceValues{0, 1, 2, 3, 4}"));
87+
final String messageSource = outputManager.getSource("test.SomeMessage").toString();
88+
assertThat(messageSource, containsString("type SomeMessage struct {\n\tMyEvent EventType\n}"));
89+
}
90+
}
6091
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2+
<sbe:messageSchema xmlns:sbe="http://fixprotocol.io/2016/sbe"
3+
package="test"
4+
id="973"
5+
version="0"
6+
semanticVersion="1.0"
7+
description="lower case bitset">
8+
<types>
9+
<composite name="messageHeader" description="header">
10+
<type name="blockLength" primitiveType="uint16"/>
11+
<type name="templateId" primitiveType="uint16"/>
12+
<type name="schemaId" primitiveType="uint16"/>
13+
<type name="version" primitiveType="uint16"/>
14+
</composite>
15+
16+
<set name="eventType" encodingType="uint8">
17+
<choice name="a">0</choice>
18+
<choice name="Bb">1</choice>
19+
<choice name="ccc">2</choice>
20+
<choice name="D">3</choice>
21+
<choice name="eeeee">4</choice>
22+
</set>
23+
</types>
24+
25+
<sbe:message name="SomeMessage" id="1">
26+
<field name="myEvent" type="eventType" id="1"/>
27+
</sbe:message>
28+
</sbe:messageSchema>

0 commit comments

Comments
 (0)