|
@@ -8,7 +8,6 @@
|
|
|
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
|
|
|
# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
|
# specific language governing permissions and limitations under the License.
|
|
|
-
|
|
|
from datetime import datetime, timedelta
|
|
|
from unittest import mock
|
|
|
|
|
@@ -23,7 +22,7 @@ from taipy.core.cycle.cycle import Cycle, CycleId
|
|
|
from taipy.core.data._data_manager_factory import _DataManagerFactory
|
|
|
from taipy.core.data.in_memory import DataNode, InMemoryDataNode
|
|
|
from taipy.core.data.pickle import PickleDataNode
|
|
|
-from taipy.core.exceptions.exceptions import SequenceTaskDoesNotExistInScenario
|
|
|
+from taipy.core.exceptions.exceptions import SequenceAlreadyExists, SequenceTaskDoesNotExistInScenario
|
|
|
from taipy.core.scenario._scenario_manager_factory import _ScenarioManagerFactory
|
|
|
from taipy.core.scenario.scenario import Scenario
|
|
|
from taipy.core.scenario.scenario_id import ScenarioId
|
|
@@ -83,7 +82,7 @@ def test_create_scenario_with_task_and_additional_dn_and_sequence():
|
|
|
dn_2 = PickleDataNode("abc", Scope.SCENARIO)
|
|
|
task = Task("qux", {}, print, [dn_1])
|
|
|
|
|
|
- scenario = Scenario("quux", set([task]), {}, set([dn_2]), sequences={"acb": {"tasks": [task]}})
|
|
|
+ scenario = Scenario("quux", {task}, {}, {dn_2}, sequences={"acb": {"tasks": [task]}})
|
|
|
sequence = scenario.sequences["acb"]
|
|
|
assert scenario.id is not None
|
|
|
assert scenario.config_id == "quux"
|
|
@@ -101,7 +100,7 @@ def test_create_scenario_with_task_and_additional_dn_and_sequence():
|
|
|
|
|
|
def test_create_scenario_invalid_config_id():
|
|
|
with pytest.raises(InvalidConfigurationId):
|
|
|
- Scenario("foo bar", [], {})
|
|
|
+ Scenario("foo bar", set(), {})
|
|
|
|
|
|
|
|
|
def test_create_scenario_and_add_sequences():
|
|
@@ -123,7 +122,7 @@ def test_create_scenario_and_add_sequences():
|
|
|
task_manager._set(task_1)
|
|
|
task_manager._set(task_2)
|
|
|
|
|
|
- scenario = Scenario("scenario", set([task_1]), {})
|
|
|
+ scenario = Scenario("scenario", {task_1}, {})
|
|
|
scenario.sequences = {"sequence_1": {"tasks": [task_1]}, "sequence_2": {"tasks": []}}
|
|
|
assert scenario.id is not None
|
|
|
assert scenario.config_id == "scenario"
|
|
@@ -160,7 +159,7 @@ def test_create_scenario_overlapping_sequences():
|
|
|
task_manager._set(task_1)
|
|
|
task_manager._set(task_2)
|
|
|
|
|
|
- scenario = Scenario("scenario", set([task_1, task_2]), {})
|
|
|
+ scenario = Scenario("scenario", {task_1, task_2}, {})
|
|
|
scenario.add_sequence("sequence_1", [task_1])
|
|
|
scenario.add_sequence("sequence_2", [task_1, task_2])
|
|
|
assert scenario.id is not None
|
|
@@ -204,7 +203,7 @@ def test_create_scenario_one_additional_dn():
|
|
|
task_manager._set(task_1)
|
|
|
task_manager._set(task_2)
|
|
|
|
|
|
- scenario = Scenario("scenario", set(), {}, set([additional_dn_1]))
|
|
|
+ scenario = Scenario("scenario", set(), {}, {additional_dn_1})
|
|
|
assert scenario.id is not None
|
|
|
assert scenario.config_id == "scenario"
|
|
|
assert len(scenario.tasks) == 0
|
|
@@ -235,7 +234,7 @@ def test_create_scenario_wth_additional_dns():
|
|
|
task_manager._set(task_1)
|
|
|
task_manager._set(task_2)
|
|
|
|
|
|
- scenario = Scenario("scenario", set(), {}, set([additional_dn_1, additional_dn_2]))
|
|
|
+ scenario = Scenario("scenario", set(), {}, {additional_dn_1, additional_dn_2})
|
|
|
assert scenario.id is not None
|
|
|
assert scenario.config_id == "scenario"
|
|
|
assert len(scenario.tasks) == 0
|
|
@@ -251,7 +250,7 @@ def test_create_scenario_wth_additional_dns():
|
|
|
additional_dn_2.config_id: additional_dn_2,
|
|
|
}
|
|
|
|
|
|
- scenario_1 = Scenario("scenario_1", set([task_1]), {}, set([additional_dn_1]))
|
|
|
+ scenario_1 = Scenario("scenario_1", {task_1}, {}, {additional_dn_1})
|
|
|
assert scenario_1.id is not None
|
|
|
assert scenario_1.config_id == "scenario_1"
|
|
|
assert len(scenario_1.tasks) == 1
|
|
@@ -267,7 +266,7 @@ def test_create_scenario_wth_additional_dns():
|
|
|
additional_dn_1.config_id: additional_dn_1,
|
|
|
}
|
|
|
|
|
|
- scenario_2 = Scenario("scenario_2", set([task_1, task_2]), {}, set([additional_dn_1, additional_dn_2]))
|
|
|
+ scenario_2 = Scenario("scenario_2", {task_1, task_2}, {}, {additional_dn_1, additional_dn_2})
|
|
|
assert scenario_2.id is not None
|
|
|
assert scenario_2.config_id == "scenario_2"
|
|
|
assert len(scenario_2.tasks) == 2
|
|
@@ -293,7 +292,7 @@ def test_raise_sequence_tasks_not_in_scenario(data_node):
|
|
|
task_2 = Task("task_2", {}, print, input=[data_node])
|
|
|
|
|
|
with pytest.raises(SequenceTaskDoesNotExistInScenario) as err:
|
|
|
- Scenario("scenario", [], {}, sequences={"sequence": {"tasks": [task_1]}}, scenario_id="SCENARIO_scenario")
|
|
|
+ Scenario("scenario", set(), {}, sequences={"sequence": {"tasks": [task_1]}}, scenario_id="SCENARIO_scenario")
|
|
|
assert err.value.args == ([task_1.id], "sequence", "SCENARIO_scenario")
|
|
|
|
|
|
with pytest.raises(SequenceTaskDoesNotExistInScenario) as err:
|
|
@@ -306,7 +305,7 @@ def test_raise_sequence_tasks_not_in_scenario(data_node):
|
|
|
)
|
|
|
assert err.value.args == ([task_2.id], "sequence", "SCENARIO_scenario")
|
|
|
|
|
|
- Scenario("scenario", [task_1], {}, sequences={"sequence": {"tasks": [task_1]}})
|
|
|
+ Scenario("scenario", {task_1}, {}, sequences={"sequence": {"tasks": [task_1]}})
|
|
|
Scenario(
|
|
|
"scenario",
|
|
|
[task_1, task_2],
|
|
@@ -315,7 +314,7 @@ def test_raise_sequence_tasks_not_in_scenario(data_node):
|
|
|
)
|
|
|
|
|
|
|
|
|
-def test_raise_tasks_not_in_scenario_with_add_sequence_api(data_node):
|
|
|
+def test_adding_sequence_raises_tasks_not_in_scenario(data_node):
|
|
|
task_1 = Task("task_1", {}, print, output=[data_node])
|
|
|
task_2 = Task("task_2", {}, print, input=[data_node])
|
|
|
scenario = Scenario("scenario", [task_1], {})
|
|
@@ -345,8 +344,137 @@ def test_raise_tasks_not_in_scenario_with_add_sequence_api(data_node):
|
|
|
scenario.add_sequence("sequence_6", [task_1, task_2])
|
|
|
|
|
|
|
|
|
+def test_adding_existing_sequence_raises_exception(data_node):
|
|
|
+ task_1 = Task("task_1", {}, print, output=[data_node])
|
|
|
+ _TaskManagerFactory._build_manager()._set(task_1)
|
|
|
+ task_2 = Task("task_2", {}, print, input=[data_node])
|
|
|
+ _TaskManagerFactory._build_manager()._set(task_2)
|
|
|
+ scenario = Scenario("scenario", tasks={task_1, task_2}, properties={})
|
|
|
+ _ScenarioManagerFactory._build_manager()._set(scenario)
|
|
|
+
|
|
|
+ scenario.add_sequence("sequence_1", [task_1])
|
|
|
+ with pytest.raises(SequenceAlreadyExists):
|
|
|
+ scenario.add_sequence("sequence_1", [task_2])
|
|
|
+
|
|
|
+
|
|
|
+def test_renaming_existing_sequence_raises_exception(data_node):
|
|
|
+ task_1 = Task("task_1", {}, print, output=[data_node])
|
|
|
+ _TaskManagerFactory._build_manager()._set(task_1)
|
|
|
+ task_2 = Task("task_2", {}, print, input=[data_node])
|
|
|
+ _TaskManagerFactory._build_manager()._set(task_2)
|
|
|
+ scenario = Scenario("scenario", {task_1, task_2}, {})
|
|
|
+ _ScenarioManagerFactory._build_manager()._set(scenario)
|
|
|
+
|
|
|
+ scenario.add_sequence("sequence_1", [task_1])
|
|
|
+ scenario.add_sequence("sequence_2", [task_2])
|
|
|
+ with pytest.raises(SequenceAlreadyExists):
|
|
|
+ scenario.rename_sequence("sequence_1", "sequence_2")
|
|
|
+
|
|
|
+
|
|
|
+def test_add_rename_and_remove_sequences():
|
|
|
+ data_node_1 = InMemoryDataNode("foo", Scope.SCENARIO, "s1")
|
|
|
+ data_node_2 = InMemoryDataNode("bar", Scope.SCENARIO, "s2")
|
|
|
+ data_node_3 = InMemoryDataNode("qux", Scope.SCENARIO, "s3")
|
|
|
+ data_node_4 = InMemoryDataNode("quux", Scope.SCENARIO, "s4")
|
|
|
+ data_node_5 = InMemoryDataNode("quuz", Scope.SCENARIO, "s5")
|
|
|
+ task_1 = Task("grault",{}, print,[data_node_1, data_node_2],[data_node_3], TaskId("t1"))
|
|
|
+ task_2 = Task("garply", {}, print, [data_node_3], id=TaskId("t2"))
|
|
|
+ task_3 = Task("waldo", {}, print, [data_node_3], None, id=TaskId("t3"))
|
|
|
+ task_4 = Task("fred", {}, print, [data_node_3], [data_node_4], TaskId("t4"))
|
|
|
+ task_5 = Task("bob", {}, print, [data_node_5], [data_node_3], TaskId("t5"))
|
|
|
+ scenario = Scenario("quest", {task_1, task_2, task_3, task_4, task_5}, {}, [], scenario_id=ScenarioId("s1"))
|
|
|
+
|
|
|
+ sequence_1 = Sequence({"name": "seq_1"}, [task_1], SequenceId(f"SEQUENCE_seq_1_{scenario.id}"))
|
|
|
+ sequence_2 = Sequence({"name": "seq_2"}, [task_1, task_2], SequenceId(f"SEQUENCE_seq_2_{scenario.id}"))
|
|
|
+ new_seq_2 = Sequence({"name": "seq_2"}, [task_1, task_2], SequenceId(f"SEQUENCE_new_seq_2_{scenario.id}"))
|
|
|
+ sequence_3 = Sequence({"name": "seq_3"}, [task_1, task_5, task_3], SequenceId(f"SEQUENCE_seq_3_{scenario.id}"))
|
|
|
+
|
|
|
+ task_manager = _TaskManagerFactory._build_manager()
|
|
|
+ data_manager = _DataManagerFactory._build_manager()
|
|
|
+ scenario_manager = _ScenarioManagerFactory._build_manager()
|
|
|
+ for dn in [data_node_1, data_node_2, data_node_3, data_node_4, data_node_5]:
|
|
|
+ data_manager._set(dn)
|
|
|
+ for t in [task_1, task_2, task_3, task_4, task_5]:
|
|
|
+ task_manager._set(t)
|
|
|
+ scenario_manager._set(scenario)
|
|
|
+
|
|
|
+ assert scenario.get_inputs() == {data_node_1, data_node_2, data_node_5}
|
|
|
+ assert scenario._get_set_of_tasks() == {task_1, task_2, task_3, task_4, task_5}
|
|
|
+ assert len(scenario.sequences) == 0
|
|
|
+
|
|
|
+ scenario.sequences = {"seq_1": {"tasks": [task_1]}}
|
|
|
+ assert scenario.sequences == {"seq_1": sequence_1}
|
|
|
+
|
|
|
+ scenario.add_sequences({"seq_2": [task_1, task_2]})
|
|
|
+ assert scenario.sequences == {"seq_1": sequence_1, "seq_2": sequence_2}
|
|
|
+
|
|
|
+ scenario.remove_sequences(["seq_1"])
|
|
|
+ assert scenario.sequences == {"seq_2": sequence_2}
|
|
|
+
|
|
|
+ scenario.add_sequences({"seq_1": [task_1], "seq 3": [task_1, task_5, task_3]})
|
|
|
+ assert scenario.sequences == {"seq_2": sequence_2, "seq_1": sequence_1, "seq 3": sequence_3}
|
|
|
+
|
|
|
+ scenario.remove_sequences(["seq_2", "seq 3"])
|
|
|
+ assert scenario.sequences == {"seq_1": sequence_1}
|
|
|
+
|
|
|
+ scenario.add_sequence("seq_2", [task_1, task_2])
|
|
|
+ assert scenario.sequences == {"seq_1": sequence_1, "seq_2": sequence_2}
|
|
|
+
|
|
|
+ scenario.add_sequence("seq 3", [task_1.id, task_5.id, task_3.id])
|
|
|
+ assert scenario.sequences == {"seq_1": sequence_1, "seq_2": sequence_2, "seq 3": sequence_3}
|
|
|
+
|
|
|
+ scenario.remove_sequence("seq_1")
|
|
|
+ assert scenario.sequences == {"seq_2": sequence_2, "seq 3": sequence_3}
|
|
|
+
|
|
|
+ scenario.rename_sequence("seq_2", "new_seq_2")
|
|
|
+ assert scenario.sequences == {"new_seq_2": new_seq_2, "seq 3": sequence_3}
|
|
|
+
|
|
|
+
|
|
|
+def test_update_sequence(data_node):
|
|
|
+ task_1 = Task("foo",{}, print,[data_node],[], TaskId("t1"))
|
|
|
+ task_2 = Task("bar", {}, print, [], [data_node], id=TaskId("t2"))
|
|
|
+ scenario = Scenario("baz", {task_1, task_2}, {})
|
|
|
+ scenario.add_sequence("seq_1", [task_1])
|
|
|
+
|
|
|
+ assert len(scenario.sequences) == 1
|
|
|
+ assert scenario.sequences["seq_1"].tasks == {"foo": task_1}
|
|
|
+ assert scenario.sequences["seq_1"].name == "seq_1"
|
|
|
+ scenario.update_sequence("seq_1", [task_2], {"new_key": "new_value"}, [])
|
|
|
+ assert len(scenario.sequences) == 1
|
|
|
+ assert scenario.sequences["seq_1"].tasks == {"bar": task_2}
|
|
|
+ assert scenario.sequences["seq_1"].name == "seq_1"
|
|
|
+ assert scenario.sequences["seq_1"].properties["new_key"] == "new_value"
|
|
|
+
|
|
|
+
|
|
|
+def test_add_rename_and_remove_sequences_within_context(data_node):
|
|
|
+ task_1 = Task("task_1", {}, print, output=[data_node])
|
|
|
+ task_2 = Task("task_2", {}, print, input=[data_node])
|
|
|
+ _TaskManagerFactory._build_manager()._set(task_1)
|
|
|
+ scenario = Scenario(config_id="scenario", tasks={task_1, task_2}, properties={})
|
|
|
+ _ScenarioManagerFactory._build_manager()._set(scenario)
|
|
|
+
|
|
|
+ with scenario as sc:
|
|
|
+ sc.add_sequence("seq_name", [task_1])
|
|
|
+ assert len(scenario.sequences) == 1
|
|
|
+ assert scenario.sequences["seq_name"].tasks == {"task_1": task_1}
|
|
|
+
|
|
|
+ with scenario as sc:
|
|
|
+ sc.update_sequence("seq_name", [task_2])
|
|
|
+ assert len(scenario.sequences) == 1
|
|
|
+ assert scenario.sequences["seq_name"].tasks == {"task_2": task_2}
|
|
|
+
|
|
|
+ with scenario as sc:
|
|
|
+ sc.rename_sequence("seq_name", "seq name")
|
|
|
+ assert scenario.sequences["seq name"].tasks == {"task_2": task_2}
|
|
|
+
|
|
|
+ with scenario as sc:
|
|
|
+ sc.remove_sequence("seq name")
|
|
|
+ assert len(scenario.sequences) == 0
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
def test_add_property_to_scenario():
|
|
|
- scenario = Scenario("foo", [], {"key": "value"})
|
|
|
+ scenario = Scenario("foo", set(), {"key": "value"})
|
|
|
assert scenario.properties == {"key": "value"}
|
|
|
assert scenario.key == "value"
|
|
|
|
|
@@ -358,7 +486,7 @@ def test_add_property_to_scenario():
|
|
|
|
|
|
|
|
|
def test_add_cycle_to_scenario(cycle):
|
|
|
- scenario = Scenario("foo", [], {})
|
|
|
+ scenario = Scenario("foo", set(), {})
|
|
|
assert scenario.cycle is None
|
|
|
_CycleManagerFactory._build_manager()._set(cycle)
|
|
|
scenario.cycle = cycle
|
|
@@ -367,7 +495,7 @@ def test_add_cycle_to_scenario(cycle):
|
|
|
|
|
|
|
|
|
def test_add_and_remove_subscriber():
|
|
|
- scenario = Scenario("foo", [], {})
|
|
|
+ scenario = Scenario("foo", set(), {})
|
|
|
|
|
|
scenario._add_subscriber(print)
|
|
|
assert len(scenario.subscribers) == 1
|
|
@@ -377,7 +505,7 @@ def test_add_and_remove_subscriber():
|
|
|
|
|
|
|
|
|
def test_add_and_remove_tag():
|
|
|
- scenario = Scenario("foo", [], {})
|
|
|
+ scenario = Scenario("foo", set(), {})
|
|
|
|
|
|
assert len(scenario.tags) == 0
|
|
|
scenario._add_tag("tag")
|
|
@@ -705,42 +833,42 @@ def test_auto_set_and_reload_properties():
|
|
|
|
|
|
def test_is_deletable():
|
|
|
with mock.patch("taipy.core.scenario._scenario_manager._ScenarioManager._is_deletable") as mock_submit:
|
|
|
- scenario = Scenario("foo", [], {})
|
|
|
+ scenario = Scenario("foo", set(), {})
|
|
|
scenario.is_deletable()
|
|
|
mock_submit.assert_called_once_with(scenario)
|
|
|
|
|
|
|
|
|
def test_submit_scenario():
|
|
|
with mock.patch("taipy.core.scenario._scenario_manager._ScenarioManager._submit") as mock_submit:
|
|
|
- scenario = Scenario("foo", [], {})
|
|
|
+ scenario = Scenario("foo", set(), {})
|
|
|
scenario.submit(force=False)
|
|
|
mock_submit.assert_called_once_with(scenario, None, False, False, None)
|
|
|
|
|
|
|
|
|
def test_subscribe_scenario():
|
|
|
with mock.patch("taipy.core.subscribe_scenario") as mock_subscribe:
|
|
|
- scenario = Scenario("foo", [], {})
|
|
|
+ scenario = Scenario("foo", set(), {})
|
|
|
scenario.subscribe(None)
|
|
|
mock_subscribe.assert_called_once_with(None, None, scenario)
|
|
|
|
|
|
|
|
|
def test_unsubscribe_scenario():
|
|
|
with mock.patch("taipy.core.unsubscribe_scenario") as mock_unsubscribe:
|
|
|
- scenario = Scenario("foo", [], {})
|
|
|
+ scenario = Scenario("foo", set(), {})
|
|
|
scenario.unsubscribe(None)
|
|
|
mock_unsubscribe.assert_called_once_with(None, None, scenario)
|
|
|
|
|
|
|
|
|
def test_add_tag_scenario():
|
|
|
with mock.patch("taipy.core.tag") as mock_add_tag:
|
|
|
- scenario = Scenario("foo", [], {})
|
|
|
+ scenario = Scenario("foo", set(), {})
|
|
|
scenario.add_tag("tag")
|
|
|
mock_add_tag.assert_called_once_with(scenario, "tag")
|
|
|
|
|
|
|
|
|
def test_remove_tag_scenario():
|
|
|
with mock.patch("taipy.core.untag") as mock_remove_tag:
|
|
|
- scenario = Scenario("foo", [], {})
|
|
|
+ scenario = Scenario("foo", set(), {})
|
|
|
scenario.remove_tag("tag")
|
|
|
mock_remove_tag.assert_called_once_with(scenario, "tag")
|
|
|
|
|
@@ -1227,65 +1355,6 @@ def test_get_sorted_tasks():
|
|
|
_assert_equal(scenario_8._get_sorted_tasks(), [[task_5, task_2, task_1], [task_3, task_4]])
|
|
|
|
|
|
|
|
|
-def test_add_and_remove_sequences():
|
|
|
- data_node_1 = InMemoryDataNode("foo", Scope.SCENARIO, "s1")
|
|
|
- data_node_2 = InMemoryDataNode("bar", Scope.SCENARIO, "s2")
|
|
|
- data_node_3 = InMemoryDataNode("qux", Scope.SCENARIO, "s3")
|
|
|
- data_node_4 = InMemoryDataNode("quux", Scope.SCENARIO, "s4")
|
|
|
- data_node_5 = InMemoryDataNode("quuz", Scope.SCENARIO, "s5")
|
|
|
- task_1 = Task(
|
|
|
- "grault",
|
|
|
- {},
|
|
|
- print,
|
|
|
- [data_node_1, data_node_2],
|
|
|
- [data_node_3],
|
|
|
- TaskId("t1"),
|
|
|
- )
|
|
|
- task_2 = Task("garply", {}, print, [data_node_3], id=TaskId("t2"))
|
|
|
- task_3 = Task("waldo", {}, print, [data_node_3], None, id=TaskId("t3"))
|
|
|
- task_4 = Task("fred", {}, print, [data_node_3], [data_node_4], TaskId("t4"))
|
|
|
- task_5 = Task("bob", {}, print, [data_node_5], [data_node_3], TaskId("t5"))
|
|
|
- scenario_1 = Scenario("quest", [task_1, task_2, task_3, task_4, task_5], {}, [], scenario_id=ScenarioId("s1"))
|
|
|
-
|
|
|
- sequence_1 = Sequence({"name": "sequence_1"}, [task_1], SequenceId(f"SEQUENCE_sequence_1_{scenario_1.id}"))
|
|
|
- sequence_2 = Sequence({"name": "sequence_2"}, [task_1, task_2], SequenceId(f"SEQUENCE_sequence_2_{scenario_1.id}"))
|
|
|
- sequence_3 = Sequence(
|
|
|
- {"name": "sequence_3"}, [task_1, task_5, task_3], SequenceId(f"SEQUENCE_sequence_3_{scenario_1.id}")
|
|
|
- )
|
|
|
-
|
|
|
- task_manager = _TaskManagerFactory._build_manager()
|
|
|
- data_manager = _DataManagerFactory._build_manager()
|
|
|
- scenario_manager = _ScenarioManagerFactory._build_manager()
|
|
|
- for dn in [data_node_1, data_node_2, data_node_3, data_node_4, data_node_5]:
|
|
|
- data_manager._set(dn)
|
|
|
- for t in [task_1, task_2, task_3, task_4, task_5]:
|
|
|
- task_manager._set(t)
|
|
|
- scenario_manager._set(scenario_1)
|
|
|
-
|
|
|
- assert scenario_1.get_inputs() == {data_node_1, data_node_2, data_node_5}
|
|
|
- assert scenario_1._get_set_of_tasks() == {task_1, task_2, task_3, task_4, task_5}
|
|
|
- assert len(scenario_1.sequences) == 0
|
|
|
-
|
|
|
- scenario_1.sequences = {"sequence_1": {"tasks": [task_1]}}
|
|
|
- assert scenario_1.sequences == {"sequence_1": sequence_1}
|
|
|
-
|
|
|
- scenario_1.add_sequences({"sequence_2": [task_1, task_2]})
|
|
|
- assert scenario_1.sequences == {"sequence_1": sequence_1, "sequence_2": sequence_2}
|
|
|
-
|
|
|
- scenario_1.remove_sequences(["sequence_1"])
|
|
|
- assert scenario_1.sequences == {"sequence_2": sequence_2}
|
|
|
-
|
|
|
- scenario_1.add_sequences({"sequence_1": [task_1], "sequence_3": [task_1, task_5, task_3]})
|
|
|
- assert scenario_1.sequences == {
|
|
|
- "sequence_2": sequence_2,
|
|
|
- "sequence_1": sequence_1,
|
|
|
- "sequence_3": sequence_3,
|
|
|
- }
|
|
|
-
|
|
|
- scenario_1.remove_sequences(["sequence_2", "sequence_3"])
|
|
|
- assert scenario_1.sequences == {"sequence_1": sequence_1}
|
|
|
-
|
|
|
-
|
|
|
def test_check_consistency():
|
|
|
data_node_1 = InMemoryDataNode("foo", Scope.SCENARIO, "s1")
|
|
|
data_node_2 = InMemoryDataNode("bar", Scope.SCENARIO, "s2")
|