Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_stringprep.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | 0bb232078b8c |
| children |
| rev | line source |
|---|---|
| 28692 | 1 # To fully test this module, we would need a copy of the stringprep tables. |
| 2 # Since we don't have them, this test checks only a few codepoints. | |
| 3 | |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
4 import unittest |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
41575
diff
changeset
|
5 from test import support |
| 28692 | 6 |
| 7 from stringprep import * | |
| 8 | |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
9 class StringprepTests(unittest.TestCase): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
10 def test(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
11 self.assertTrue(in_table_a1("\u0221")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
12 self.assertFalse(in_table_a1("\u0222")) |
| 28692 | 13 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
14 self.assertTrue(in_table_b1("\u00ad")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
15 self.assertFalse(in_table_b1("\u00ae")) |
| 28692 | 16 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
17 self.assertTrue(map_table_b2("\u0041"), "\u0061") |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
18 self.assertTrue(map_table_b2("\u0061"), "\u0061") |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
19 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
20 self.assertTrue(map_table_b3("\u0041"), "\u0061") |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
21 self.assertTrue(map_table_b3("\u0061"), "\u0061") |
| 28692 | 22 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
23 self.assertTrue(in_table_c11("\u0020")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
24 self.assertFalse(in_table_c11("\u0021")) |
| 28692 | 25 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
26 self.assertTrue(in_table_c12("\u00a0")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
27 self.assertFalse(in_table_c12("\u00a1")) |
| 28692 | 28 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
29 self.assertTrue(in_table_c12("\u00a0")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
30 self.assertFalse(in_table_c12("\u00a1")) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
31 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
32 self.assertTrue(in_table_c11_c12("\u00a0")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
33 self.assertFalse(in_table_c11_c12("\u00a1")) |
| 28692 | 34 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
35 self.assertTrue(in_table_c21("\u001f")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
36 self.assertFalse(in_table_c21("\u0020")) |
| 28692 | 37 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
38 self.assertTrue(in_table_c22("\u009f")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
39 self.assertFalse(in_table_c22("\u00a0")) |
| 28692 | 40 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
41 self.assertTrue(in_table_c21_c22("\u009f")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
42 self.assertFalse(in_table_c21_c22("\u00a0")) |
| 28692 | 43 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
44 self.assertTrue(in_table_c3("\ue000")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
45 self.assertFalse(in_table_c3("\uf900")) |
| 28692 | 46 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
47 self.assertTrue(in_table_c4("\uffff")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
48 self.assertFalse(in_table_c4("\u0000")) |
| 28692 | 49 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
50 self.assertTrue(in_table_c5("\ud800")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
51 self.assertFalse(in_table_c5("\ud7ff")) |
| 28692 | 52 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
53 self.assertTrue(in_table_c6("\ufff9")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
54 self.assertFalse(in_table_c6("\ufffe")) |
| 28692 | 55 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
56 self.assertTrue(in_table_c7("\u2ff0")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
57 self.assertFalse(in_table_c7("\u2ffc")) |
| 28692 | 58 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
59 self.assertTrue(in_table_c8("\u0340")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
60 self.assertFalse(in_table_c8("\u0342")) |
| 28692 | 61 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
62 # C.9 is not in the bmp |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
63 # self.assertTrue(in_table_c9(u"\U000E0001")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
64 # self.assertFalse(in_table_c8(u"\U000E0002")) |
| 28692 | 65 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
66 self.assertTrue(in_table_d1("\u05be")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
67 self.assertFalse(in_table_d1("\u05bf")) |
| 28692 | 68 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
69 self.assertTrue(in_table_d2("\u0041")) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
70 self.assertFalse(in_table_d2("\u0040")) |
| 28692 | 71 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
72 # This would generate a hash of all predicates. However, running |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
73 # it is quite expensive, and only serves to detect changes in the |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
74 # unicode database. Instead, stringprep.py asserts the version of |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
75 # the database. |
| 28692 | 76 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
77 # import hashlib |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
78 # predicates = [k for k in dir(stringprep) if k.startswith("in_table")] |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
79 # predicates.sort() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
80 # for p in predicates: |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
81 # f = getattr(stringprep, p) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
82 # # Collect all BMP code points |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
83 # data = ["0"] * 0x10000 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
84 # for i in range(0x10000): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
85 # if f(unichr(i)): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
86 # data[i] = "1" |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
87 # data = "".join(data) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
88 # h = hashlib.sha1() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
89 # h.update(data) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
90 # print p, h.hexdigest() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
91 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
92 def test_main(): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
41575
diff
changeset
|
93 support.run_unittest(StringprepTests) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
94 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
95 if __name__ == '__main__': |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
96 test_main() |
