def test_message_interface(self): """Test functions relating to storing and recovering messages.""" db = ContentDB(tempfile.NamedTemporaryFile().name) id1 = dandelion.identity.generate() id2 = dandelion.identity.generate() first_msg_list = [Message('A'), Message('B'), Message('III', timestamp=3), dandelion.message.create("W Sender", sender=id1), dandelion.message.create("W Receiver", receiver=id2), dandelion.message.create("W Sender And Receiver", sender=id1, receiver=id2)] # Try to add junk self.assertRaises(TypeError, db.add_messages, None) self.assertRaises(TypeError, db.add_messages, 23) self.assertRaises(AttributeError, db.add_messages, [None]) # Add a message list self.assertEqual(db.message_count, 0) db.add_messages(first_msg_list) self.assertNotEqual(db.message_count, None) self.assertEqual(db.message_count, len(first_msg_list)) self.assertEqual([db.contains_message(m.id) for m in first_msg_list], [True, True, True, True, True, True]) # And for another message list? second_msg_list = [Message('C'), Message('A')] self.assertEqual([db.contains_message(m.id) for m in second_msg_list], [False, True]) # Adding the second message list db.add_messages(second_msg_list) self.assertEqual(db.message_count, 7) self.assertEqual([db.contains_message(m.id) for m in first_msg_list], [True, True, True, True, True, True]) self.assertEqual([db.contains_message(m.id) for m in second_msg_list], [True, True]) # Remove a list db.remove_messages(first_msg_list) self.assertEqual(db.message_count, 1) self.assertEqual([db.contains_message(m.id) for m in first_msg_list], [False, False, False, False, False, False]) self.assertEqual([db.contains_message(m.id) for m in second_msg_list], [True, False]) # Remove same message list db.remove_messages(first_msg_list) self.assertEqual(db.message_count, 1) self.assertEqual([db.contains_message(m.id) for m in first_msg_list], [False, False, False, False, False, False]) self.assertEqual([db.contains_message(m.id) for m in second_msg_list], [True, False]) # Remove all messages db.remove_messages() self.assertEqual(db.message_count, 0) self.assertEqual([db.contains_message(m.id) for m in first_msg_list], [False, False, False, False, False, False]) self.assertEqual([db.contains_message(m.id) for m in second_msg_list], [False, False])
def test_list_message_interface(self): """Test functions relating to storing and recovering single messages""" db = ContentDB() first_msg_list = [Message('A'), Message('B')] # Add a message list db.add_messages(first_msg_list) self.assertNotEqual(db.message_count, None) self.assertEqual(db.message_count, len(first_msg_list)) self.assertEqual(db.contains_messages(first_msg_list), [True, True]) # And for another message list? second_msg_list = [Message('C'), Message('A')] self.assertEqual(db.contains_messages(second_msg_list), [False, True]) # Adding the second message list db.add_messages(second_msg_list) self.assertEqual(db.message_count, 3) self.assertEqual(db.contains_messages(first_msg_list), [True, True]) self.assertEqual(db.contains_messages(second_msg_list), [True, True]) # Remove a list db.remove_messages(first_msg_list) self.assertEqual(db.message_count, 1) self.assertEqual(db.contains_messages(first_msg_list), [False, False]) self.assertEqual(db.contains_messages(second_msg_list), [True, False]) # Remove same message list db.remove_messages(first_msg_list) self.assertEqual(db.message_count, 1) self.assertEqual(db.contains_messages(first_msg_list), [False, False]) self.assertEqual(db.contains_messages(second_msg_list), [True, False]) # Remove all messages db.remove_messages() self.assertEqual(db.message_count, 0) self.assertEqual(db.contains_messages(first_msg_list), [False, False]) self.assertEqual(db.contains_messages(second_msg_list), [False, False])