Geo-Lab / tests /test_script_engine.py
HANSOL
Geo-Lab v4.1 - Clean deployment
2afa69c
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)