mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-17 01:26:45 +00:00
Python: Add forceDefaults opt to python Builder (#5564)
* Add forceDefaults opt to python Builder * Add test functions for force_default option for python builder * Simplify * Add force default test for UOffsetTFlags
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
8bfafc76de
commit
e9d29c21a7
@@ -1159,6 +1159,41 @@ def make_monster_from_generated_code(sizePrefix = False, file_identifier=None):
|
||||
return b.Bytes, b.Head()
|
||||
|
||||
|
||||
class TestBuilderForceDefaults(unittest.TestCase):
|
||||
"""Verify that the builder adds default values when forced."""
|
||||
|
||||
test_flags = [N.BoolFlags(), N.Uint8Flags(), N.Uint16Flags(), \
|
||||
N.Uint32Flags(), N.Uint64Flags(), N.Int8Flags(), \
|
||||
N.Int16Flags(), N.Int32Flags(), N.Int64Flags(), \
|
||||
N.Float32Flags(), N.Float64Flags(), N.UOffsetTFlags()]
|
||||
def test_default_force_defaults(self):
|
||||
for flag in self.test_flags:
|
||||
b = flatbuffers.Builder(0)
|
||||
b.StartObject(1)
|
||||
stored_offset = b.Offset()
|
||||
if flag != N.UOffsetTFlags():
|
||||
b.PrependSlot(flag, 0, 0, 0)
|
||||
else:
|
||||
b.PrependUOffsetTRelativeSlot(0, 0, 0)
|
||||
end_offset = b.Offset()
|
||||
b.EndObject()
|
||||
self.assertEqual(0, end_offset - stored_offset)
|
||||
|
||||
def test_force_defaults_true(self):
|
||||
for flag in self.test_flags:
|
||||
b = flatbuffers.Builder(0)
|
||||
b.ForceDefaults(True)
|
||||
b.StartObject(1)
|
||||
stored_offset = b.Offset()
|
||||
if flag != N.UOffsetTFlags():
|
||||
b.PrependSlot(flag, 0, 0, 0)
|
||||
else:
|
||||
b.PrependUOffsetTRelativeSlot(0, 0, 0)
|
||||
end_offset = b.Offset()
|
||||
b.EndObject()
|
||||
self.assertEqual(flag.bytewidth, end_offset - stored_offset)
|
||||
|
||||
|
||||
class TestAllCodePathsOfExampleSchema(unittest.TestCase):
|
||||
def setUp(self, *args, **kwargs):
|
||||
super(TestAllCodePathsOfExampleSchema, self).setUp(*args, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user