def _side_effect(self, *args): """ Check args of gwyfile_object_graphmodel_get func and write self.curves_array in 'curves' field """ # first arg is GwyDatafield returned by get_gwyitem_object self.assertEqual(args[0], self.gwygraphmodel) # second arg is GwyfileError** assert ffi.typeof(args[1]) == ffi.typeof(ffi.new("GwyfileError**")) # last arg in Null self.assertEqual(args[-1], ffi.NULL) # combine fields names and fields pointers in one dictionary arg_keys = [ffi.string(key).decode('utf-8') for key in args[2:-1:2]] arg_pointers = [pointer for pointer in args[3:-1:2]] arg_dict = dict(zip(arg_keys, arg_pointers)) arg_dict['curves'][0] = self.curves_array # C func returns true if the graphmodel object loock acceptable truep = ffi.new("bool*", True) return truep[0]
def _test_pos_args_side_effect(self, *args): # first arg is GwyfileSelectionPoint object self.assertEqual(args[0], self.gwysel) # second arg is GwyfileError** self.assertEqual(ffi.typeof(args[1]), ffi.typeof(ffi.new("GwyfileError**"))) # last arg in Null self.assertEqual(args[-1], ffi.NULL) # Function should return True if object looks acceptable truep = ffi.new("bool*", True) return truep[0]
def _positional_args_side_effect(self, *args): """ Check positional args in gwyfile_object_graphcurvemodel_get call """ # first arg is GwyGraphCurveModel self.assertEqual(args[0], self.gwycurve) # second arg is GwyfileError** assert ffi.typeof(args[1]) == ffi.typeof(ffi.new("GwyfileError**")) # last arg in Null self.assertEqual(args[-1], ffi.NULL) # C func returns true if the graphcurvemodel object loock acceptable truep = ffi.new("bool*", True) return truep[0]
def _side_effect(self, *args): # first arg is GwyDatafield object from Libgwyfile self.assertEqual(args[0], self.cgwydf) # second arg is GwyfileError** assert ffi.typeof(args[1]) == ffi.typeof(self.errorp) # last arg in NULL self.assertEqual(args[-1], ffi.NULL) # create dict from names and types of pointers in args arg_keys = [ffi.string(key).decode('utf-8') for key in args[2:-1:2]] arg_pointers = [pointer for pointer in args[3:-1:2]] arg_dict = dict(zip(arg_keys, arg_pointers)) datap = arg_dict['data'] datap[0] = ffi.cast("double*", self.data.ctypes.data) return self.truep[0]
def _side_effect_check_args(self, *args): """ Check args passing to gwyfile_object_datafield_get C function """ # first arg is GwyDatafield object from Libgwyfile self.assertEqual(args[0], self.cgwydf) # second arg is GwyfileError** assert ffi.typeof(args[1]) == ffi.typeof(self.errorp) # last arg in NULL self.assertEqual(args[-1], ffi.NULL) # create dict from names and types of pointers in args arg_keys = [ffi.string(key).decode('utf-8') for key in args[2:-1:2]] arg_pointer_types = [ffi.typeof(pointer) for pointer in args[3:-1:2]] arg_dict = dict(zip(arg_keys, arg_pointer_types)) self.assertDictEqual(arg_dict, self.metadata_dict) return self.truep[0]
def setUp(self): self.cgwydf = Mock() self.mock_gwydf = Mock(spec=GwyDataField) self.mock_gwydf._get_meta = GwyDataField._get_meta patcher_lib = patch('pygwyfile.gwydatafield.lib', autospec=True) self.addCleanup(patcher_lib.stop) self.mock_lib = patcher_lib.start() self.falsep = ffi.new("bool*", False) self.truep = ffi.new("bool*", True) self.errorp = ffi.new("GwyfileError**") self.error_msg = "Test error message" self.metadata_dict = { 'xres': ffi.typeof(ffi.new("int32_t*")), 'yres': ffi.typeof(ffi.new("int32_t*")), 'xreal': ffi.typeof(ffi.new("double*")), 'yreal': ffi.typeof(ffi.new("double*")), 'xoff': ffi.typeof(ffi.new("double*")), 'yoff': ffi.typeof(ffi.new("double*")), 'si_unit_xy': ffi.typeof(ffi.new("char**")), 'si_unit_z': ffi.typeof(ffi.new("char**")) }