Skip to content

Commit 7ea8db0

Browse files
authored
[Python] Add unit test for github issue 8653 (#8786)
1 parent c7b6b66 commit 7ea8db0

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

tests/py_test.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2787,6 +2787,29 @@ def _checkTable(tab, voffsett_value, b, c, d):
27872787
_checkTable(table1, 0, 44, 55, 66)
27882788
_checkTable(table2, 0, 77, 88, 99)
27892789

2790+
def test_vtable_deduplication_respects_object_size(self):
2791+
"""Vtables can't be shared if object sizes differ."""
2792+
2793+
b = flatbuffers.Builder(0)
2794+
2795+
b.StartObject(1)
2796+
b.PrependInt32Slot(0, 1, 0)
2797+
first = b.EndObject()
2798+
2799+
b.StartObject(1)
2800+
b.PrependInt64Slot(0, 2, 0)
2801+
second = b.EndObject()
2802+
b.Finish(second)
2803+
2804+
# The second object has to point to a different vtable than the first one.
2805+
table_first = flatbuffers.table.Table(b.Bytes, len(b.Bytes) - first)
2806+
table_second = flatbuffers.table.Table(b.Bytes, len(b.Bytes) - second)
2807+
2808+
self.assertEqual(8, table_first.GetVOffsetTSlot(2, 0))
2809+
self.assertEqual(14, table_second.GetVOffsetTSlot(2, 0))
2810+
2811+
# Ensure two distinct vtables exist so dedup considers object size.
2812+
self.assertEqual(2, len(b.vtables))
27902813

27912814
class TestExceptions(unittest.TestCase):
27922815

0 commit comments

Comments
 (0)