blob: eb71125b27e0460257fddd079653bd63cd1a62e7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# -*- coding: utf-8 -*-
"""\
Test the Unicode numbers module.
"""
import unicodedata
import warnings
from natsort.unicode_numbers import (
decimal_chars,
decimals,
digit_chars,
digits,
digits_no_decimals,
numeric,
numeric_chars,
numeric_no_decimals,
)
from natsort.unicode_numeric_hex import numeric_hex
def test_numeric_chars_contains_only_valid_unicode_numeric_characters() -> None:
for a in numeric_chars:
assert unicodedata.numeric(a, None) is not None
def test_digit_chars_contains_only_valid_unicode_digit_characters() -> None:
for a in digit_chars:
assert unicodedata.digit(a, None) is not None
def test_decimal_chars_contains_only_valid_unicode_decimal_characters() -> None:
for a in decimal_chars:
assert unicodedata.decimal(a, None) is not None
def test_numeric_chars_contains_all_valid_unicode_numeric_and_digit_characters() -> None:
set_numeric_chars = set(numeric_chars)
set_digit_chars = set(digit_chars)
set_decimal_chars = set(decimal_chars)
assert set_decimal_chars.isdisjoint(digits_no_decimals)
assert set_digit_chars.issuperset(digits_no_decimals)
assert set_decimal_chars.isdisjoint(numeric_no_decimals)
assert set_numeric_chars.issuperset(numeric_no_decimals)
def test_missing_unicode_number_in_collection() -> None:
ok = True
set_numeric_hex = set(numeric_hex)
for i in range(0x110000):
try:
a = chr(i)
except ValueError:
break
if a in "0123456789":
continue
if unicodedata.numeric(a, None) is not None:
if i not in set_numeric_hex:
ok = False
if not ok:
warnings.warn(
"""\
Not all numeric unicode characters are represented in natsort/unicode_numeric_hex.py
This can be addressed by running dev/generate_new_unicode_numbers.py with the current \
version of Python.
It would be much appreciated if you would submit a Pull Request to the natsort
repository (https://github.com/SethMMorton/natsort) with the resulting change.
"""
)
def test_combined_string_contains_all_characters_in_list() -> None:
assert numeric == "".join(numeric_chars)
assert digits == "".join(digit_chars)
assert decimals == "".join(decimal_chars)
|