You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.6 KiB

  1. import stormpy
  2. import stormpy.logic
  3. from stormpy.storage import BitVector
  4. from stormpy.utility import ShortestPathsGenerator
  5. from helpers.helper import get_example_path
  6. import pytest
  7. @pytest.fixture(scope="module")
  8. def model(program_path=get_example_path("dtmc", "die.pm"), raw_formula="P=? [ F \"one\" ]"):
  9. program = stormpy.parse_prism_program(program_path)
  10. formulas = stormpy.parse_formulas_for_prism_program(raw_formula, program)
  11. return stormpy.build_model(program, formulas[0])
  12. @pytest.fixture
  13. def state(model):
  14. some_state = 7
  15. assert model.nr_states > some_state, "test model too small"
  16. return some_state
  17. @pytest.fixture
  18. def state_list(model):
  19. some_state_list = [4, 5, 7]
  20. assert model.nr_states > max(some_state_list), "test model too small"
  21. return some_state_list
  22. @pytest.fixture
  23. def state_bitvector(model, state_list):
  24. return BitVector(length=model.nr_states, set_entries=state_list)
  25. @pytest.fixture
  26. def label(model):
  27. some_label = "one"
  28. assert some_label in model.labels, "test model does not contain label '" + some_label + "'"
  29. return some_label
  30. class TestShortestPaths:
  31. def test_spg_ctor_bitvector_target(self, model, state_bitvector):
  32. _ = ShortestPathsGenerator(model, state_bitvector)
  33. def test_spg_ctor_single_state_target(self, model, state):
  34. _ = ShortestPathsGenerator(model, state)
  35. def test_spg_ctor_state_list_target(self, model, state_list):
  36. _ = ShortestPathsGenerator(model, state_list)
  37. def test_spg_ctor_label_target(self, model, label):
  38. _ = ShortestPathsGenerator(model, label)
  39. # TODO: add tests that check actual functionality