Skip to content

Commit b5bb3c1

Browse files
committed
[Go] Use upper case names when generating methods for bitset.
1 parent 62adfb4 commit b5bb3c1

File tree

3 files changed

+185
-19
lines changed

3 files changed

+185
-19
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
@@ -1475,7 +1475,7 @@ private void generateChoiceSet(final List<Token> tokens) throws IOException
14751475

14761476
for (final Token token : tokens.subList(1, tokens.size() - 1))
14771477
{
1478-
generateSinceActingDeprecated(sb, choiceName, token.name(), token);
1478+
generateSinceActingDeprecated(sb, choiceName, formatPropertyName(token.name()), token);
14791479
}
14801480
out.append(generateFileHeader(ir.namespaces()));
14811481
out.append(sb);

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

Lines changed: 183 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@
2525

2626
import java.io.InputStream;
2727

28-
import static org.hamcrest.MatcherAssert.assertThat;
29-
import static org.hamcrest.Matchers.allOf;
30-
import static org.hamcrest.Matchers.containsString;
3128
import static org.junit.jupiter.api.Assertions.*;
3229
import static uk.co.real_logic.sbe.xml.XmlSchemaParser.parse;
3330

@@ -256,6 +253,7 @@ void shouldUseUpperCaseTypeNamesWhenReferencingEnumValues() throws Exception
256253
}
257254

258255
@Test
256+
@SuppressWarnings("MethodLength")
259257
void shouldUseUpperCaseTypeNamesWhenReferencingBitSet() throws Exception
260258
{
261259
try (InputStream in = Tests.getLocalResource("message-with-lower-case-bitset.xml"))
@@ -271,24 +269,129 @@ void shouldUseUpperCaseTypeNamesWhenReferencingBitSet() throws Exception
271269
generator.generate();
272270

273271
final String eventTypeSource = outputManager.getSource("test.EventType").toString();
274-
System.out.println(eventTypeSource);
275-
assertThat(eventTypeSource,
276-
containsString("type EventType [8]bool\n" +
272+
assertEquals("// Generated SBE (Simple Binary Encoding) message codec\n" +
273+
"\n" +
274+
"package test\n" +
275+
"\n" +
276+
"import (\n" +
277+
"\t\"io\"\n" +
278+
")\n" +
279+
"\n" +
280+
"type EventType [8]bool\n" +
277281
"type EventTypeChoiceValue uint8\n" +
278282
"type EventTypeChoiceValues struct {\n" +
279283
"\tA EventTypeChoiceValue\n" +
280284
"\tBb EventTypeChoiceValue\n" +
281285
"\tCcc EventTypeChoiceValue\n" +
282286
"\tD EventTypeChoiceValue\n" +
283-
"\tEeeee EventTypeChoiceValue\n}\n\n" +
284-
"var EventTypeChoice = EventTypeChoiceValues{0, 1, 2, 3, 4}"));
287+
"\tEeEee EventTypeChoiceValue\n" +
288+
"}\n" +
289+
"\n" +
290+
"var EventTypeChoice = EventTypeChoiceValues{0, 1, 2, 3, 4}\n" +
291+
"\n" +
292+
"func (e *EventType) Encode(_m *SbeGoMarshaller, _w io.Writer) error {\n" +
293+
"\tvar wireval uint8 = 0\n" +
294+
"\tfor k, v := range e {\n" +
295+
"\t\tif v {\n" +
296+
"\t\t\twireval |= (1 << uint(k))\n" +
297+
"\t\t}\n" +
298+
"\t}\n" +
299+
"\treturn _m.WriteUint8(_w, wireval)\n" +
300+
"}\n" +
301+
"\n" +
302+
"func (e *EventType) Decode(_m *SbeGoMarshaller, _r io.Reader, actingVersion uint16) error {\n" +
303+
"\tvar wireval uint8\n" +
304+
"\n" +
305+
"\tif err := _m.ReadUint8(_r, &wireval); err != nil {\n" +
306+
"\t\treturn err\n" +
307+
"\t}\n" +
308+
"\n" +
309+
"\tvar idx uint\n" +
310+
"\tfor idx = 0; idx < 8; idx++ {\n" +
311+
"\t\te[idx] = (wireval & (1 << idx)) > 0\n" +
312+
"\t}\n" +
313+
"\treturn nil\n" +
314+
"}\n" +
315+
"\n" +
316+
"func (EventType) EncodedLength() int64 {\n" +
317+
"\treturn 1\n" +
318+
"}\n" +
319+
"\n" +
320+
"func (*EventType) ASinceVersion() uint16 {\n" +
321+
"\treturn 0\n" +
322+
"}\n" +
323+
"\n" +
324+
"func (e *EventType) AInActingVersion(actingVersion uint16) bool {\n" +
325+
"\treturn actingVersion >= e.ASinceVersion()\n" +
326+
"}\n" +
327+
"\n" +
328+
"func (*EventType) ADeprecated() uint16 {\n" +
329+
"\treturn 0\n" +
330+
"}\n" +
331+
"\n" +
332+
"func (*EventType) BbSinceVersion() uint16 {\n" +
333+
"\treturn 0\n" +
334+
"}\n" +
335+
"\n" +
336+
"func (e *EventType) BbInActingVersion(actingVersion uint16) bool {\n" +
337+
"\treturn actingVersion >= e.BbSinceVersion()\n" +
338+
"}\n" +
339+
"\n" +
340+
"func (*EventType) BbDeprecated() uint16 {\n" +
341+
"\treturn 0\n" +
342+
"}\n" +
343+
"\n" +
344+
"func (*EventType) CccSinceVersion() uint16 {\n" +
345+
"\treturn 0\n" +
346+
"}\n" +
347+
"\n" +
348+
"func (e *EventType) CccInActingVersion(actingVersion uint16) bool {\n" +
349+
"\treturn actingVersion >= e.CccSinceVersion()\n" +
350+
"}\n" +
351+
"\n" +
352+
"func (*EventType) CccDeprecated() uint16 {\n" +
353+
"\treturn 0\n" +
354+
"}\n" +
355+
"\n" +
356+
"func (*EventType) DSinceVersion() uint16 {\n" +
357+
"\treturn 0\n" +
358+
"}\n" +
359+
"\n" +
360+
"func (e *EventType) DInActingVersion(actingVersion uint16) bool {\n" +
361+
"\treturn actingVersion >= e.DSinceVersion()\n" +
362+
"}\n" +
363+
"\n" +
364+
"func (*EventType) DDeprecated() uint16 {\n" +
365+
"\treturn 0\n" +
366+
"}\n" +
367+
"\n" +
368+
"func (*EventType) EeEeeSinceVersion() uint16 {\n" +
369+
"\treturn 0\n" +
370+
"}\n" +
371+
"\n" +
372+
"func (e *EventType) EeEeeInActingVersion(actingVersion uint16) bool {\n" +
373+
"\treturn actingVersion >= e.EeEeeSinceVersion()\n" +
374+
"}\n" +
375+
"\n" +
376+
"func (*EventType) EeEeeDeprecated() uint16 {\n" +
377+
"\treturn 0\n" +
378+
"}\n", eventTypeSource);
285379

286380
final String messageSource = outputManager.getSource("test.SomeMessage").toString();
287-
assertThat(messageSource,
288-
allOf(
289-
containsString("type SomeMessage struct {\n\tMyEvent EventType\n}"),
290-
containsString("func (s *SomeMessage) Encode(_m *SbeGoMarshaller, _w io.Writer," +
291-
" doRangeCheck bool) error {\n" +
381+
assertEquals("// Generated SBE (Simple Binary Encoding) message codec\n" +
382+
"\n" +
383+
"package test\n" +
384+
"\n" +
385+
"import (\n" +
386+
"\t\"io\"\n" +
387+
"\t\"io/ioutil\"\n" +
388+
")\n" +
389+
"\n" +
390+
"type SomeMessage struct {\n" +
391+
"\tMyEvent EventType\n" +
392+
"}\n" +
393+
"\n" +
394+
"func (s *SomeMessage) Encode(_m *SbeGoMarshaller, _w io.Writer, doRangeCheck bool) error {\n" +
292395
"\tif doRangeCheck {\n" +
293396
"\t\tif err := s.RangeCheck(s.SbeSchemaVersion(), s.SbeSchemaVersion()); err != nil {\n" +
294397
"\t\t\treturn err\n" +
@@ -298,9 +401,10 @@ void shouldUseUpperCaseTypeNamesWhenReferencingBitSet() throws Exception
298401
"\t\treturn err\n" +
299402
"\t}\n" +
300403
"\treturn nil\n" +
301-
"}\n"),
302-
containsString("func (s *SomeMessage) Decode(_m *SbeGoMarshaller, _r io.Reader," +
303-
" actingVersion uint16, blockLength uint16, doRangeCheck bool) error {\n" +
404+
"}\n" +
405+
"\n" +
406+
"func (s *SomeMessage) Decode(_m *SbeGoMarshaller, _r io.Reader, actingVersion uint16, " +
407+
"blockLength uint16, doRangeCheck bool) error {\n" +
304408
"\tif s.MyEventInActingVersion(actingVersion) {\n" +
305409
"\t\tif err := s.MyEvent.Decode(_m, _r, actingVersion); err != nil {\n" +
306410
"\t\t\treturn err\n" +
@@ -315,7 +419,69 @@ void shouldUseUpperCaseTypeNamesWhenReferencingBitSet() throws Exception
315419
"\t\t}\n" +
316420
"\t}\n" +
317421
"\treturn nil\n" +
318-
"}\n")));
422+
"}\n" +
423+
"\n" +
424+
"func (s *SomeMessage) RangeCheck(actingVersion uint16, schemaVersion uint16) error {\n" +
425+
"\treturn nil\n" +
426+
"}\n" +
427+
"\n" +
428+
"func SomeMessageInit(s *SomeMessage) {\n" +
429+
"\treturn\n" +
430+
"}\n" +
431+
"\n" +
432+
"func (*SomeMessage) SbeBlockLength() (blockLength uint16) {\n" +
433+
"\treturn 1\n" +
434+
"}\n" +
435+
"\n" +
436+
"func (*SomeMessage) SbeTemplateId() (templateId uint16) {\n" +
437+
"\treturn 1\n" +
438+
"}\n" +
439+
"\n" +
440+
"func (*SomeMessage) SbeSchemaId() (schemaId uint16) {\n" +
441+
"\treturn 973\n" +
442+
"}\n" +
443+
"\n" +
444+
"func (*SomeMessage) SbeSchemaVersion() (schemaVersion uint16) {\n" +
445+
"\treturn 0\n" +
446+
"}\n" +
447+
"\n" +
448+
"func (*SomeMessage) SbeSemanticType() (semanticType []byte) {\n" +
449+
"\treturn []byte(\"\")\n" +
450+
"}\n" +
451+
"\n" +
452+
"func (*SomeMessage) SbeSemanticVersion() (semanticVersion string) {\n" +
453+
"\treturn \"1.0\"\n" +
454+
"}\n" +
455+
"\n" +
456+
"func (*SomeMessage) MyEventId() uint16 {\n" +
457+
"\treturn 1\n" +
458+
"}\n" +
459+
"\n" +
460+
"func (*SomeMessage) MyEventSinceVersion() uint16 {\n" +
461+
"\treturn 0\n" +
462+
"}\n" +
463+
"\n" +
464+
"func (s *SomeMessage) MyEventInActingVersion(actingVersion uint16) bool {\n" +
465+
"\treturn actingVersion >= s.MyEventSinceVersion()\n" +
466+
"}\n" +
467+
"\n" +
468+
"func (*SomeMessage) MyEventDeprecated() uint16 {\n" +
469+
"\treturn 0\n" +
470+
"}\n" +
471+
"\n" +
472+
"func (*SomeMessage) MyEventMetaAttribute(meta int) string {\n" +
473+
"\tswitch meta {\n" +
474+
"\tcase 1:\n" +
475+
"\t\treturn \"\"\n" +
476+
"\tcase 2:\n" +
477+
"\t\treturn \"\"\n" +
478+
"\tcase 3:\n" +
479+
"\t\treturn \"\"\n" +
480+
"\tcase 4:\n" +
481+
"\t\treturn \"required\"\n" +
482+
"\t}\n" +
483+
"\treturn \"\"\n" +
484+
"}\n", messageSource);
319485
}
320486
}
321487
}

sbe-tool/src/test/resources/message-with-lower-case-bitset.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<choice name="Bb">1</choice>
1919
<choice name="ccc">2</choice>
2020
<choice name="D">3</choice>
21-
<choice name="eeeee">4</choice>
21+
<choice name="eeEee">4</choice>
2222
</set>
2323
</types>
2424

0 commit comments

Comments
 (0)