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

@@ -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{})) {