start implementation on new architecture

This commit is contained in:
2024-11-01 09:56:30 +01:00
parent ee089e5be7
commit 2c1e134c6e
43 changed files with 2978 additions and 619 deletions

106
test/web_io_buffer_test.py Normal file
View 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(), "")