Skip to content

Commit 660c96b

Browse files
committed
[Go] Add tests with lower-case enums and bitsets.
1 parent b5bb3c1 commit 660c96b

File tree

10 files changed

+760
-6
lines changed

10 files changed

+760
-6
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,8 @@ tasks.register('generateGolangCodecsWithXSD', JavaExec) {
700700
'sbe-tool/src/test/resources/issue849.xml',
701701
'sbe-tool/src/test/resources/since-deprecated-test-schema.xml',
702702
'sbe-tool/src/test/resources/example-bigendian-test-schema.xml',
703+
'sbe-tool/src/test/resources/value-ref-with-lower-case-enum.xml',
704+
'sbe-tool/src/test/resources/message-with-lower-case-bitset.xml',
703705
'gocode/resources/example-composite.xml',
704706
'gocode/resources/group-with-data-extension-schema.xml',
705707
'gocode/resources/simple.xml']

gocode/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ test: $(DEP)
7272
go install \
7373
;done))
7474
(export GOPATH=$(GOPATH) && \
75-
(for t in baseline-bigendian mktdata group_with_data group_with_data_extension composite_elements composite since-deprecated simple issue435 issue472 issue483 issue488 issue560 issue847 issue848 issue849; do \
75+
(for t in baseline-bigendian mktdata group_with_data group_with_data_extension composite_elements composite since-deprecated simple issue435 issue472 issue483 issue488 issue560 issue847 issue848 issue849 issue505 test973; do \
7676
cd $(GOPATH)/src/$$t && \
7777
go build && \
7878
go fmt && \
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package issue505
2+
3+
import (
4+
"bytes"
5+
"testing"
6+
)
7+
8+
func TestConstant(t *testing.T) {
9+
message := new(SomeMessage)
10+
SomeMessageInit(message)
11+
12+
if message.EngineType != EngineType.Gas {
13+
t.Log("message.EngineType != EngineType.Gas:\n", message.EngineType, EngineType.Gas)
14+
t.Fail()
15+
}
16+
17+
m := NewSbeGoMarshaller()
18+
var buf = new(bytes.Buffer)
19+
var out = *new(SomeMessage)
20+
if err := out.Decode(m, buf, message.SbeSchemaVersion(), message.SbeBlockLength(), true); err != nil {
21+
t.Log("Decoding Error", err)
22+
t.Fail()
23+
}
24+
25+
if out.EngineType != EngineType.Gas {
26+
t.Log("out.EngineType != EngineType.Gas:\n", out.EngineType, EngineType.Gas)
27+
t.Fail()
28+
}
29+
}

gocode/src/test973/EventType.go

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
// Generated SBE (Simple Binary Encoding) message codec
2+
3+
package test973
4+
5+
import (
6+
"io"
7+
)
8+
9+
type EventType [8]bool
10+
type EventTypeChoiceValue uint8
11+
type EventTypeChoiceValues struct {
12+
A EventTypeChoiceValue
13+
Bb EventTypeChoiceValue
14+
Ccc EventTypeChoiceValue
15+
D EventTypeChoiceValue
16+
EeEee EventTypeChoiceValue
17+
}
18+
19+
var EventTypeChoice = EventTypeChoiceValues{0, 1, 2, 3, 4}
20+
21+
func (e *EventType) Encode(_m *SbeGoMarshaller, _w io.Writer) error {
22+
var wireval uint8 = 0
23+
for k, v := range e {
24+
if v {
25+
wireval |= (1 << uint(k))
26+
}
27+
}
28+
return _m.WriteUint8(_w, wireval)
29+
}
30+
31+
func (e *EventType) Decode(_m *SbeGoMarshaller, _r io.Reader, actingVersion uint16) error {
32+
var wireval uint8
33+
34+
if err := _m.ReadUint8(_r, &wireval); err != nil {
35+
return err
36+
}
37+
38+
var idx uint
39+
for idx = 0; idx < 8; idx++ {
40+
e[idx] = (wireval & (1 << idx)) > 0
41+
}
42+
return nil
43+
}
44+
45+
func (EventType) EncodedLength() int64 {
46+
return 1
47+
}
48+
49+
func (*EventType) ASinceVersion() uint16 {
50+
return 0
51+
}
52+
53+
func (e *EventType) AInActingVersion(actingVersion uint16) bool {
54+
return actingVersion >= e.ASinceVersion()
55+
}
56+
57+
func (*EventType) ADeprecated() uint16 {
58+
return 0
59+
}
60+
61+
func (*EventType) BbSinceVersion() uint16 {
62+
return 0
63+
}
64+
65+
func (e *EventType) BbInActingVersion(actingVersion uint16) bool {
66+
return actingVersion >= e.BbSinceVersion()
67+
}
68+
69+
func (*EventType) BbDeprecated() uint16 {
70+
return 0
71+
}
72+
73+
func (*EventType) CccSinceVersion() uint16 {
74+
return 0
75+
}
76+
77+
func (e *EventType) CccInActingVersion(actingVersion uint16) bool {
78+
return actingVersion >= e.CccSinceVersion()
79+
}
80+
81+
func (*EventType) CccDeprecated() uint16 {
82+
return 0
83+
}
84+
85+
func (*EventType) DSinceVersion() uint16 {
86+
return 0
87+
}
88+
89+
func (e *EventType) DInActingVersion(actingVersion uint16) bool {
90+
return actingVersion >= e.DSinceVersion()
91+
}
92+
93+
func (*EventType) DDeprecated() uint16 {
94+
return 0
95+
}
96+
97+
func (*EventType) EeEeeSinceVersion() uint16 {
98+
return 0
99+
}
100+
101+
func (e *EventType) EeEeeInActingVersion(actingVersion uint16) bool {
102+
return actingVersion >= e.EeEeeSinceVersion()
103+
}
104+
105+
func (*EventType) EeEeeDeprecated() uint16 {
106+
return 0
107+
}
Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
// Generated SBE (Simple Binary Encoding) message codec
2+
3+
package test973
4+
5+
import (
6+
"fmt"
7+
"io"
8+
"math"
9+
)
10+
11+
type MessageHeader struct {
12+
BlockLength uint16
13+
TemplateId uint16
14+
SchemaId uint16
15+
Version uint16
16+
}
17+
18+
func (m *MessageHeader) Encode(_m *SbeGoMarshaller, _w io.Writer) error {
19+
if err := _m.WriteUint16(_w, m.BlockLength); err != nil {
20+
return err
21+
}
22+
if err := _m.WriteUint16(_w, m.TemplateId); err != nil {
23+
return err
24+
}
25+
if err := _m.WriteUint16(_w, m.SchemaId); err != nil {
26+
return err
27+
}
28+
if err := _m.WriteUint16(_w, m.Version); err != nil {
29+
return err
30+
}
31+
return nil
32+
}
33+
34+
func (m *MessageHeader) Decode(_m *SbeGoMarshaller, _r io.Reader, actingVersion uint16) error {
35+
if !m.BlockLengthInActingVersion(actingVersion) {
36+
m.BlockLength = m.BlockLengthNullValue()
37+
} else {
38+
if err := _m.ReadUint16(_r, &m.BlockLength); err != nil {
39+
return err
40+
}
41+
}
42+
if !m.TemplateIdInActingVersion(actingVersion) {
43+
m.TemplateId = m.TemplateIdNullValue()
44+
} else {
45+
if err := _m.ReadUint16(_r, &m.TemplateId); err != nil {
46+
return err
47+
}
48+
}
49+
if !m.SchemaIdInActingVersion(actingVersion) {
50+
m.SchemaId = m.SchemaIdNullValue()
51+
} else {
52+
if err := _m.ReadUint16(_r, &m.SchemaId); err != nil {
53+
return err
54+
}
55+
}
56+
if !m.VersionInActingVersion(actingVersion) {
57+
m.Version = m.VersionNullValue()
58+
} else {
59+
if err := _m.ReadUint16(_r, &m.Version); err != nil {
60+
return err
61+
}
62+
}
63+
return nil
64+
}
65+
66+
func (m *MessageHeader) RangeCheck(actingVersion uint16, schemaVersion uint16) error {
67+
if m.BlockLengthInActingVersion(actingVersion) {
68+
if m.BlockLength < m.BlockLengthMinValue() || m.BlockLength > m.BlockLengthMaxValue() {
69+
return fmt.Errorf("Range check failed on m.BlockLength (%v < %v > %v)", m.BlockLengthMinValue(), m.BlockLength, m.BlockLengthMaxValue())
70+
}
71+
}
72+
if m.TemplateIdInActingVersion(actingVersion) {
73+
if m.TemplateId < m.TemplateIdMinValue() || m.TemplateId > m.TemplateIdMaxValue() {
74+
return fmt.Errorf("Range check failed on m.TemplateId (%v < %v > %v)", m.TemplateIdMinValue(), m.TemplateId, m.TemplateIdMaxValue())
75+
}
76+
}
77+
if m.SchemaIdInActingVersion(actingVersion) {
78+
if m.SchemaId < m.SchemaIdMinValue() || m.SchemaId > m.SchemaIdMaxValue() {
79+
return fmt.Errorf("Range check failed on m.SchemaId (%v < %v > %v)", m.SchemaIdMinValue(), m.SchemaId, m.SchemaIdMaxValue())
80+
}
81+
}
82+
if m.VersionInActingVersion(actingVersion) {
83+
if m.Version < m.VersionMinValue() || m.Version > m.VersionMaxValue() {
84+
return fmt.Errorf("Range check failed on m.Version (%v < %v > %v)", m.VersionMinValue(), m.Version, m.VersionMaxValue())
85+
}
86+
}
87+
return nil
88+
}
89+
90+
func MessageHeaderInit(m *MessageHeader) {
91+
return
92+
}
93+
94+
func (*MessageHeader) EncodedLength() int64 {
95+
return 8
96+
}
97+
98+
func (*MessageHeader) BlockLengthMinValue() uint16 {
99+
return 0
100+
}
101+
102+
func (*MessageHeader) BlockLengthMaxValue() uint16 {
103+
return math.MaxUint16 - 1
104+
}
105+
106+
func (*MessageHeader) BlockLengthNullValue() uint16 {
107+
return math.MaxUint16
108+
}
109+
110+
func (*MessageHeader) BlockLengthSinceVersion() uint16 {
111+
return 0
112+
}
113+
114+
func (m *MessageHeader) BlockLengthInActingVersion(actingVersion uint16) bool {
115+
return actingVersion >= m.BlockLengthSinceVersion()
116+
}
117+
118+
func (*MessageHeader) BlockLengthDeprecated() uint16 {
119+
return 0
120+
}
121+
122+
func (*MessageHeader) TemplateIdMinValue() uint16 {
123+
return 0
124+
}
125+
126+
func (*MessageHeader) TemplateIdMaxValue() uint16 {
127+
return math.MaxUint16 - 1
128+
}
129+
130+
func (*MessageHeader) TemplateIdNullValue() uint16 {
131+
return math.MaxUint16
132+
}
133+
134+
func (*MessageHeader) TemplateIdSinceVersion() uint16 {
135+
return 0
136+
}
137+
138+
func (m *MessageHeader) TemplateIdInActingVersion(actingVersion uint16) bool {
139+
return actingVersion >= m.TemplateIdSinceVersion()
140+
}
141+
142+
func (*MessageHeader) TemplateIdDeprecated() uint16 {
143+
return 0
144+
}
145+
146+
func (*MessageHeader) SchemaIdMinValue() uint16 {
147+
return 0
148+
}
149+
150+
func (*MessageHeader) SchemaIdMaxValue() uint16 {
151+
return math.MaxUint16 - 1
152+
}
153+
154+
func (*MessageHeader) SchemaIdNullValue() uint16 {
155+
return math.MaxUint16
156+
}
157+
158+
func (*MessageHeader) SchemaIdSinceVersion() uint16 {
159+
return 0
160+
}
161+
162+
func (m *MessageHeader) SchemaIdInActingVersion(actingVersion uint16) bool {
163+
return actingVersion >= m.SchemaIdSinceVersion()
164+
}
165+
166+
func (*MessageHeader) SchemaIdDeprecated() uint16 {
167+
return 0
168+
}
169+
170+
func (*MessageHeader) VersionMinValue() uint16 {
171+
return 0
172+
}
173+
174+
func (*MessageHeader) VersionMaxValue() uint16 {
175+
return math.MaxUint16 - 1
176+
}
177+
178+
func (*MessageHeader) VersionNullValue() uint16 {
179+
return math.MaxUint16
180+
}
181+
182+
func (*MessageHeader) VersionSinceVersion() uint16 {
183+
return 0
184+
}
185+
186+
func (m *MessageHeader) VersionInActingVersion(actingVersion uint16) bool {
187+
return actingVersion >= m.VersionSinceVersion()
188+
}
189+
190+
func (*MessageHeader) VersionDeprecated() uint16 {
191+
return 0
192+
}

0 commit comments

Comments
 (0)