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.
62 lines
2.5 KiB
62 lines
2.5 KiB
import os
|
|
|
|
import stormpy
|
|
import stormpy.logic
|
|
from helpers.helper import get_example_path
|
|
|
|
from configurations import dft
|
|
|
|
|
|
@dft
|
|
class TestDftLoad:
|
|
def test_load_dft_galileo_file(self):
|
|
dft = stormpy.dft.load_dft_galileo_file(get_example_path("dft", "hecs.dft"))
|
|
assert dft.nr_elements() == 23
|
|
assert dft.nr_be() == 13
|
|
assert dft.nr_dynamic() == 2
|
|
assert not dft.can_have_nondeterminism()
|
|
|
|
def test_load_dft_json_file(self):
|
|
dft = stormpy.dft.load_dft_json_file(get_example_path("dft", "and.json"))
|
|
assert dft.nr_elements() == 3
|
|
assert dft.nr_be() == 2
|
|
assert dft.nr_dynamic() == 0
|
|
assert not dft.can_have_nondeterminism()
|
|
|
|
def test_load_dft_json_string(self):
|
|
# Build json string
|
|
json_node_a = '{"data": {"id":"0", "name":"A", "type":"be", "rate":"1", "dorm":"1", "label":"A (1)"}, "group":"nodes", "classes":"be"}'
|
|
json_node_b = '{"data": {"id":"1", "name":"B", "type":"be", "rate":"1", "dorm":"1", "label":"B (1)"}, "group":"nodes", "classes":"be"}'
|
|
json_node_c = '{"data": {"id":"6", "name":"Z", "type":"pand", "children":["0", "1"], "label":"Z"}, "group":"nodes", "classes":"pand"}'
|
|
json_string = '{"toplevel": "6", "parameters": {}, "nodes": [' + json_node_a + ',' + json_node_b + ',' + json_node_c + ']}'
|
|
# Load
|
|
dft = stormpy.dft.load_dft_json_string(json_string)
|
|
assert dft.nr_elements() == 3
|
|
assert dft.nr_be() == 2
|
|
assert dft.nr_dynamic() == 1
|
|
assert not dft.can_have_nondeterminism()
|
|
|
|
|
|
class TestDftExport:
|
|
def test_export_dft_json_string(self):
|
|
dft = stormpy.dft.load_dft_galileo_file(get_example_path("dft", "hecs.dft"))
|
|
assert dft.nr_elements() == 23
|
|
assert dft.nr_be() == 13
|
|
assert dft.nr_dynamic() == 2
|
|
json_string = stormpy.dft.export_dft_json_string(dft)
|
|
dft2 = stormpy.dft.load_dft_json_string(json_string)
|
|
assert dft2.nr_elements() == 23
|
|
assert dft2.nr_be() == 13
|
|
assert dft2.nr_dynamic() == 2
|
|
|
|
def test_export_dft_json_file(self, tmpdir):
|
|
dft = stormpy.dft.load_dft_galileo_file(get_example_path("dft", "hecs.dft"))
|
|
assert dft.nr_elements() == 23
|
|
assert dft.nr_be() == 13
|
|
assert dft.nr_dynamic() == 2
|
|
export_file = os.path.join(str(tmpdir), "hecs.json")
|
|
stormpy.dft.export_dft_json_file(dft, export_file)
|
|
dft2 = stormpy.dft.load_dft_json_file(export_file)
|
|
assert dft2.nr_elements() == 23
|
|
assert dft2.nr_be() == 13
|
|
assert dft2.nr_dynamic() == 2
|