def test_float_against_float32(self): nm = NumberArrayMeta("float32") values = [1.2, 3.4, 5.6] response = nm.validate(values) for i, value in enumerate(response): self.assertAlmostEqual(values[i], response[i], places=5)
def test_int_against_int(self): nm = NumberArrayMeta("int32") values = [1, 2, 3] response = nm.validate(values) for i, value in enumerate(response): self.assertEqual(values[i], value)
def test_float_against_float64(self): nm = NumberArrayMeta("float64") values = [1.2, 3.4, 5.6] response = nm.validate(values) for i, value in enumerate(response): self.assertEqual(values[i], value)
def test_numpy_array(self): nm = NumberArrayMeta("float64") values = np.array([1.2, 3.4, 5.6]) response = nm.validate(values) for i, value in enumerate(response): self.assertEqual(values[i], value)
def test_null_element_raises(self): nm = NumberArrayMeta("float32") self.assertRaises(ValueError, nm.validate, [1.2, None, 5.6])
def test_float_against_int_raises(self): nm = NumberArrayMeta("int32") self.assertRaises(ValueError, nm.validate, [1.2, 34, 56])
def test_numpy_array_wrong_number_type_raises(self): nm = NumberArrayMeta("int32") values = np.array([1.2, 3.4, 5.6]) with self.assertRaises(TypeError): nm.validate(values)
def test_numpy_array_wrong_type_raises(self): nm = NumberArrayMeta("float64") values = "[1.2, 3.4, 5.6]" with self.assertRaises(TypeError): nm.validate(values)
def test_none_validates(self): nm = NumberArrayMeta("int32") self.assertEquals(nm.validate(None), [])
NumberMeta, NumberArrayMeta, BooleanArrayMeta, TableMeta sm = RunnableDeviceStateMachine configure_args = [ "generator", PointGeneratorMeta("Generator instance"), REQUIRED, "axes_to_move", StringArrayMeta("Axes that should be moved"), REQUIRED, "exposure", NumberMeta("float64", "How long to remain at each point"), REQUIRED ] # Make a table for the layout info we need columns = OrderedDict() columns["name"] = StringArrayMeta("Name of layout part") columns["mri"] = StringArrayMeta("Malcolm full name of child block") columns["x"] = NumberArrayMeta("float64", "X Co-ordinate of child block") columns["y"] = NumberArrayMeta("float64", "X Co-ordinate of child block") columns["visible"] = BooleanArrayMeta("Whether child block is visible") layout_table_meta = TableMeta("Layout of child blocks", columns=columns) # Make a table for the port info we need columns = OrderedDict() columns["name"] = StringArrayMeta("Name of layout part") columns["type"] = StringArrayMeta("Type of outport (e.g. bit or pos)") columns["value"] = StringArrayMeta("Value of outport (e.g. PULSE1.OUT)") outport_table_meta = TableMeta("List of ports on blocks", columns=columns) @sm.insert @method_takes() class ManagerController(DefaultController):