File size: 1,705 Bytes
2afa69c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
import sys
import os
import unittest
import numpy as np
# Add path
sys.path.insert(0, os.getcwd())
from engine.grid import WorldGrid
from engine.script_engine import ScriptExecutor
class TestScriptEngine(unittest.TestCase):
def setUp(self):
self.grid = WorldGrid(10, 10, 10.0)
self.engine = ScriptExecutor(self.grid)
def test_basic_arithmetic(self):
# Script that modifies bedrock
script = """
bedrock += 5.0
"""
success, msg = self.engine.execute(script)
self.assertTrue(success, msg)
self.assertEqual(self.grid.bedrock[0,0], 5.0, "Bedrock modification failed")
def test_numpy_usage(self):
# Script using numpy
script = """
bedrock[:] = np.ones((10,10)) * 10.0
"""
success, msg = self.engine.execute(script)
self.assertTrue(success, msg)
self.assertEqual(self.grid.bedrock[5,5], 10.0)
def test_security_check(self):
# Script with forbidden import
script = """
import os
os.system('echo hacked')
"""
with self.assertRaises(ValueError) as cm:
self.engine.execute(script)
self.assertIn("보안 경고", str(cm.exception))
def test_elevation_sync(self):
# Modifying bedrock should update elevation after execution
script = "bedrock += 2.0"
self.engine.execute(script)
self.assertEqual(self.grid.elevation[0,0], 2.0, "Elevation check failed (assuming sediment=0)")
if __name__ == '__main__':
# unittest.main()
import sys
with open('test_result.txt', 'w', encoding='utf-8') as f:
runner = unittest.TextTestRunner(stream=f, verbosity=2)
unittest.main(testRunner=runner, exit=False)
|