diff --git a/test_tjnetwork.py b/test_tjnetwork.py index 1628e2d..2ab4ad0 100644 --- a/test_tjnetwork.py +++ b/test_tjnetwork.py @@ -1,4 +1,5 @@ import pytest +import random from tjnetwork import * class TestApi: @@ -242,6 +243,221 @@ class TestApi: self.leave(p) + def test_delete_nodes_then_restore(self): + p = 'test_delete_nodes_then_restore' + read_inp(p, f'./inp/net3.inp', '2') + + open_project(p) + + nls : list[tuple[str, str]] = [] + + nodes = get_nodes(p) + for node in nodes: + nls.append(('node', node)) + + links = get_links(p) + + for _ in range(100): + random.shuffle(nls) + for nl in nls: + if nl[0] == 'node': + node = nl[1] + if is_junction(p, node): + delete_junction(p, ChangeSet({'id': node})) + if is_reservoir(p, node): + delete_reservoir(p, ChangeSet({'id': node})) + if is_tank(p, node): + delete_tank(p, ChangeSet({'id': node})) + else: + link = nl[1] + if is_pipe(p, link): + delete_pipe(p, ChangeSet({'id': link})) + if is_pump(p, link): + delete_pump(p, ChangeSet({'id': link})) + if is_valve(p, link): + delete_valve(p, ChangeSet({'id': link})) + + for node in nodes: + assert is_node(p, node) == False + for link in links: + assert is_link(p, link) == False + + assert get_nodes(p) == [] + assert get_links(p) == [] + + op = get_restore_operation(p) + pick_operation(p, op) + + for node in nodes: + assert is_node(p, node) + for link in links: + assert is_link(p, link) + + self.leave(p) + + + def test_delete_links_then_restore(self): + p = 'test_delete_links_then_restore' + read_inp(p, f'./inp/net3.inp', '2') + + open_project(p) + + nls : list[tuple[str, str]] = [] + + nodes = get_nodes(p) + + links = get_links(p) + for link in links: + nls.append(('link', link)) + + for _ in range(100): + random.shuffle(nls) + for nl in nls: + if nl[0] == 'node': + node = nl[1] + if is_junction(p, node): + delete_junction(p, ChangeSet({'id': node})) + if is_reservoir(p, node): + delete_reservoir(p, ChangeSet({'id': node})) + if is_tank(p, node): + delete_tank(p, ChangeSet({'id': node})) + else: + link = nl[1] + if is_pipe(p, link): + delete_pipe(p, ChangeSet({'id': link})) + if is_pump(p, link): + delete_pump(p, ChangeSet({'id': link})) + if is_valve(p, link): + delete_valve(p, ChangeSet({'id': link})) + + for node in nodes: + assert is_node(p, node) + for link in links: + assert is_link(p, link) == False + + assert get_links(p) == [] + + op = get_restore_operation(p) + pick_operation(p, op) + + for node in nodes: + assert is_node(p, node) + for link in links: + assert is_link(p, link) + + self.leave(p) + + + def test_delete_nodes_links_then_restore_v2(self): + p = 'test_delete_nodes_links_then_restore_v2' + read_inp(p, f'./inp/net3.inp', '2') + + open_project(p) + + nls : list[tuple[str, str]] = [] + + nodes = get_nodes(p) + for node in nodes: + nls.append(('node', node)) + + links = get_links(p) + for link in links: + nls.append(('link', link)) + + for _ in range(100): + random.shuffle(nls) + for nl in nls: + if nl[0] == 'node': + node = nl[1] + if is_junction(p, node): + delete_junction(p, ChangeSet({'id': node})) + if is_reservoir(p, node): + delete_reservoir(p, ChangeSet({'id': node})) + if is_tank(p, node): + delete_tank(p, ChangeSet({'id': node})) + else: + link = nl[1] + if is_pipe(p, link): + delete_pipe(p, ChangeSet({'id': link})) + if is_pump(p, link): + delete_pump(p, ChangeSet({'id': link})) + if is_valve(p, link): + delete_valve(p, ChangeSet({'id': link})) + + for node in nodes: + assert is_node(p, node) == False + for link in links: + assert is_link(p, link) == False + + assert get_nodes(p) == [] + assert get_links(p) == [] + + op = get_restore_operation(p) + pick_operation(p, op) + + for node in nodes: + assert is_node(p, node) + for link in links: + assert is_link(p, link) + + self.leave(p) + + + def test_delete_nodes_links_then_restore_v3(self): + p = 'test_delete_nodes_links_then_restore_v3' + read_inp(p, f'./inp/net3.inp', '3') + + open_project(p) + + nls : list[tuple[str, str]] = [] + + nodes = get_nodes(p) + for node in nodes: + nls.append(('node', node)) + + links = get_links(p) + for link in links: + nls.append(('link', link)) + + for _ in range(100): + random.shuffle(nls) + for nl in nls: + if nl[0] == 'node': + node = nl[1] + if is_junction(p, node): + delete_junction(p, ChangeSet({'id': node})) + if is_reservoir(p, node): + delete_reservoir(p, ChangeSet({'id': node})) + if is_tank(p, node): + delete_tank(p, ChangeSet({'id': node})) + else: + link = nl[1] + if is_pipe(p, link): + delete_pipe(p, ChangeSet({'id': link})) + if is_pump(p, link): + delete_pump(p, ChangeSet({'id': link})) + if is_valve(p, link): + delete_valve(p, ChangeSet({'id': link})) + + for node in nodes: + assert is_node(p, node) == False + for link in links: + assert is_link(p, link) == False + + assert get_nodes(p) == [] + assert get_links(p) == [] + + op = get_restore_operation(p) + pick_operation(p, op) + + for node in nodes: + assert is_node(p, node) + for link in links: + assert is_link(p, link) + + self.leave(p) + + # 1 title