from tjnetwork import * def demo_snapshot(): p = "demo_snapshot" print(p) if is_project_open(p): close_project(p) if have_project(p): delete_project(p) create_project(p) open_project(p) add_junction(p, 'j-1', 10.0, 20.0, 30.0) add_junction(p, 'j-2', 10.0, 20.0, 30.0) add_junction(p, 'j-3', 10.0, 20.0, 30.0) add_junction(p, 'j-4', 10.0, 20.0, 30.0) take_snapshot(p, "1-2-3-4") undo(p) undo(p) undo(p) undo(p) add_junction(p, 'j-5', 10.0, 20.0, 30.0) add_junction(p, 'j-6', 10.0, 20.0, 30.0) add_junction(p, 'j-7', 10.0, 20.0, 30.0) add_junction(p, 'j-8', 10.0, 20.0, 30.0) take_snapshot(p, "5-6-7-8") print("before checkout, it should be 5, 6, 7, 8") print(get_nodes(p)) pick_snapshot(p, "1-2-3-4") print("after checkout, it should be 1, 2, 3, 4") print(get_nodes(p)) close_project(p) delete_project(p) def demo_transaction(): p = "demo_transaction" print(p) if is_project_open(p): close_project(p) if have_project(p): delete_project(p) create_project(p) open_project(p) add_junction(p, 'j-1', 10.0, 20.0, 30.0) take_snapshot(p, "1") add_junction(p, 'j-2', 10.0, 20.0, 30.0) take_snapshot(p, "2") start_transaction(p) add_junction(p, 'j-3', 10.0, 20.0, 30.0) take_snapshot(p, "3") add_junction(p, 'j-4', 10.0, 20.0, 30.0) take_snapshot(p, "4") print("before rollback, it should be 1, 2, 3, 4") print(get_nodes(p)) print("after rollback, it should be 1, 2") abort_transaction(p) print(get_nodes(p)) print(f"have snapshot 1: {have_snapshot(p, '1')}") print(f"have snapshot 2: {have_snapshot(p, '2')}") print(f"have snapshot 3: {have_snapshot(p, '3')}") print(f"have snapshot 4: {have_snapshot(p, '4')}") close_project(p) delete_project(p) def demo_1_title(): p = "demo_1_title" print(p) if is_project_open(p): close_project(p) if have_project(p): delete_project(p) create_project(p) open_project(p) print(get_title(p)) # set_title(p, "title") print(get_title(p)) # title set_title(p, "test") print(get_title(p)) # test undo(p) print(get_title(p)) # title undo(p) print(get_title(p)) # close_project(p) delete_project(p) def demo_2_junctions(): p = "demo_2_junctions" print(p) if is_project_open(p): close_project(p) if have_project(p): delete_project(p) create_project(p) open_project(p) j = 'j-1' print(get_junction_coord(p, j)) # None print(get_junction_elevation(p, j)) # None print(get_junction_demand(p, j)) # None print(get_junction_pattern(p, j)) # None add_junction(p, j, 10.0, 20.0, 30.0) print(get_junction_coord(p, j)) # {'x': 10.0, 'y': 20.0} print(get_junction_elevation(p, j)) # 30.0 print(get_junction_demand(p, j)) # NULL print(get_junction_pattern(p, j)) # NULL set_junction_demand(p, j, 100.0) print(get_junction_demand(p, j)) # 100.0 undo(p) print(get_junction_demand(p, j)) # NULL undo(p) print(get_junction_coord(p, j)) # None print(get_junction_elevation(p, j)) # None print(get_junction_demand(p, j)) # None print(get_junction_pattern(p, j)) # None add_junction(p, j, 10.0, 20.0, 30.0) print(get_junction_coord(p, j)) # {'x': 10.0, 'y': 20.0} print(get_junction_elevation(p, j)) # 30.0 print(get_junction_demand(p, j)) # NULL print(get_junction_pattern(p, j)) # NULL set_junction_coord(p, j, 100.0, 200.0) print(get_junction_coord(p, j)) # {'x': 100.0, 'y': 200.0} undo(p) print(get_junction_coord(p, j)) # {'x': 10.0, 'y': 20.0} redo(p) print(get_junction_coord(p, j)) # {'x': 100.0, 'y': 200.0} close_project(p) delete_project(p) if __name__ == "__main__": demo_snapshot() demo_transaction() demo_1_title() demo_2_junctions() pass