def test_copy_mutable_list(self): mlist = MutableList([{"a": 1, "b": 2}]) shallow_copy = copy.copy(mlist) self.assertEqual(mlist, shallow_copy) self.assertIs(mlist[0], shallow_copy[0]) deep_copy = copy.deepcopy(mlist) self.assertEqual(mlist, deep_copy) self.assertIsNot(mlist[0], deep_copy[0])
def test_deep_copy(self, m_changed): lst = MutableList(('element1', 'element2')) self.mutable_obj.insert(0, lst) m_changed.reset_mock() clone = deepcopy(self.mutable_obj) self.assertEqual(0, m_changed.call_count) lst[0] = 'new_element' self.assertEqual(clone[0][0], 'element1') self.assertEqual(self.mutable_obj[0][0], 'new_element')
def test_deep_copy(self, m_changed): lst = MutableList(('element1', 'element2')) self.mutable_list.insert(0, lst) m_changed.reset_mock() clone = deepcopy(self.mutable_list) # changed should calls two times # - root cloned list (clone) # - mutable list element in root list (cloned lst) self.assertEqual(m_changed.call_count, 2) lst[0] = 'new_element' self.assertEqual(clone[0][0], 'element1') self.assertEqual(self.mutable_list[0][0], 'new_element')
def test_coerce_mutable_list(self, m_coerce): lst = MutableList() self.assertIsInstance(self.mutable_list.coerce('key', lst), MutableList) self.assertFalse(m_coerce.called)
def setUp(self): self.mutable_list = MutableList()
def test_pop_default_from_empty_list(self): self.standard = [] self.mutable_obj = MutableList() self._check_failure(IndexError, 'pop')
def test_initialize(self): with mock.patch('sqlalchemy.ext.mutable.Mutable.changed') as m_changed: MutableList([1, 2, 3]) self._assert_object_not_changed(m_changed)
def setUp(self): super(TestMutableListBase, self).setUp() self.standard = ['element1', 'element2'] self.mutable_obj = MutableList() self.mutable_obj.extend(self.standard)