start implementation on new architecture
This commit is contained in:
106
test/web_io_buffer_test.py
Normal file
106
test/web_io_buffer_test.py
Normal file
@@ -0,0 +1,106 @@
|
||||
import unittest
|
||||
|
||||
from sia.web_io_buffer import WebIOBuffer
|
||||
|
||||
class WebIOBufferTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
"""Set up a fresh WebIOBuffer for each test."""
|
||||
self.buffer = WebIOBuffer()
|
||||
|
||||
def test_initialization(self):
|
||||
"""Test initial state of buffer"""
|
||||
self.assertEqual(self.buffer.buffer_length(), 0)
|
||||
self.assertEqual(self.buffer.get_stdout(), "")
|
||||
self.assertEqual(self.buffer.read(), "")
|
||||
|
||||
def test_append_stdin(self):
|
||||
"""Test appending to stdin buffer"""
|
||||
test_input = "test input"
|
||||
self.buffer.append_stdin(test_input)
|
||||
self.assertEqual(self.buffer.buffer_length(), len(test_input))
|
||||
|
||||
def test_read_clears_buffer(self):
|
||||
"""Test that reading clears the stdin buffer"""
|
||||
test_input = "test input"
|
||||
self.buffer.append_stdin(test_input)
|
||||
content = self.buffer.read()
|
||||
self.assertEqual(content, test_input)
|
||||
self.assertEqual(self.buffer.buffer_length(), 0)
|
||||
self.assertEqual(self.buffer.read(), "")
|
||||
|
||||
def test_write_output(self):
|
||||
"""Test writing to stdout buffer"""
|
||||
test_output = "test output"
|
||||
self.buffer.write(test_output)
|
||||
self.assertEqual(self.buffer.get_stdout(), test_output)
|
||||
|
||||
def test_multiple_writes(self):
|
||||
"""Test multiple write operations"""
|
||||
self.buffer.write("Part 1")
|
||||
self.buffer.write("Part 2")
|
||||
self.assertEqual(self.buffer.get_stdout(), "Part 1Part 2")
|
||||
|
||||
def test_clear_stdout(self):
|
||||
"""Test clearing stdout buffer"""
|
||||
self.buffer.write("test output")
|
||||
self.buffer.clear_stdout()
|
||||
self.assertEqual(self.buffer.get_stdout(), "")
|
||||
|
||||
def test_multiple_stdin_appends(self):
|
||||
"""Test multiple stdin append operations"""
|
||||
self.buffer.append_stdin("Line 1\n")
|
||||
self.buffer.append_stdin("Line 2\n")
|
||||
content = self.buffer.read()
|
||||
self.assertEqual(content, "Line 1\nLine 2\n")
|
||||
|
||||
def test_empty_write(self):
|
||||
"""Test writing empty content"""
|
||||
self.buffer.write("")
|
||||
self.assertEqual(self.buffer.get_stdout(), "")
|
||||
|
||||
def test_empty_append_stdin(self):
|
||||
"""Test appending empty content to stdin"""
|
||||
self.buffer.append_stdin("")
|
||||
self.assertEqual(self.buffer.buffer_length(), 0)
|
||||
|
||||
def test_special_characters(self):
|
||||
"""Test handling special characters"""
|
||||
special_chars = "Special chars: \n\t\r\'\"\\"
|
||||
self.buffer.append_stdin(special_chars)
|
||||
content = self.buffer.read()
|
||||
self.assertEqual(content, special_chars)
|
||||
|
||||
self.buffer.write(special_chars)
|
||||
self.assertEqual(self.buffer.get_stdout(), special_chars)
|
||||
|
||||
def test_large_content(self):
|
||||
"""Test handling large content"""
|
||||
large_input = "x" * 10000
|
||||
self.buffer.append_stdin(large_input)
|
||||
content = self.buffer.read()
|
||||
self.assertEqual(content, large_input)
|
||||
|
||||
self.buffer.write(large_input)
|
||||
self.assertEqual(self.buffer.get_stdout(), large_input)
|
||||
|
||||
def test_multiple_operations(self):
|
||||
"""Test mixed read/write operations"""
|
||||
# Write some output
|
||||
self.buffer.write("Output 1\n")
|
||||
self.buffer.write("Output 2\n")
|
||||
|
||||
# Add some input
|
||||
self.buffer.append_stdin("Input 1\n")
|
||||
self.buffer.append_stdin("Input 2\n")
|
||||
|
||||
# Verify stdout accumulated correctly
|
||||
self.assertEqual(self.buffer.get_stdout(), "Output 1\nOutput 2\n")
|
||||
|
||||
# Read input and verify it's cleared
|
||||
content = self.buffer.read()
|
||||
self.assertEqual(content, "Input 1\nInput 2\n")
|
||||
self.assertEqual(self.buffer.buffer_length(), 0)
|
||||
|
||||
# Clear stdout and verify
|
||||
self.buffer.clear_stdout()
|
||||
self.assertEqual(self.buffer.get_stdout(), "")
|
||||
Reference in New Issue
Block a user