def setUp(self): threads = { 'test_owner,test_user': ChatThread(participants=['test_owner', 'test_user']).add_message( ChatMessage(_NOW, 'test_owner', '白人看不懂', 0)), 'test_user,test_user_1,test_user_2': ChatThread( participants=['test_owner', 'test_user_1', 'test_user_2']). add_message(ChatMessage( _NOW, 'test_owner', '白人看不懂', 1)).add_message( ChatMessage(_NOW, 'test_user_1', 'Что это?', 2)).add_message( ChatMessage(_NOW, 'test_user_2', 'En ymmärrä', 2)), } self.history = FacebookChatHistory(user="******", threads=threads) self.output = BytesIO() if six.PY3: import io self.output_handle = io.TextIOWrapper(self.output, encoding='UTF-8', errors='replace') else: from encodings.utf_8 import StreamWriter self.output_handle = StreamWriter(self.output)
def test_thread_message_ordering(self): # Within thread m1 = ChatMessage(timestamp=datetime(2015, 1, 1, 0, 0), seq_num=-3, sender="Sender 1", content="1") m2 = ChatMessage(timestamp=datetime(2015, 1, 2, 0, 0), seq_num=-1, sender="Sender 2", content="2") m3 = ChatMessage(timestamp=datetime(2015, 1, 2, 0, 0), seq_num=-2, sender="Sender 3", content="3") for p in permutations([m1, m2, m3]): thread = ChatThread([]) for m in p: thread.add_message(m) thread.messages.sort() self.assertEqual([1, 3, 2], [int(m.content) for m in thread.messages])
def test_message_comparison(self): m1 = ChatMessage(timestamp=datetime(2015, 1, 1, 0, 0), seq_num=0, sender="Sender 1", content="Chat message 1") m2 = ChatMessage(timestamp=datetime(2015, 1, 1, 0, 0), seq_num=-1, sender="Sender 2", content="Chat message 2") self.assertTrue(m2 < m1, "Message sequence ordering failed") # Order by time m2 = m2._replace(timestamp=datetime(2015, 1, 1, 0, 1)) self.assertTrue(m2 > m1, "Message time ordering failed")