Initial release: DictIA v0.8.14-alpha (fork de Speakr, AGPL-3.0)
This commit is contained in:
58
tests/test_json_fix.py
Normal file
58
tests/test_json_fix.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
|
||||
# Add the parent directory to the path to import app
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from src.app import auto_close_json, safe_json_loads
|
||||
|
||||
def run_tests():
|
||||
"""Runs a series of tests for the JSON fixing functions."""
|
||||
|
||||
test_cases_auto_close = {
|
||||
"Unterminated string": ('{"title": "Test", "summary": "This is a test', '{"title": "Test", "summary": "This is a test"}'),
|
||||
"Missing closing brace": ('{"title": "Test", "summary": "This is a test"}', '{"title": "Test", "summary": "This is a test"}'),
|
||||
"Missing closing bracket": ('[{"item": 1}, {"item": 2}', '[{"item": 1}, {"item": 2}]'),
|
||||
"Nested unterminated": ('{"data": {"items": [1, 2', '{"data": {"items": [1, 2]}}'),
|
||||
"String at the end": ('{"key": "value', '{"key": "value"}'),
|
||||
"Empty string": ('', ''),
|
||||
"Already valid": ('{"a": 1}', '{"a": 1}'),
|
||||
"Complex nested object": ('{"a": {"b": {"c": [1, 2, {"d": "e' , '{"a": {"b": {"c": [1, 2, {"d": "e"}]}}}')
|
||||
}
|
||||
|
||||
print("--- Testing auto_close_json ---")
|
||||
for name, (input_str, expected_str) in test_cases_auto_close.items():
|
||||
result = auto_close_json(input_str)
|
||||
print(f"Test: {name}")
|
||||
print(f" Input: '{input_str}'")
|
||||
print(f" Output: '{result}'")
|
||||
print(f" Expected: '{expected_str}'")
|
||||
assert result == expected_str, f"Failed: {name}"
|
||||
print(" Result: PASSED\n")
|
||||
|
||||
test_cases_safe_loads = {
|
||||
"Unterminated string": '{"title": "Test", "summary": "This is a test',
|
||||
"Markdown with unterminated JSON": '```json\n{"title": "Test", "summary": "This is a test\n```',
|
||||
"Missing closing brace": '{"title": "Test", "summary": "This is a test"}',
|
||||
"Valid JSON": '{"title": "Complete", "summary": "This is a complete JSON."}',
|
||||
"JSON with escaped quotes": '{"title": "Escaped", "summary": "This is a \\"test\\" with quotes."}',
|
||||
"Invalid JSON": 'this is not json',
|
||||
}
|
||||
|
||||
print("\n--- Testing safe_json_loads ---")
|
||||
for name, input_str in test_cases_safe_loads.items():
|
||||
result = safe_json_loads(input_str)
|
||||
print(f"Test: {name}")
|
||||
print(f" Input: '{input_str}'")
|
||||
print(f" Output: {result}")
|
||||
if name == "Invalid JSON":
|
||||
assert result is None, f"Failed: {name}"
|
||||
print(" Result: PASSED (Correctly returned None)\n")
|
||||
else:
|
||||
assert isinstance(result, dict), f"Failed: {name}"
|
||||
print(" Result: PASSED\n")
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_tests()
|
||||
print("All tests completed successfully!")
|
||||
Reference in New Issue
Block a user