2525
2626import 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 ;
3128import static org .junit .jupiter .api .Assertions .*;
3229import 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 "\t A EventTypeChoiceValue\n " +
280284 "\t Bb EventTypeChoiceValue\n " +
281285 "\t Ccc EventTypeChoiceValue\n " +
282286 "\t D EventTypeChoiceValue\n " +
283- "\t Eeeee EventTypeChoiceValue\n }\n \n " +
284- "var EventTypeChoice = EventTypeChoiceValues{0, 1, 2, 3, 4}" ));
287+ "\t EeEee 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+ "\t var wireval uint8 = 0\n " +
294+ "\t for k, v := range e {\n " +
295+ "\t \t if v {\n " +
296+ "\t \t \t wireval |= (1 << uint(k))\n " +
297+ "\t \t }\n " +
298+ "\t }\n " +
299+ "\t return _m.WriteUint8(_w, wireval)\n " +
300+ "}\n " +
301+ "\n " +
302+ "func (e *EventType) Decode(_m *SbeGoMarshaller, _r io.Reader, actingVersion uint16) error {\n " +
303+ "\t var wireval uint8\n " +
304+ "\n " +
305+ "\t if err := _m.ReadUint8(_r, &wireval); err != nil {\n " +
306+ "\t \t return err\n " +
307+ "\t }\n " +
308+ "\n " +
309+ "\t var idx uint\n " +
310+ "\t for idx = 0; idx < 8; idx++ {\n " +
311+ "\t \t e[idx] = (wireval & (1 << idx)) > 0\n " +
312+ "\t }\n " +
313+ "\t return nil\n " +
314+ "}\n " +
315+ "\n " +
316+ "func (EventType) EncodedLength() int64 {\n " +
317+ "\t return 1\n " +
318+ "}\n " +
319+ "\n " +
320+ "func (*EventType) ASinceVersion() uint16 {\n " +
321+ "\t return 0\n " +
322+ "}\n " +
323+ "\n " +
324+ "func (e *EventType) AInActingVersion(actingVersion uint16) bool {\n " +
325+ "\t return actingVersion >= e.ASinceVersion()\n " +
326+ "}\n " +
327+ "\n " +
328+ "func (*EventType) ADeprecated() uint16 {\n " +
329+ "\t return 0\n " +
330+ "}\n " +
331+ "\n " +
332+ "func (*EventType) BbSinceVersion() uint16 {\n " +
333+ "\t return 0\n " +
334+ "}\n " +
335+ "\n " +
336+ "func (e *EventType) BbInActingVersion(actingVersion uint16) bool {\n " +
337+ "\t return actingVersion >= e.BbSinceVersion()\n " +
338+ "}\n " +
339+ "\n " +
340+ "func (*EventType) BbDeprecated() uint16 {\n " +
341+ "\t return 0\n " +
342+ "}\n " +
343+ "\n " +
344+ "func (*EventType) CccSinceVersion() uint16 {\n " +
345+ "\t return 0\n " +
346+ "}\n " +
347+ "\n " +
348+ "func (e *EventType) CccInActingVersion(actingVersion uint16) bool {\n " +
349+ "\t return actingVersion >= e.CccSinceVersion()\n " +
350+ "}\n " +
351+ "\n " +
352+ "func (*EventType) CccDeprecated() uint16 {\n " +
353+ "\t return 0\n " +
354+ "}\n " +
355+ "\n " +
356+ "func (*EventType) DSinceVersion() uint16 {\n " +
357+ "\t return 0\n " +
358+ "}\n " +
359+ "\n " +
360+ "func (e *EventType) DInActingVersion(actingVersion uint16) bool {\n " +
361+ "\t return actingVersion >= e.DSinceVersion()\n " +
362+ "}\n " +
363+ "\n " +
364+ "func (*EventType) DDeprecated() uint16 {\n " +
365+ "\t return 0\n " +
366+ "}\n " +
367+ "\n " +
368+ "func (*EventType) EeEeeSinceVersion() uint16 {\n " +
369+ "\t return 0\n " +
370+ "}\n " +
371+ "\n " +
372+ "func (e *EventType) EeEeeInActingVersion(actingVersion uint16) bool {\n " +
373+ "\t return actingVersion >= e.EeEeeSinceVersion()\n " +
374+ "}\n " +
375+ "\n " +
376+ "func (*EventType) EeEeeDeprecated() uint16 {\n " +
377+ "\t return 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 \t MyEvent 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+ "\t MyEvent EventType\n " +
392+ "}\n " +
393+ "\n " +
394+ "func (s *SomeMessage) Encode(_m *SbeGoMarshaller, _w io.Writer, doRangeCheck bool) error {\n " +
292395 "\t if doRangeCheck {\n " +
293396 "\t \t if err := s.RangeCheck(s.SbeSchemaVersion(), s.SbeSchemaVersion()); err != nil {\n " +
294397 "\t \t \t return err\n " +
@@ -298,9 +401,10 @@ void shouldUseUpperCaseTypeNamesWhenReferencingBitSet() throws Exception
298401 "\t \t return err\n " +
299402 "\t }\n " +
300403 "\t return 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 "\t if s.MyEventInActingVersion(actingVersion) {\n " +
305409 "\t \t if err := s.MyEvent.Decode(_m, _r, actingVersion); err != nil {\n " +
306410 "\t \t \t return err\n " +
@@ -315,7 +419,69 @@ void shouldUseUpperCaseTypeNamesWhenReferencingBitSet() throws Exception
315419 "\t \t }\n " +
316420 "\t }\n " +
317421 "\t return nil\n " +
318- "}\n " )));
422+ "}\n " +
423+ "\n " +
424+ "func (s *SomeMessage) RangeCheck(actingVersion uint16, schemaVersion uint16) error {\n " +
425+ "\t return nil\n " +
426+ "}\n " +
427+ "\n " +
428+ "func SomeMessageInit(s *SomeMessage) {\n " +
429+ "\t return\n " +
430+ "}\n " +
431+ "\n " +
432+ "func (*SomeMessage) SbeBlockLength() (blockLength uint16) {\n " +
433+ "\t return 1\n " +
434+ "}\n " +
435+ "\n " +
436+ "func (*SomeMessage) SbeTemplateId() (templateId uint16) {\n " +
437+ "\t return 1\n " +
438+ "}\n " +
439+ "\n " +
440+ "func (*SomeMessage) SbeSchemaId() (schemaId uint16) {\n " +
441+ "\t return 973\n " +
442+ "}\n " +
443+ "\n " +
444+ "func (*SomeMessage) SbeSchemaVersion() (schemaVersion uint16) {\n " +
445+ "\t return 0\n " +
446+ "}\n " +
447+ "\n " +
448+ "func (*SomeMessage) SbeSemanticType() (semanticType []byte) {\n " +
449+ "\t return []byte(\" \" )\n " +
450+ "}\n " +
451+ "\n " +
452+ "func (*SomeMessage) SbeSemanticVersion() (semanticVersion string) {\n " +
453+ "\t return \" 1.0\" \n " +
454+ "}\n " +
455+ "\n " +
456+ "func (*SomeMessage) MyEventId() uint16 {\n " +
457+ "\t return 1\n " +
458+ "}\n " +
459+ "\n " +
460+ "func (*SomeMessage) MyEventSinceVersion() uint16 {\n " +
461+ "\t return 0\n " +
462+ "}\n " +
463+ "\n " +
464+ "func (s *SomeMessage) MyEventInActingVersion(actingVersion uint16) bool {\n " +
465+ "\t return actingVersion >= s.MyEventSinceVersion()\n " +
466+ "}\n " +
467+ "\n " +
468+ "func (*SomeMessage) MyEventDeprecated() uint16 {\n " +
469+ "\t return 0\n " +
470+ "}\n " +
471+ "\n " +
472+ "func (*SomeMessage) MyEventMetaAttribute(meta int) string {\n " +
473+ "\t switch meta {\n " +
474+ "\t case 1:\n " +
475+ "\t \t return \" \" \n " +
476+ "\t case 2:\n " +
477+ "\t \t return \" \" \n " +
478+ "\t case 3:\n " +
479+ "\t \t return \" \" \n " +
480+ "\t case 4:\n " +
481+ "\t \t return \" required\" \n " +
482+ "\t }\n " +
483+ "\t return \" \" \n " +
484+ "}\n " , messageSource );
319485 }
320486 }
321487}
0 commit comments