|
|
| import sys |
| import os |
| import unittest |
| import numpy as np |
|
|
| |
| 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 = """ |
| 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 = """ |
| 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 = """ |
| 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): |
| |
| 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__': |
| |
| 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) |
|
|