def testGetVersionInfoComplexOrder(self): """Tests pack.GetVersionInfo() using a struct whose definition order, ordinal order and pack order for fields are all different. """ struct = mojom.Struct('test') struct.AddField('field_3', mojom.BOOL, ordinal=3, attributes={'MinVersion': 3}) struct.AddField('field_0', mojom.INT32, ordinal=0) struct.AddField('field_1', mojom.INT64, ordinal=1, attributes={'MinVersion': 2}) struct.AddField('field_2', mojom.INT64, ordinal=2, attributes={'MinVersion': 3}) ps = pack.PackedStruct(struct) versions = pack.GetVersionInfo(ps) self.assertEquals(3, len(versions)) self.assertEquals(0, versions[0].version) self.assertEquals(1, versions[0].num_fields) self.assertEquals(16, versions[0].num_bytes) self.assertEquals(2, versions[1].version) self.assertEquals(2, versions[1].num_fields) self.assertEquals(24, versions[1].num_bytes) self.assertEquals(3, versions[2].version) self.assertEquals(4, versions[2].num_fields) self.assertEquals(32, versions[2].num_bytes)
def GetResponseStructFromMethod(method): params_class = "%s_%s_ResponseParams" % (GetNameForElement(method.interface), GetNameForElement(method)) struct = mojom.Struct(params_class, module=method.interface.module) for param in method.response_parameters: struct.AddField("out%s" % GetNameForElement(param), param.kind, param.ordinal) struct.packed = pack.PackedStruct(struct) struct.bytes = pack.GetByteLayout(struct.packed) struct.versions = pack.GetVersionInfo(struct.packed) return struct
def testGetVersionInfoEmptyStruct(self): """Tests that pack.GetVersionInfo() never returns an empty list, even for empty structs. """ struct = mojom.Struct('test') ps = pack.PackedStruct(struct) versions = pack.GetVersionInfo(ps) self.assertEquals(1, len(versions)) self.assertEquals(0, versions[0].version) self.assertEquals(0, versions[0].num_fields) self.assertEquals(8, versions[0].num_bytes)
def _AddStructComputedData(exported, struct): struct.packed = pack.PackedStruct(struct) struct.bytes = pack.GetByteLayout(struct.packed) struct.versions = pack.GetVersionInfo(struct.packed) struct.exported = exported