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:
Bharat Tak
2019-10-18 00:25:05 +02:00
committed by Wouter van Oortmerssen
parent 8bfafc76de
commit e9d29c21a7
2 changed files with 48 additions and 4 deletions

View File

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