diff options
Diffstat (limited to 'deluge/tests/test_common.py')
-rw-r--r-- | deluge/tests/test_common.py | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/deluge/tests/test_common.py b/deluge/tests/test_common.py index e5027ebca..a1af6cce9 100644 --- a/deluge/tests/test_common.py +++ b/deluge/tests/test_common.py @@ -7,6 +7,7 @@ import os import sys import tarfile +from urllib.parse import quote_plus import pytest @@ -19,6 +20,7 @@ from deluge.common import ( fsize, fspeed, ftime, + get_magnet_info, get_path_size, is_infohash, is_interface, @@ -28,6 +30,7 @@ from deluge.common import ( is_ipv6, is_magnet, is_url, + parse_human_size, windows_check, ) @@ -148,26 +151,26 @@ class TestCommon: assert VersionSplit('1.4.0.dev1') < VersionSplit('1.4.0') assert VersionSplit('1.4.0a1') < VersionSplit('1.4.0') - def test_parse_human_size(self): - from deluge.common import parse_human_size - - sizes = [ + @pytest.mark.parametrize( + ('human_size', 'expected'), + [ ('1', 1), ('10 bytes', 10), ('2048 bytes', 2048), ('1MiB', 2 ** (10 * 2)), ('1 MiB', 2 ** (10 * 2)), ('1 GiB', 2 ** (10 * 3)), - ('1 GiB', 2 ** (10 * 3)), + ('1 TiB', 2 ** (10 * 4)), ('1M', 10**6), + ('1p', 10**15), ('1MB', 10**6), ('1 GB', 10**9), ('1 TB', 10**12), - ] - - for human_size, byte_size in sizes: - parsed = parse_human_size(human_size) - assert parsed == byte_size, 'Mismatch when converting: %s' % human_size + ], + ) + def test_parse_human_size(self, human_size, expected): + parsed = parse_human_size(human_size) + assert parsed == expected, 'Mismatch when converting: %s' % human_size def test_archive_files(self): arc_filelist = [ @@ -209,3 +212,16 @@ class TestCommon: if tar_info.name == 'archive_message.txt': result = tar.extractfile(tar_info).read().decode() assert result == 'test' + + def test_get_magnet_info_tiers(self): + tracker1 = 'udp://tracker1.example.com' + tracker2 = 'udp://tracker2.example.com' + magnet = ( + 'magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN' + f'&tr.1={quote_plus(tracker1)}' + f'&tr.2={quote_plus(tracker2)}' + ) + result = get_magnet_info(magnet) + assert result['info_hash'] == '953bad769164e8482c7785a21d12166f94b9e14d' + assert result['trackers'][tracker1] == 1 + assert result['trackers'][tracker2] == 2 |