From adc569af213fa6a95ff4ad6efcd1b66bd3980c0d Mon Sep 17 00:00:00 2001 From: Pavel Patsey Date: Thu, 23 Jan 2025 10:20:36 +0300 Subject: [PATCH] fix calc_dip --- tests/cidr4_merge/test_cidr4_merger.py | 7 +++++++ vpn_manager/cidr4_merge/cidr4_merger.py | 7 ++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/tests/cidr4_merge/test_cidr4_merger.py b/tests/cidr4_merge/test_cidr4_merger.py index 28acd42..319976b 100644 --- a/tests/cidr4_merge/test_cidr4_merger.py +++ b/tests/cidr4_merge/test_cidr4_merger.py @@ -88,6 +88,13 @@ def test_find_parent__with_exception(): def test_calc_dip(): + assert calc_dip(26, 26) == 0 + assert calc_dip(26, 27) == 67108864 + assert calc_dip(27, 26) == 67108864 + assert calc_dip(26, 28) == 201326592 + assert calc_dip(28, 26) == 201326592 + assert calc_dip(26, 29) == 469762048 + assert calc_dip(29, 26) == 469762048 diff --git a/vpn_manager/cidr4_merge/cidr4_merger.py b/vpn_manager/cidr4_merge/cidr4_merger.py index f92b9e2..a2d7802 100644 --- a/vpn_manager/cidr4_merge/cidr4_merger.py +++ b/vpn_manager/cidr4_merge/cidr4_merger.py @@ -44,9 +44,10 @@ def find_parent(a: Node, b: Node) -> Node: def calc_dip(mask_len_a: int, mask_len_b: int) -> int: dip = 0 - while mask_len_a < mask_len_b: - dip += 1 << mask_len_a - mask_len_a += 1 + len_min, len_max = sorted((mask_len_a, mask_len_b)) + while len_min < len_max: + dip += 1 << len_min + len_min += 1 return dip