import unittest from datetime import datetime from sia.reasoning_entry import ReasoningEntry class ReasoningEntryTest(unittest.TestCase): def setUp(self): """Set up test cases with fixed id and timestamp""" self.test_id = "test-id-1234" self.test_timestamp = datetime(2024, 10, 31, 12, 0, 0) def test_initialization(self): """Test entry initialization""" content = "test reasoning" entry = ReasoningEntry(self.test_id, self.test_timestamp, content) self.assertEqual(entry.content, content) self.assertEqual(entry.id, self.test_id) self.assertEqual(entry.timestamp, self.test_timestamp) def test_update_does_nothing(self): """Test that update operation has no effect""" content = "test reasoning" entry = ReasoningEntry(self.test_id, self.test_timestamp, content) # Store initial state initial_content = entry.generate_context().text # Perform update entry.update() # Verify state hasn't changed self.assertEqual(entry.generate_context().text, initial_content) def test_generate_context(self): """Test XML context generation""" content = "test reasoning" entry = ReasoningEntry(self.test_id, self.test_timestamp, content) element = entry.generate_context() # Verify XML structure self.assertEqual(element.tag, "reasoning") self.assertEqual(element.get("id"), self.test_id) self.assertEqual(element.text, f"{content}") def test_special_characters(self): """Test handling reasoning text with special characters""" content = "Special reasoning: \n\t\r\'\"\\" entry = ReasoningEntry(self.test_id, self.test_timestamp, content) element = entry.generate_context() self.assertEqual(element.text, f"{content}") def test_empty_content(self): """Test handling empty reasoning text""" entry = ReasoningEntry(self.test_id, self.test_timestamp, "") element = entry.generate_context() self.assertEqual(element.text, "") def test_large_content(self): """Test handling large reasoning text""" content = "x" * 10000 entry = ReasoningEntry(self.test_id, self.test_timestamp, content) element = entry.generate_context() self.assertEqual(element.text, f"{content}") def test_multiline_content(self): """Test handling multiline reasoning text""" content = """Line 1 Line 2 Line 3""" entry = ReasoningEntry(self.test_id, self.test_timestamp, content) element = entry.generate_context() self.assertEqual(element.text, f"{content}")