@@@ cython and python3
[mLib-python] / test.py
1 #! /usr/bin/python
2 ### -*- coding: utf-8 -*-
3
4 import sys as SYS
5 import mLib as M
6
7 if SYS.version_info >= (3,):
8 def _bin(text): return text.encode()
9 def _text(bin): return bin.decode()
10 else:
11 def _bin(text): return text
12 def _text(bin): return bin
13
14 def must_equal(x, y):
15 if x == y: pass
16 else: raise AssertionError("%r != %r" % (x, y))
17
18 ## Done!
19 print(";; test begins (Python %s)" % SYS.version)
20
21 ## crc32
22 must_equal(M.crc32(_bin("abc")), 0x352441c2)
23 must_equal(M.CRC32().chunk(_bin("a")).chunk(_bin("bc")).done(), 0x352441c2)
24
25 ## unihash
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)
36
37 ## atom
38 foo = M.Atom("foo")
39 bar = M.Atom("bär")
40 assert foo != bar
41 assert foo is M.Atom("foo")
42 assert bar is M.Atom("bär")
43 assert foo.internedp
44 must_equal(foo.name, "foo")
45 must_equal(bar.name, "bär")
46 gen = M.Atom()
47 assert gen is not M.Atom()
48 assert not gen.internedp
49 all = set(M.atoms())
50 assert foo in all
51 assert bar in all
52
53 ## assoc, sym
54 def test_mapping(mapcls, keya, keyz):
55 tab = mapcls()
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')
59 del tab[keyz]
60 try: tab[keyz]
61 except KeyError: pass
62 else: assert False
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')
68
69 ## Done!
70 print(";; test completed OK")