File: full_test.py

package info (click to toggle)
pyuca 1.2-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 177,356 kB
  • sloc: python: 516; makefile: 9; sh: 2
file content (87 lines) | stat: -rw-r--r-- 2,281 bytes parent folder | download | duplicates (3)
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
78
79
80
81
82
83
84
85
86
87
from __future__ import unicode_literals

import sys
from io import open

from pyuca import Collator

from pyuca.collator import (
    Collator_5_2_0, Collator_6_3_0,
    Collator_8_0_0, Collator_9_0_0, Collator_10_0_0
)
from pyuca.utils import format_sort_key

try:
    chr = unichr
except NameError:
    pass

PYTHON3 = sys.version_info >= (3,)
V8_0_0 = sys.version_info >= (3, 5)
V9_0_0 = sys.version_info >= (3, 6)
V10_0_0 = sys.version_info >= (3, 7)

collators = [Collator_5_2_0]
if PYTHON3:
    collators.append(Collator_6_3_0)
if V8_0_0:
    collators.append(Collator_8_0_0)
if V9_0_0:
    collators.append(Collator_9_0_0)
if V10_0_0:
    collators.append(Collator_10_0_0)

default_collator = Collator

collators = [
    collator for collator in collators
    if collator.UCA_VERSION != default_collator.UCA_VERSION
] + [default_collator]


total_failures = 0

for coll in collators:

    c = coll()

    prev_sort_key = None

    success = 0
    failure = 0

    path = "CollationTest/{0}/CollationTest_NON_IGNORABLE.txt".format(
        c.UCA_VERSION)

    with open(path) as f:
        for i, line in enumerate(f.readlines()):
            points = line.split("#", 1)[0].split(";", 1)[0].strip().split()

            if points:
                test_string = "".join(
                    chr(int(point, 16)) for point in points
                )
                test_string_sort_key = c.sort_key(test_string)
                if prev_sort_key:
                    if prev_sort_key > test_string_sort_key:
                        failure += 1
                        print("-------")
                        print("failed on line {0}:".format(i+1))
                        print(line.rstrip("\n"))
                        print("PREV: {0}".format(
                            format_sort_key(prev_sort_key)))
                        print("THIS: {0}".format(
                            format_sort_key(test_string_sort_key)))
                        print("-------")
                    else:
                        success += 1
                prev_sort_key = test_string_sort_key

    print("")
    print("{0} success; {1} failure (UCA version {2})".format(
        success, failure, c.UCA_VERSION))

    total_failures += failure

if total_failures > 0:
    sys.exit(1)