feat: solution for 'Экзамен: Самокорректирующийся агент'
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import io
|
||||
import sys
|
||||
import json
|
||||
import unittest
|
||||
from src import index
|
||||
|
||||
class TestIndex(unittest.TestCase):
|
||||
def setUp(self):
|
||||
# Capture stdout
|
||||
self._stdout = sys.stdout
|
||||
sys.stdout = io.StringIO()
|
||||
|
||||
def tearDown(self):
|
||||
sys.stdout = self._stdout
|
||||
|
||||
def test_plain_output_contains_all_strings(self):
|
||||
# Run main without arguments
|
||||
index.main()
|
||||
output = sys.stdout.getvalue()
|
||||
# Check that all labels are present
|
||||
for label in index.LABELS:
|
||||
self.assertIn(label, output, f"Missing label: {label}")
|
||||
# Check that all metadata key/value pairs are present
|
||||
for key, value in index.METADATA.items():
|
||||
self.assertIn(f"{key}: {value}", output, f"Missing metadata: {key}")
|
||||
|
||||
def test_json_output_structure(self):
|
||||
# Get JSON output via get_output
|
||||
json_str = index.get_output(json_output=True)
|
||||
data = json.loads(json_str)
|
||||
# Verify top-level keys
|
||||
self.assertIn("metadata", data)
|
||||
self.assertIn("labels", data)
|
||||
# Verify metadata content
|
||||
self.assertEqual(data["metadata"], index.METADATA)
|
||||
# Verify labels content
|
||||
self.assertEqual(data["labels"], index.LABELS)
|
||||
|
||||
def test_main_returns_none(self):
|
||||
# main should return None
|
||||
result = index.main()
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_output_is_not_empty(self):
|
||||
index.main()
|
||||
output = sys.stdout.getvalue()
|
||||
self.assertTrue(len(output.strip()) > 0)
|
||||
|
||||
def test_get_output_plain(self):
|
||||
plain = index.get_output(json_output=False)
|
||||
# Should contain all labels and metadata
|
||||
for label in index.LABELS:
|
||||
self.assertIn(label, plain)
|
||||
for key, value in index.METADATA.items():
|
||||
self.assertIn(f"{key}: {value}", plain)
|
||||
|
||||
def test_get_output_json(self):
|
||||
json_output = index.get_output(json_output=True)
|
||||
# Should be valid JSON
|
||||
try:
|
||||
data = json.loads(json_output)
|
||||
except json.JSONDecodeError as e:
|
||||
self.fail(f"JSON output is invalid: {e}")
|
||||
# Check that keys exist
|
||||
self.assertIn("metadata", data)
|
||||
self.assertIn("labels", data)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user