1
0
mirror of https://github.com/gsi-upm/soil synced 2024-09-20 15:31:43 +00:00
soil/tests/test_examples.py

54 lines
1.5 KiB
Python
Raw Normal View History

2018-12-04 08:54:29 +00:00
from unittest import TestCase
import os
from os.path import join
from soil import utils, simulation
ROOT = os.path.abspath(os.path.dirname(__file__))
EXAMPLES = join(ROOT, '..', 'examples')
2019-02-19 20:17:19 +00:00
FORCE_TESTS = os.environ.get('FORCE_TESTS', '')
2018-12-04 08:54:29 +00:00
class TestExamples(TestCase):
pass
def make_example_test(path, config):
def wrapped(self):
root = os.getcwd()
os.chdir(os.path.dirname(path))
s = simulation.from_config(config)
2018-12-08 19:49:34 +00:00
iterations = s.max_time * s.num_trials
if iterations > 1000:
2019-02-19 20:17:19 +00:00
s.max_time = 100
s.num_trials = 1
if config.get('skip_test', False) and not FORCE_TESTS:
self.skipTest('Example ignored.')
2018-12-04 08:54:29 +00:00
envs = s.run_simulation(dry_run=True)
assert envs
for env in envs:
assert env
try:
n = config['network_params']['n']
assert len(list(env.network_agents)) == n
assert env.now > 2 # It has run
assert env.now <= config['max_time'] # But not further than allowed
except KeyError:
pass
os.chdir(root)
return wrapped
def add_example_tests():
for config, path in utils.load_config(join(EXAMPLES, '**', '*.yml')):
p = make_example_test(path=path, config=config)
fname = os.path.basename(path)
p.__name__ = 'test_example_file_%s' % fname
p.__doc__ = '%s should be a valid configuration' % fname
setattr(TestExamples, p.__name__, p)
del p
add_example_tests()