This commit is contained in:
DingZQ
2023-06-08 21:34:23 +08:00
4 changed files with 123 additions and 60 deletions

View File

@@ -51,6 +51,9 @@ def inp_out_option(name: str) -> list[str]:
objs = read_all(name, f"select * from options") objs = read_all(name, f"select * from options")
for obj in objs: for obj in objs:
key = obj['key'] key = obj['key']
# release version does not support new keys and has error message
if key == 'HTOL' or key == 'QTOL' or key == 'RQTOL':
continue
value = obj['value'] value = obj['value']
if str(value).strip() != '': if str(value).strip() != '':
lines.append(f'{key} {value}') lines.append(f'{key} {value}')

View File

@@ -164,6 +164,9 @@ def calculate_boundary(name: str, nodes: list[str]) -> list[tuple[float, float]]
# work into a branch, return # work into a branch, return
if len(sorted_links) == 0: if len(sorted_links) == 0:
cursor = paths[-2] cursor = paths[-2]
if cursor == topology.max_x_node():
paths.append(cursor)
break
in_angle = in_angle = _angle_of_node_link(cursor, overlapped_link, t_nodes, t_links) in_angle = in_angle = _angle_of_node_link(cursor, overlapped_link, t_nodes, t_links)
continue continue

View File

@@ -41,7 +41,7 @@ def generate_sub_district_metering_area(name: str, dma: str, part_count: int = 1
for nodes in calculate_district_metering_area_for_region(name, dma, part_count, part_type): for nodes in calculate_district_metering_area_for_region(name, dma, part_count, part_type):
boundary = calculate_boundary(name, nodes) boundary = calculate_boundary(name, nodes)
boundary = inflate_boundary(name, boundary, inflate_delta) boundary = inflate_boundary(name, boundary, inflate_delta)
cs.add({ 'type': 'district_metering_area', 'id': f"DMA_{level}_{i}", 'boundary': boundary, 'parent': dma, 'nodes': nodes }) cs.add({ 'type': 'district_metering_area', 'id': f"DMA_[{dma}]_{level}_{i}", 'boundary': boundary, 'parent': dma, 'nodes': nodes })
i += 1 i += 1
return execute_batch_command(name, cs) return execute_batch_command(name, cs)

View File

@@ -6097,24 +6097,81 @@ class TestApi:
cs = generate_district_metering_area(p, 3).operations cs = generate_district_metering_area(p, 3).operations
assert len(cs) == 3 assert len(cs) == 3
assert cs[0]['operation'] == API_ADD
assert cs[0]['type'] == 'district_metering_area'
assert cs[0]['id'] == 'DMA_1_1'
assert cs[1]['operation'] == API_ADD
assert cs[1]['type'] == 'district_metering_area'
assert cs[1]['id'] == 'DMA_1_2'
assert cs[2]['operation'] == API_ADD
assert cs[2]['type'] == 'district_metering_area'
assert cs[2]['id'] == 'DMA_1_3'
dmas = get_all_district_metering_area_ids(p) dmas = get_all_district_metering_area_ids(p)
assert len(dmas) == 3 assert len(dmas) == 3
assert dmas[0] == 'DMA_1_1'
assert dmas[1] == 'DMA_1_2'
assert dmas[2] == 'DMA_1_3'
cs = generate_district_metering_area(p, 3).operations cs = generate_district_metering_area(p, 3).operations
assert len(cs) == 6 assert len(cs) == 6
assert cs[0]['operation'] == API_DELETE
assert cs[0]['type'] == 'district_metering_area'
assert cs[0]['id'] == 'DMA_1_1'
assert cs[1]['operation'] == API_DELETE
assert cs[1]['type'] == 'district_metering_area'
assert cs[1]['id'] == 'DMA_1_2'
assert cs[2]['operation'] == API_DELETE
assert cs[2]['type'] == 'district_metering_area'
assert cs[2]['id'] == 'DMA_1_3'
assert cs[3]['operation'] == API_ADD
assert cs[3]['type'] == 'district_metering_area'
assert cs[3]['id'] == 'DMA_1_1'
assert cs[4]['operation'] == API_ADD
assert cs[4]['type'] == 'district_metering_area'
assert cs[4]['id'] == 'DMA_1_2'
assert cs[5]['operation'] == API_ADD
assert cs[5]['type'] == 'district_metering_area'
assert cs[5]['id'] == 'DMA_1_3'
dmas = get_all_district_metering_area_ids(p) dmas = get_all_district_metering_area_ids(p)
assert len(dmas) == 3 assert len(dmas) == 3
assert dmas[0] == 'DMA_1_1'
assert dmas[1] == 'DMA_1_2'
assert dmas[2] == 'DMA_1_3'
cs = generate_sub_district_metering_area(p, 'DMA_1_1', 2).operations cs = generate_sub_district_metering_area(p, 'DMA_1_1', 2).operations
assert len(cs) == 2 assert len(cs) == 2
assert cs[0]['operation'] == API_ADD
assert cs[0]['type'] == 'district_metering_area'
assert cs[0]['id'] == 'DMA_[DMA_1_1]_2_1'
assert cs[1]['operation'] == API_ADD
assert cs[1]['type'] == 'district_metering_area'
assert cs[1]['id'] == 'DMA_[DMA_1_1]_2_2'
cs = generate_sub_district_metering_area(p, 'DMA_1_2', 3).operations
assert len(cs) == 2
assert cs[0]['operation'] == API_ADD
assert cs[0]['type'] == 'district_metering_area'
assert cs[0]['id'] == 'DMA_[DMA_1_2]_2_2'
assert cs[1]['operation'] == API_ADD
assert cs[1]['type'] == 'district_metering_area'
assert cs[1]['id'] == 'DMA_[DMA_1_2]_2_3'
cs = generate_sub_district_metering_area(p, 'DMA_1_3', 2).operations
assert len(cs) == 2
assert cs[0]['operation'] == API_ADD
assert cs[0]['type'] == 'district_metering_area'
assert cs[0]['id'] == 'DMA_[DMA_1_3]_2_1'
assert cs[1]['operation'] == API_ADD
assert cs[1]['type'] == 'district_metering_area'
assert cs[1]['id'] == 'DMA_[DMA_1_3]_2_2'
dmas = get_all_district_metering_area_ids(p) dmas = get_all_district_metering_area_ids(p)
assert len(dmas) == 5 assert len(dmas) == 9
cs = generate_district_metering_area(p, 3).operations cs = generate_district_metering_area(p, 3).operations
assert len(cs) == 8 assert len(cs) == 12
dmas = get_all_district_metering_area_ids(p) dmas = get_all_district_metering_area_ids(p)
assert len(dmas) == 3 assert len(dmas) == 3