def testItems_keys_values_and_iterators(self): portal = self.layer['portal'] setRoles(portal, TEST_USER_ID, ('Manager',)) doc = self._makeOne() from collective.btrees.interfaces import IOOBTreeContainer container = IOOBTreeContainer(doc) self.assertEqual(len(container.keys()), 0) key = object() value = object() container.insert(key, value) self.assertEqual(container.get(key), value) self.assertEqual(len(container.items()), 1) self.assertEqual(len(container.keys()), 1) self.assertEqual(len(container.values()), 1) self.assertEqual(list(container.items()), [(key, value)]) self.assertEqual(list(container.keys()), [key]) self.assertEqual(list(container.values()), [value]) # Test the iterators. item_iterator = container.iteritems() self.assertEqual(item_iterator.next(), (key, value)) self.assertRaises(StopIteration, item_iterator.next) key_iterator = container.iterkeys() self.assertEqual(key_iterator.next(), key) self.assertRaises(StopIteration, key_iterator.next) value_iterator = container.itervalues() self.assertEqual(value_iterator.next(), value) self.assertRaises(StopIteration, value_iterator.next)
def testPopItem(self): portal = self.layer['portal'] setRoles(portal, TEST_USER_ID, ('Manager',)) doc = self._makeOne() from collective.btrees.interfaces import IOOBTreeContainer container = IOOBTreeContainer(doc) # Insert an item and pop it. key = object() value = object() container.insert(key, value) self.assertEqual(len(container.items()), 1) self.assertEqual(container.pop(key), value) self.assertEqual(len(container.items()), 0) self.assertEqual(container.pop(key), None)
def testClear(self): portal = self.layer['portal'] setRoles(portal, TEST_USER_ID, ('Manager',)) doc = self._makeOne() from collective.btrees.interfaces import IOOBTreeContainer container = IOOBTreeContainer(doc) container.insert(object(), object()) container.insert(object(), object()) container.insert(object(), object()) self.assertEqual(len(container.items()), 3) # Remove all. container.clear() self.assertEqual(len(container.items()), 0) self.assertEqual(len(container.keys()), 0) self.assertEqual(len(container.values()), 0) self.assertRaises(StopIteration, container.iteritems().next) self.assertRaises(StopIteration, container.iterkeys().next) self.assertRaises(StopIteration, container.itervalues().next) # Clearing an empty container should work too of course. container.clear()
def testOOBTree(self): portal = self.layer['portal'] setRoles(portal, TEST_USER_ID, ('Manager',)) doc = self._makeOne() from collective.btrees.interfaces import IOOBTreeContainer container = IOOBTreeContainer(doc) self.assertEqual(len(container.keys()), 0) key = object() value = object() self.assertEqual(container.get(key), None) container.insert(key, value) self.assertEqual(container.get(key), value) self.assertEqual(list(container.items()), [(key, value)]) container.clear() self.assertEqual(list(container.keys()), [])