chiark / gitweb /
@@@ 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")