2 ### -*- coding: utf-8 -*-
7 if SYS
.version_info
>= (3,):
8 def _bin(text
): return text
.encode()
9 def _text(bin
): return bin
.decode()
11 def _bin(text
): return text
12 def _text(bin
): return bin
16 else: raise AssertionError("%r != %r" %
(x
, y
))
19 print(";; test begins (Python %s)" % SYS
.version
)
22 must_equal(M
.crc32(_bin("abc")), 0x352441c2)
23 must_equal(M
.CRC32().chunk(_bin("a")).chunk(_bin("bc")).done(), 0x352441c2)
26 assert M
.Unihash().key
is None
27 must_equal(M
.Unihash
.hash(_bin("abc")), 0xbf71f6a2)
28 must_equal(M
.Unihash().chunk(_bin("a")).chunk(_bin("bc")).done(), 0xbf71f6a2)
29 key
= M
.UnihashKey(0x8498a262)
30 assert M
.Unihash(key
).key
is key
31 must_equal(M
.Unihash
.hash(_bin("abc"), key
), 0xecd1e2a2)
32 must_equal(key
.hash(_bin("abc")), 0xecd1e2a2)
33 must_equal(M
.Unihash(key
).chunk(_bin("a")).chunk(_bin("bc")).done(), 0xecd1e2a2)
34 M
.setglobalkey(0x8498a262)
35 must_equal(M
.Unihash
.hash(_bin("abc")), 0xecd1e2a2)
41 assert foo
is M
.Atom("foo")
42 assert bar
is M
.Atom("bär")
44 must_equal(foo
.name
, "foo")
45 must_equal(bar
.name
, "bär")
47 assert gen
is not M
.Atom()
48 assert not gen
.internedp
54 def test_mapping(mapcls
, keya
, keyz
):
56 tab
[keya
] = 69; must_equal(tab
[keya
], 69)
57 tab
[keya
] = 42; must_equal(tab
[keya
], 42)
58 tab
[keyz
] = 'zing'; must_equal(tab
[keyz
], 'zing')
63 must_equal(list(tab
.keys()), [keya
])
64 must_equal(list(tab
.values()), [42])
65 must_equal(list(tab
.items()), [(keya
, 42)])
66 test_mapping(M
.AssocTable
, foo
, bar
)
67 test_mapping(M
.SymTable
, 'foo', 'bar')
70 print(";; test completed OK")