Add EnumNames to Go code

Tested: on Darwin
This commit is contained in:
Kazuki Sakamoto
2016-07-25 19:37:16 -07:00
parent 1bba4fd9ea
commit 5f351a35a2
4 changed files with 85 additions and 1 deletions

View File

@@ -8,3 +8,11 @@ const (
AnyTestSimpleTableWithEnum = 2
AnyMyGame_Example2_Monster = 3
)
var EnumNamesAny = map[int]string{
AnyNONE:"NONE",
AnyMonster:"Monster",
AnyTestSimpleTableWithEnum:"TestSimpleTableWithEnum",
AnyMyGame_Example2_Monster:"MyGame_Example2_Monster",
}

View File

@@ -7,3 +7,10 @@ const (
ColorGreen = 2
ColorBlue = 8
)
var EnumNamesColor = map[int]string{
ColorRed:"Red",
ColorGreen:"Green",
ColorBlue:"Blue",
}

View File

@@ -100,6 +100,9 @@ func TestAll(t *testing.T) {
// Verify that vtables are deduplicated when written:
CheckVtableDeduplication(t.Fatalf)
// Verify the enum names
CheckEnumNames(t.Fatalf)
// Verify that the Go code used in FlatBuffers documentation passes
// some sanity checks:
CheckDocExample(generated, off, t.Fatalf)
@@ -1314,6 +1317,37 @@ func CheckFinishedBytesError(fail func(string, ...interface{})) {
b.FinishedBytes()
}
// CheckEnumNames checks that the generated enum names are correct.
func CheckEnumNames(fail func(string, ...interface{})) {
type testEnumNames struct {
EnumNames map[int]string
Expected map[int]string
}
data := [...]testEnumNames{
{example.EnumNamesAny,
map[int]string{
example.AnyNONE: "NONE",
example.AnyMonster: "Monster",
example.AnyTestSimpleTableWithEnum: "TestSimpleTableWithEnum",
},
},
{example.EnumNamesColor,
map[int]string{
example.ColorRed: "Red",
example.ColorGreen: "Green",
example.ColorBlue: "Blue",
},
},
}
for _, t := range data {
for val, name := range t.Expected {
if name != t.EnumNames[val] {
fail("enum name is not equal")
}
}
}
}
// CheckDocExample checks that the code given in FlatBuffers documentation
// is syntactically correct.
func CheckDocExample(buf []byte, off flatbuffers.UOffsetT, fail func(string, ...interface{})) {