...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package proto
25
26 import "testing"
27
28 func TestGroup(t *testing.T) {
29 oto := `message M {
30 // group
31 optional group OptionalGroup = 16 // group comment 1
32 // group comment 2
33 {
34 // field
35 optional int32 a = 17;
36 }
37 }`
38 p := newParserOn(oto)
39 p.next()
40 m := new(Message)
41 err := m.parse(p)
42 if err != nil {
43 t.Error(err)
44 }
45 if got, want := len(m.Elements), 1; got != want {
46 t.Logf("%#v", m.Elements)
47 t.Fatalf("got [%v] want [%v]", got, want)
48 }
49 g := m.Elements[0].(*Group)
50 if got, want := len(g.Elements), 2; got != want {
51 t.Fatalf("got [%v] want [%v]", got, want)
52 }
53 if got, want := g.Position.Line, 3; got != want {
54 t.Fatalf("got [%v] want [%v]", got, want)
55 }
56 if got, want := g.Comment != nil, true; got != want {
57 t.Errorf("got [%v] want [%v]", got, want)
58 }
59 f := g.Elements[1].(*NormalField)
60 if got, want := f.Name, "a"; got != want {
61 t.Errorf("got [%v] want [%v]", got, want)
62 }
63 if got, want := f.Optional, true; got != want {
64 t.Errorf("got [%v] want [%v]", got, want)
65 }
66 }
67
View as plain text