Update unit tests
This commit is contained in:
@@ -1,117 +1,148 @@
|
||||
import unittest
|
||||
from datetime import datetime
|
||||
|
||||
from sia.web_io_buffer import WebIOBuffer
|
||||
from sia.entry.write_entry import WriteEntry
|
||||
|
||||
class WriteEntryTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
"""Set up test cases with fixed id, timestamp, and IO buffer"""
|
||||
self.test_id = "test-id-1234"
|
||||
self.test_timestamp = datetime(2024, 10, 31, 12, 0, 0)
|
||||
self.io_buffer = WebIOBuffer()
|
||||
|
||||
def test_initialization(self):
|
||||
"""Test entry initialization"""
|
||||
content = "test message"
|
||||
entry = WriteEntry(self.test_id, self.test_timestamp, content, self.io_buffer)
|
||||
|
||||
self.assertEqual(entry.content, content)
|
||||
self.assertEqual(entry.id, self.test_id)
|
||||
self.assertEqual(entry.timestamp, self.test_timestamp)
|
||||
self.assertFalse(entry.written)
|
||||
self.assertEqual(self.io_buffer.get_stdout(), "")
|
||||
|
||||
def test_single_write(self):
|
||||
"""Test writing content once"""
|
||||
content = "test message"
|
||||
entry = WriteEntry(self.test_id, self.test_timestamp, content, self.io_buffer)
|
||||
|
||||
# Perform update and verify content was written
|
||||
entry.update()
|
||||
self.assertEqual(self.io_buffer.get_stdout(), content)
|
||||
self.assertTrue(entry.written)
|
||||
|
||||
def test_multiple_updates(self):
|
||||
"""Test that content is only written once even with multiple updates"""
|
||||
content = "test message"
|
||||
entry = WriteEntry(self.test_id, self.test_timestamp, content, self.io_buffer)
|
||||
|
||||
# Perform multiple updates
|
||||
entry.update()
|
||||
initial_output = self.io_buffer.get_stdout()
|
||||
self.io_buffer.clear_stdout()
|
||||
|
||||
entry.update()
|
||||
entry.update()
|
||||
|
||||
# Verify no additional content was written
|
||||
self.assertEqual(self.io_buffer.get_stdout(), "")
|
||||
self.assertTrue(entry.written)
|
||||
self.assertEqual(initial_output, content)
|
||||
|
||||
def test_empty_content(self):
|
||||
"""Test writing empty content"""
|
||||
entry = WriteEntry(self.test_id, self.test_timestamp, "", self.io_buffer)
|
||||
entry.update()
|
||||
|
||||
self.assertEqual(self.io_buffer.get_stdout(), "")
|
||||
self.assertTrue(entry.written)
|
||||
|
||||
def test_special_characters(self):
|
||||
"""Test writing content with special characters"""
|
||||
content = "Special chars: \n\t\r\'\"\\"
|
||||
entry = WriteEntry(self.test_id, self.test_timestamp, content, self.io_buffer)
|
||||
entry.update()
|
||||
|
||||
self.assertEqual(self.io_buffer.get_stdout(), content)
|
||||
|
||||
def test_large_content(self):
|
||||
"""Test writing large content"""
|
||||
content = "x" * 10000
|
||||
entry = WriteEntry(self.test_id, self.test_timestamp, content, self.io_buffer)
|
||||
entry.update()
|
||||
|
||||
self.assertEqual(self.io_buffer.get_stdout(), content)
|
||||
|
||||
def test_generate_context(self):
|
||||
"""Test XML context generation"""
|
||||
content = "test message"
|
||||
entry = WriteEntry(self.test_id, self.test_timestamp, content, self.io_buffer)
|
||||
|
||||
# Generate context before writing
|
||||
element = entry.generate_context()
|
||||
|
||||
# Verify XML structure
|
||||
self.assertEqual(element.tag, "write_stdout")
|
||||
self.assertEqual(element.get("id"), self.test_id)
|
||||
self.assertEqual(element.text, f"{content}")
|
||||
|
||||
# Write content and verify context remains the same
|
||||
entry.update()
|
||||
element_after = entry.generate_context()
|
||||
self.assertEqual(element_after.tag, "write_stdout")
|
||||
self.assertEqual(element_after.get("id"), self.test_id)
|
||||
self.assertEqual(element_after.text, f"{content}")
|
||||
|
||||
def test_unicode_content(self):
|
||||
"""Test writing Unicode content"""
|
||||
content = "Hello 世界 😊"
|
||||
entry = WriteEntry(self.test_id, self.test_timestamp, content, self.io_buffer)
|
||||
entry.update()
|
||||
|
||||
self.assertEqual(self.io_buffer.get_stdout(), content)
|
||||
|
||||
def test_multiline_content(self):
|
||||
"""Test writing multiline content"""
|
||||
content = """Line 1
|
||||
Line 2
|
||||
Line 3"""
|
||||
entry = WriteEntry(self.test_id, self.test_timestamp, content, self.io_buffer)
|
||||
entry.update()
|
||||
|
||||
self.assertEqual(self.io_buffer.get_stdout(), content)
|
||||
|
||||
# Verify XML escaping for multiline content
|
||||
element = entry.generate_context()
|
||||
self.assertEqual(element.text, f"{content}")
|
||||
import unittest
|
||||
|
||||
from sia.web_io_buffer import WebIOBuffer
|
||||
from sia.entry.write_entry import WriteEntry
|
||||
|
||||
class WriteEntryTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
"""Set up test cases with fixed id and IO buffer"""
|
||||
self.test_id = "test-id-1234"
|
||||
self.io_buffer = WebIOBuffer()
|
||||
|
||||
def test_initialization(self):
|
||||
"""Test entry initialization"""
|
||||
content = "test message"
|
||||
entry = WriteEntry(self.test_id, content, self.io_buffer)
|
||||
|
||||
self.assertEqual(entry.content, content)
|
||||
self.assertEqual(entry.id, self.test_id)
|
||||
self.assertFalse(entry.written)
|
||||
self.assertEqual(self.io_buffer.get_stdout(), "")
|
||||
|
||||
def test_single_write(self):
|
||||
"""Test writing content once"""
|
||||
content = "test message"
|
||||
entry = WriteEntry(self.test_id, content, self.io_buffer)
|
||||
|
||||
# Perform update and verify content was written
|
||||
entry.update()
|
||||
self.assertEqual(self.io_buffer.get_stdout(), content)
|
||||
self.assertTrue(entry.written)
|
||||
|
||||
def test_multiple_updates(self):
|
||||
"""Test that content is only written once even with multiple updates"""
|
||||
content = "test message"
|
||||
entry = WriteEntry(self.test_id, content, self.io_buffer)
|
||||
|
||||
# Perform multiple updates
|
||||
entry.update()
|
||||
initial_output = self.io_buffer.get_stdout()
|
||||
self.io_buffer.clear_stdout()
|
||||
|
||||
entry.update()
|
||||
entry.update()
|
||||
|
||||
# Verify no additional content was written
|
||||
self.assertEqual(self.io_buffer.get_stdout(), "")
|
||||
self.assertTrue(entry.written)
|
||||
self.assertEqual(initial_output, content)
|
||||
|
||||
def test_empty_content(self):
|
||||
"""Test writing empty content"""
|
||||
entry = WriteEntry(self.test_id, "", self.io_buffer)
|
||||
entry.update()
|
||||
|
||||
self.assertEqual(self.io_buffer.get_stdout(), "")
|
||||
self.assertTrue(entry.written)
|
||||
|
||||
def test_special_characters(self):
|
||||
"""Test writing content with special characters"""
|
||||
content = "Special chars: \n\t\r\'\"\\"
|
||||
entry = WriteEntry(self.test_id, content, self.io_buffer)
|
||||
entry.update()
|
||||
|
||||
self.assertEqual(self.io_buffer.get_stdout(), content)
|
||||
|
||||
def test_large_content(self):
|
||||
"""Test writing large content"""
|
||||
content = "x" * 10000
|
||||
entry = WriteEntry(self.test_id, content, self.io_buffer)
|
||||
entry.update()
|
||||
|
||||
self.assertEqual(self.io_buffer.get_stdout(), content)
|
||||
|
||||
def test_generate_context(self):
|
||||
"""Test XML context generation"""
|
||||
content = "test message"
|
||||
entry = WriteEntry(self.test_id, content, self.io_buffer)
|
||||
|
||||
# Generate context before writing
|
||||
element = entry.generate_context()
|
||||
|
||||
# Verify XML structure
|
||||
self.assertEqual(element.tag, "write_stdout")
|
||||
self.assertEqual(element.get("id"), self.test_id)
|
||||
self.assertEqual(element.text, content)
|
||||
|
||||
# Write content and verify context remains the same
|
||||
entry.update()
|
||||
element_after = entry.generate_context()
|
||||
self.assertEqual(element_after.tag, "write_stdout")
|
||||
self.assertEqual(element_after.get("id"), self.test_id)
|
||||
self.assertEqual(element_after.text, content)
|
||||
|
||||
def test_unicode_content(self):
|
||||
"""Test writing Unicode content"""
|
||||
content = "Hello 世界 😊"
|
||||
entry = WriteEntry(self.test_id, content, self.io_buffer)
|
||||
entry.update()
|
||||
|
||||
self.assertEqual(self.io_buffer.get_stdout(), content)
|
||||
|
||||
def test_multiline_content(self):
|
||||
"""Test writing multiline content"""
|
||||
content = """Line 1
|
||||
Line 2
|
||||
Line 3"""
|
||||
entry = WriteEntry(self.test_id, content, self.io_buffer)
|
||||
entry.update()
|
||||
|
||||
self.assertEqual(self.io_buffer.get_stdout(), content)
|
||||
|
||||
# Verify XML escaping for multiline content
|
||||
element = entry.generate_context()
|
||||
self.assertEqual(element.text, content)
|
||||
|
||||
def test_reset(self):
|
||||
"""Test resetting the entry state"""
|
||||
content = "test message"
|
||||
entry = WriteEntry(self.test_id, content, self.io_buffer)
|
||||
entry.update()
|
||||
self.assertTrue(entry.written)
|
||||
|
||||
# Reset the entry
|
||||
entry.reset()
|
||||
self.assertFalse(entry.written)
|
||||
|
||||
# Should be able to write again after reset
|
||||
self.io_buffer.clear_stdout()
|
||||
entry.update()
|
||||
self.assertEqual(self.io_buffer.get_stdout(), content)
|
||||
self.assertTrue(entry.written)
|
||||
|
||||
def test_serialize(self):
|
||||
"""Test serialization of the entry"""
|
||||
content = "test message"
|
||||
entry = WriteEntry(self.test_id, content, self.io_buffer)
|
||||
|
||||
# Check initial serialized state
|
||||
serialized = entry.serialize()
|
||||
self.assertEqual(serialized["type"], "write")
|
||||
self.assertEqual(serialized["id"], self.test_id)
|
||||
self.assertEqual(serialized["content"], content)
|
||||
self.assertEqual(serialized["written"], False)
|
||||
|
||||
# Update and check updated serialized state
|
||||
entry.update()
|
||||
serialized = entry.serialize()
|
||||
self.assertEqual(serialized["written"], True)
|
||||
Reference in New Issue
Block a user