mirror of
https://github.com/google/flatbuffers.git
synced 2026-07-03 18:04:14 +00:00
Add tests for GetRootAs* in Go and Python
This commit is contained in:
@@ -75,6 +75,9 @@ func TestAll(t *testing.T) {
|
|||||||
CheckStructIsNotInlineError(t.Fatalf)
|
CheckStructIsNotInlineError(t.Fatalf)
|
||||||
CheckFinishedBytesError(t.Fatalf)
|
CheckFinishedBytesError(t.Fatalf)
|
||||||
|
|
||||||
|
// Verify that GetRootAs works for non-root tables
|
||||||
|
CheckGetRootAsForNonRootTable(t.Fatalf)
|
||||||
|
|
||||||
// Verify that using the generated Go code builds a buffer without
|
// Verify that using the generated Go code builds a buffer without
|
||||||
// returning errors:
|
// returning errors:
|
||||||
generated, off := CheckGeneratedBuild(t.Fatalf)
|
generated, off := CheckGeneratedBuild(t.Fatalf)
|
||||||
@@ -964,6 +967,31 @@ func CheckManualBuild(fail func(string, ...interface{})) ([]byte, flatbuffers.UO
|
|||||||
return b.Bytes, b.Head()
|
return b.Bytes, b.Head()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CheckGetRootAsForNonRootTable(fail func(string, ...interface{})) {
|
||||||
|
b := flatbuffers.NewBuilder(0)
|
||||||
|
str := b.CreateString("MyStat")
|
||||||
|
example.StatStart(b)
|
||||||
|
example.StatAddId(b, str)
|
||||||
|
example.StatAddVal(b, 12345678)
|
||||||
|
example.StatAddCount(b, 12345)
|
||||||
|
stat_end := example.StatEnd(b)
|
||||||
|
b.Finish(stat_end)
|
||||||
|
|
||||||
|
stat := example.GetRootAsStat(b.Bytes, b.Head())
|
||||||
|
|
||||||
|
if got := stat.Id(); !bytes.Equal([]byte("MyStat"), got) {
|
||||||
|
fail(FailString("stat.Id()", "MyStat", got))
|
||||||
|
}
|
||||||
|
|
||||||
|
if got := stat.Val(); 12345678 != got {
|
||||||
|
fail(FailString("stat.Val()", 12345678, got))
|
||||||
|
}
|
||||||
|
|
||||||
|
if got := stat.Count(); 12345 != got {
|
||||||
|
fail(FailString("stat.Count()", 12345, got))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// CheckGeneratedBuild uses generated code to build the example Monster.
|
// CheckGeneratedBuild uses generated code to build the example Monster.
|
||||||
func CheckGeneratedBuild(fail func(string, ...interface{})) ([]byte, flatbuffers.UOffsetT) {
|
func CheckGeneratedBuild(fail func(string, ...interface{})) ([]byte, flatbuffers.UOffsetT) {
|
||||||
b := flatbuffers.NewBuilder(0)
|
b := flatbuffers.NewBuilder(0)
|
||||||
|
|||||||
@@ -1033,6 +1033,23 @@ class TestAllCodePathsOfExampleSchema(unittest.TestCase):
|
|||||||
self.assertEqual(7, mon2.Testhashs64Fnv1a())
|
self.assertEqual(7, mon2.Testhashs64Fnv1a())
|
||||||
self.assertEqual(8, mon2.Testhashu64Fnv1a())
|
self.assertEqual(8, mon2.Testhashu64Fnv1a())
|
||||||
|
|
||||||
|
def test_getrootas_for_nonroot_table(self):
|
||||||
|
b = flatbuffers.Builder(0)
|
||||||
|
string = b.CreateString("MyStat")
|
||||||
|
|
||||||
|
MyGame.Example.Stat.StatStart(b)
|
||||||
|
MyGame.Example.Stat.StatAddId(b, string)
|
||||||
|
MyGame.Example.Stat.StatAddVal(b, 12345678)
|
||||||
|
MyGame.Example.Stat.StatAddCount(b, 12345)
|
||||||
|
stat = MyGame.Example.Stat.StatEnd(b)
|
||||||
|
b.Finish(stat)
|
||||||
|
|
||||||
|
stat2 = MyGame.Example.Stat.Stat.GetRootAsStat(b.Bytes, b.Head())
|
||||||
|
|
||||||
|
self.assertEqual(b"MyStat", stat2.Id())
|
||||||
|
self.assertEqual(12345678, stat2.Val())
|
||||||
|
self.assertEqual(12345, stat2.Count())
|
||||||
|
|
||||||
|
|
||||||
class TestVtableDeduplication(unittest.TestCase):
|
class TestVtableDeduplication(unittest.TestCase):
|
||||||
''' TestVtableDeduplication verifies that vtables are deduplicated. '''
|
''' TestVtableDeduplication verifies that vtables are deduplicated. '''
|
||||||
|
|||||||
Reference in New Issue
Block a user