def test_change_notifications(self): foo = Foo() test_array = numpy.arange(-7, -2) different_test_array = numpy.arange(10) # Assigning None to something that's already None shouldn't fire. with self.assertTraitDoesNotChange(foo, "maybe_array"): foo.maybe_array = None # Changing from None to an array: expect an event. with self.assertTraitChanges(foo, "maybe_array"): foo.maybe_array = test_array # No event from assigning the same array again. with self.assertTraitDoesNotChange(foo, "maybe_array"): foo.maybe_array = test_array # But assigning a new array fires an event. with self.assertTraitChanges(foo, "maybe_array"): foo.maybe_array = different_test_array # No event even if the array is modified in place. different_test_array += 2 with self.assertTraitDoesNotChange(foo, "maybe_array"): foo.maybe_array = different_test_array # Set back to None; we should get an event. with self.assertTraitChanges(foo, "maybe_array"): foo.maybe_array = None
def _create_item_model(self): self.data = np.arange(120.0).reshape(4, 5, 6) self.model = ArrayDataModel(data=self.data, value_type=FloatValue()) return DataViewItemModel( model=self.model, selection_type='row', exporters=[], )
def setUp(self): super().setUp() self.array = np.arange(30.0).reshape(5, 2, 3) self.model = ArrayDataModel(data=self.array, value_type=FloatValue()) self.values_changed_event = None self.structure_changed_event = None self.model.observe(self.model_values_changed, 'values_changed') self.model.observe(self.model_structure_changed, 'structure_changed')
def test_setting_array_from_none(self): foo = Foo() test_array = numpy.arange(5) self.assertIsNone(foo.maybe_array) foo.maybe_array = test_array self.assertIsInstance(foo.maybe_array, numpy.ndarray) foo.maybe_array = None self.assertIsNone(foo.maybe_array)
def test_setting_array_from_array(self): foo = Foo() test_array = numpy.arange(5) foo.maybe_array = test_array output_array = foo.maybe_array self.assertIsInstance(output_array, numpy.ndarray) self.assertEqual(output_array.dtype, test_array.dtype) self.assertEqual(output_array.shape, test_array.shape) self.assertTrue((output_array == test_array).all())
def test_comparison_mode_override(self): foo = Foo() test_array = numpy.arange(-7, 2) with self.assertTraitChanges(foo, "maybe_array_no_compare"): foo.maybe_array_no_compare = None with self.assertTraitChanges(foo, "maybe_array_no_compare"): foo.maybe_array_no_compare = test_array with self.assertTraitChanges(foo, "maybe_array_no_compare"): foo.maybe_array_no_compare = test_array
def test_default_value_copied(self): # Check that we don't share defaults. test_default = numpy.arange(100.0, 110.0) class FooBar(HasTraits): foo = ArrayOrNone(value=test_default) bar = ArrayOrNone(value=test_default) foo_bar = FooBar() self.assertTrue((foo_bar.foo == test_default).all()) self.assertTrue((foo_bar.bar == test_default).all()) test_default += 2.0 self.assertFalse((foo_bar.foo == test_default).all()) self.assertFalse((foo_bar.bar == test_default).all()) foo = foo_bar.foo foo += 1729.0 self.assertFalse((foo_bar.foo == foo_bar.bar).all())
def test_set_data_1d(self): with self.assertTraitChanges(self.model, 'structure_changed'): self.model.data = np.arange(30.0) self.assertEqual(self.model.data.ndim, 2) self.assertEqual(self.model.data.shape, (30, 1))
def test_data_1d(self): array = np.arange(30.0) model = ArrayDataModel(data=array, value_type=FloatValue()) self.assertEqual(model.data.ndim, 2) self.assertEqual(model.data.shape, (30, 1))
def _create_widget(self): self.data = np.arange(120.0).reshape(4, 5, 6) self.model = ArrayDataModel(data=self.data, value_type=FloatValue()) return DataViewWidget(parent=self.parent.control, data_model=self.model)