sortemes: Simplify some logic.
[python-collate.git] / tests / run.py
1 import glob
2 import os
3 import random
4
5 import collate.icu
6
7 def main():
8 path = os.path.dirname(__file__)
9 for filename in glob.glob(os.path.join(path, "*", "*.list.txt")):
10 fileobj = open(os.path.join(path, filename), "rU")
11 locale = os.path.basename(os.path.dirname(filename))
12
13 original = [line.decode("utf-8").strip()
14 for line in fileobj
15 if line.strip()]
16 contents = list(original)
17
18 collator = collate.icu.Collator(locale, "utf-8")
19
20 ordered = sorted(contents, key=collator.sortemekey)
21 if ordered != original:
22 print "Failed to sort sorted", filename
23 print " " + "\n ".join([line.encode("utf-8") for line in ordered])
24 continue
25
26 contents.reverse()
27 ordered = sorted(contents, key=collator.sortemekey)
28 if ordered != original:
29 print "Failed to sort reversed", filename
30 print " " + "\n ".join([line.encode("utf-8") for line in ordered])
31 continue
32
33 random.shuffle(contents)
34 ordered = sorted(contents, key=collator.sortemekey)
35 if ordered != original:
36 print "Failed to sort shuffled", filename
37 print " " + "\n ".join([line.encode("utf-8") for line in ordered])
38 continue
39
40 print "Sorted", filename, "successfully."
41
42 if __name__ == "__main__":
43 main()