test_state.py 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # coding: utf-8
  2. import pytest
  3. from synergine2.config import Config
  4. from opencombat.exception import StateLoadError
  5. from opencombat.state import StateLoaderBuilder, StateLoader
  6. class MyStateLoader(StateLoader):
  7. pass
  8. @pytest.fixture
  9. def state_loader(config, simulation):
  10. return StateLoader(config, simulation)
  11. def test_state_loader_builder__ok__nominal_case(
  12. simulation,
  13. ):
  14. config = Config({
  15. 'global': {
  16. 'state_loader': 'tests.test_state.MyStateLoader',
  17. }
  18. })
  19. builder = StateLoaderBuilder(config, simulation)
  20. state_loader = builder.get_state_loader()
  21. assert type(state_loader) == MyStateLoader
  22. def test_state_loader__ok__load_state(
  23. state_loader,
  24. ):
  25. assert state_loader.get_state('tests/fixtures/state_ok.xml')
  26. def test_state_loader__error__state_empty(
  27. state_loader,
  28. ):
  29. with pytest.raises(StateLoadError):
  30. assert state_loader.get_state('tests/fixtures/state_empty.xml')
  31. def test_state_loader__error__state_invalid(
  32. state_loader,
  33. ):
  34. with pytest.raises(StateLoadError):
  35. assert state_loader.get_state(
  36. 'tests/fixtures/state_error_schema.xml',
  37. )
  38. def test_state__ok__subjects(
  39. state_loader,
  40. ):
  41. state = state_loader.get_state('tests/fixtures/state_ok.xml')
  42. assert 2 == len(state.subjects)