Example #1
0
 def test_010_remove_in_defer_mode(self):
     """test MsgTree remove in defer mode"""
     tree = MsgTree(mode=MODE_DEFER)
     tree.add("item1", "message0")
     self.assertEqual(len(tree), 1)
     tree.add("item2", "message1")
     self.assertEqual(len(tree), 2)
     tree.add("item3", "message2")
     self.assertEqual(len(tree), 3)
     tree.add("item2", "message4")
     tree.add("item1", "message3")
     tree.remove(lambda k: k == "item2")
     self.assertEqual(tree["item1"], "message0\nmessage3")
     self.assertRaises(KeyError, tree.__getitem__, "item2")
     # calling walk with call _update_keys() and change to MODE_SHIFT
     self.assertEqual([(k, e.message()) for e, k in tree.walk()],
                      [(['item1'], 'message0\nmessage3'),
                       (['item3'], 'message2')])
     self.assertEqual(tree.mode, MODE_SHIFT)
     # further tree modifications should be safe...
     tree.add("item1", "message5")
     tree.add("item2", "message6")
     self.assertEqual(tree["item1"], "message0\nmessage3\nmessage5")
     self.assertEqual(tree["item2"], "message6")
     self.assertEqual([(k, e.message()) for e, k in tree.walk()],
                      [(['item1'], 'message0\nmessage3\nmessage5'),
                       (['item3'], 'message2'), (['item2'], 'message6')])
Example #2
0
 def test_010_remove_in_defer_mode(self):
     """test MsgTree remove in defer mode"""
     tree = MsgTree(mode=MODE_DEFER)
     tree.add("item1", "message0")
     self.assertEqual(len(tree), 1)
     tree.add("item2", "message1")
     self.assertEqual(len(tree), 2)
     tree.add("item3", "message2")
     self.assertEqual(len(tree), 3)
     tree.add("item2", "message4")
     tree.add("item1", "message3")
     tree.remove(lambda k: k == "item2")
     self.assertEqual(tree["item1"], "message0\nmessage3")
     self.assertRaises(KeyError, tree.__getitem__, "item2")
     # calling walk with call _update_keys() and change to MODE_SHIFT
     self.assertEqual([(k, e.message()) for e, k in tree.walk()],
                      [(['item1'], 'message0\nmessage3'),
                       (['item3'], 'message2')])
     self.assertEqual(tree.mode, MODE_SHIFT)
     # further tree modifications should be safe...
     tree.add("item1", "message5")
     tree.add("item2", "message6")
     self.assertEqual(tree["item1"], "message0\nmessage3\nmessage5")
     self.assertEqual(tree["item2"], "message6")
     self.assertEqual([(k, e.message()) for e, k in tree.walk()],
                      [(['item1'], 'message0\nmessage3\nmessage5'),
                       (['item3'], 'message2'),
                       (['item2'], 'message6')])
Example #3
0
 def test_005_remove(self):
     """test MsgTree.remove()"""
     # build tree
     tree = MsgTree()
     self.assertEqual(len(tree), 0)
     tree.add(("w1", "key1"), "message0")
     self.assertEqual(len(tree), 1)
     tree.add(("w1", "key2"), "message0")
     self.assertEqual(len(tree), 2)
     tree.add(("w1", "key3"), "message0")
     self.assertEqual(len(tree), 3)
     tree.add(("w2", "key4"), "message1")
     self.assertEqual(len(tree), 4)
     tree.remove(lambda k: k[1] == "key2")
     self.assertEqual(len(tree), 3)
     for msg, keys in tree.walk(match=lambda k: k[0] == "w1",
                                mapper=itemgetter(1)):
         self.assertEqual(msg, "message0")
         self.assertEqual(len(keys), 2)
     tree.remove(lambda k: k[0] == "w1")
     self.assertEqual(len(tree), 1)
     tree.remove(lambda k: k[0] == "w2")
     self.assertEqual(len(tree), 0)
     tree.clear()
     self.assertEqual(len(tree), 0)
Example #4
0
 def test_005_remove(self):
     """test MsgTree.remove()"""
     # build tree
     tree = MsgTree()
     self.assertEqual(len(tree), 0)
     tree.add(("w1", "key1"), "message0")
     self.assertEqual(len(tree), 1)
     tree.add(("w1", "key2"), "message0")
     self.assertEqual(len(tree), 2)
     tree.add(("w1", "key3"), "message0")
     self.assertEqual(len(tree), 3)
     tree.add(("w2", "key4"), "message1")
     self.assertEqual(len(tree), 4)
     tree.remove(lambda k: k[1] == "key2")
     self.assertEqual(len(tree), 3)
     for msg, keys in tree.walk(match=lambda k: k[0] == "w1",
                                mapper=itemgetter(1)):
         self.assertEqual(msg, "message0")
         self.assertEqual(len(keys), 2)
     tree.remove(lambda k: k[0] == "w1")
     self.assertEqual(len(tree), 1)
     tree.remove(lambda k: k[0] == "w2")
     self.assertEqual(len(tree), 0)
     tree.clear()
     self.assertEqual(len(tree), 0)