Gustavo Picon is sharing code with you
Bitbucket is a code hosting site. Unlimited public and private repositories. Free for small teams.
Don't show this againnumconv / tests.py
- commit
- c4e7f8a9fba1
- parent
- 1f64ca152ceb
- branch
- default
- tags
- 1.1
updated the documentation Makefile to have a flexible html output location
1 |
a035ba7fb21b
|
# -*- coding: utf-8 -*- |
2 |
a035ba7fb21b
|
|
3 |
a035ba7fb21b
|
"""Test numconv.py""" |
4 |
a035ba7fb21b
|
|
5 |
a035ba7fb21b
|
import numconv |
6 |
a035ba7fb21b
|
import unittest |
7 |
a035ba7fb21b
|
|
8 |
a035ba7fb21b
|
|
9 |
a035ba7fb21b
|
class BaseconvI2s(unittest.TestCase): |
10 |
a035ba7fb21b
|
"""tests for int2str()""" |
11 |
a035ba7fb21b
|
|
12 |
a035ba7fb21b
|
def test_i2s(self): |
13 |
a035ba7fb21b
|
"""testing int2str: expected values""" |
14 |
a035ba7fb21b
|
self.assertEqual(numconv.int2str(3735928559, 16), 'DEADBEEF') |
15 |
a035ba7fb21b
|
self.assertEqual(numconv.int2str(238327, 62), 'zzz') |
16 |
a035ba7fb21b
|
self.assertEqual(numconv.int2str(14776335, 62), 'zzzz') |
17 |
a035ba7fb21b
|
self.assertEqual(numconv.int2str(466, 7), '1234') |
18 |
a035ba7fb21b
|
self.assertEqual(numconv.int2str(151880, 2), '100101000101001000') |
19 |
a035ba7fb21b
|
self.assertEqual(numconv.int2str(2693233728041137L, 85), '~123AFz@') |
20 |
a035ba7fb21b
|
self.assertEqual(numconv.int2str(543543, 40), '8JSN') |
21 |
a035ba7fb21b
|
self.assertEqual(numconv.int2str(1949459, 61), '8ZtL') |
22 |
a035ba7fb21b
|
self.assertEqual(numconv.int2str(19284, 2), '100101101010100') |
23 |
a035ba7fb21b
|
self.assertEqual(numconv.int2str(100, 10, 'abcdefghijklm'), 'baa') |
24 |
a035ba7fb21b
|
self.assertEqual(numconv.int2str(37, 4, 'rofl'), 'foo') |
25 |
a035ba7fb21b
|
|
26 |
a035ba7fb21b
|
def test_i2s_nonint_number(self): |
27 |
a035ba7fb21b
|
"""testing int2str: error on non-integer number""" |
28 |
a035ba7fb21b
|
self.assertRaises(TypeError, numconv.int2str, 0.1, 8) |
29 |
a035ba7fb21b
|
|
30 |
a035ba7fb21b
|
def test_i2s_nonint_radix(self): |
31 |
a035ba7fb21b
|
"""testing int2str: error on non-integer radix""" |
32 |
a035ba7fb21b
|
self.assertRaises(TypeError, numconv.int2str, 100, 0.1) |
33 |
a035ba7fb21b
|
|
34 |
a035ba7fb21b
|
def test_i2s_invalid_radix(self): |
35 |
a035ba7fb21b
|
"""testing int2str: error on invalid radix""" |
36 |
a035ba7fb21b
|
self.assertRaises(ValueError, numconv.int2str, 100, -10) |
37 |
a035ba7fb21b
|
self.assertRaises(ValueError, numconv.int2str, 100, 10, 'abcde') |
38 |
a035ba7fb21b
|
|
39 |
a035ba7fb21b
|
def test_i2s_negative_number(self): |
40 |
a035ba7fb21b
|
"""testing int2str: error on negative number""" |
41 |
a035ba7fb21b
|
self.assertRaises(ValueError, numconv.int2str, -100, 10) |
42 |
a035ba7fb21b
|
|
43 |
a035ba7fb21b
|
|
44 |
a035ba7fb21b
|
class BaseconvS2i(unittest.TestCase): |
45 |
a035ba7fb21b
|
"""tests for str2int()""" |
46 |
a035ba7fb21b
|
|
47 |
a035ba7fb21b
|
def test_s2i(self): |
48 |
a035ba7fb21b
|
"""testing str2int: expected values""" |
49 |
a035ba7fb21b
|
self.assertEqual(numconv.str2int('DEADBEEF', 16), 3735928559L) |
50 |
a035ba7fb21b
|
self.assertEqual(numconv.str2int('zzz', 62), 238327) |
51 |
a035ba7fb21b
|
self.assertEqual(numconv.str2int('zzzz', 62), 14776335) |
52 |
a035ba7fb21b
|
self.assertEqual(numconv.str2int('1234', 7), 466) |
53 |
a035ba7fb21b
|
self.assertEqual(numconv.str2int('100101000101001000', 2), 151880) |
54 |
a035ba7fb21b
|
self.assertEqual(numconv.str2int('~123AFz@', 85), 2693233728041137L) |
55 |
a035ba7fb21b
|
self.assertEqual(numconv.str2int('8JSN', 40), 543543) |
56 |
a035ba7fb21b
|
self.assertEqual(numconv.str2int('8ZtL', 61), 1949459) |
57 |
a035ba7fb21b
|
self.assertEqual(numconv.str2int('100101101010100', 2), 19284) |
58 |
a035ba7fb21b
|
self.assertEqual(numconv.str2int('baa', 10, 'abcdefghijklm'), 100) |
59 |
a035ba7fb21b
|
self.assertEqual(numconv.str2int('foo', 4, 'rofl'), 37) |
60 |
a035ba7fb21b
|
|
61 |
a035ba7fb21b
|
def test_s2i_nonint_base(self): |
62 |
a035ba7fb21b
|
"""testing str2int: error on non-integer base""" |
63 |
a035ba7fb21b
|
self.assertRaises(TypeError, numconv.str2int, '100', 0.1) |
64 |
a035ba7fb21b
|
|
65 |
a035ba7fb21b
|
def test_s2i_bad_number(self): |
66 |
a035ba7fb21b
|
"""testing str2int: error on invalid number""" |
67 |
a035ba7fb21b
|
# raised by python |
68 |
a035ba7fb21b
|
self.assertRaises(ValueError, numconv.str2int, '1234z', 8) |
69 |
a035ba7fb21b
|
# raised by numconv.py |
70 |
a035ba7fb21b
|
self.assertRaises(ValueError, numconv.str2int, '1234z', 37) |
71 |
a035ba7fb21b
|
|
72 |
a035ba7fb21b
|
def test_s2i_invalid_radix(self): |
73 |
a035ba7fb21b
|
"""testing str2int: error on invalid radix""" |
74 |
a035ba7fb21b
|
self.assertRaises(ValueError, numconv.str2int, 'abcd', -10) |
75 |
a035ba7fb21b
|
|
76 |
a035ba7fb21b
|
|
77 |
a035ba7fb21b
|
class BaseconvGetcmap(unittest.TestCase): |
78 |
a035ba7fb21b
|
"""tests for getcmap()""" |
79 |
a035ba7fb21b
|
|
80 |
a035ba7fb21b
|
def test_getcmap(self): |
81 |
a035ba7fb21b
|
"""testing getcmap: expected values""" |
82 |
a035ba7fb21b
|
self.assertEqual(numconv.getcmap('0123456789'), |
83 |
a035ba7fb21b
|
{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, |
84 |
a035ba7fb21b
|
'5': 5, '6': 6, '7': 7, '8': 8, '9': 9}) |
85 |
a035ba7fb21b
|
self.assertEqual(numconv.getcmap('abcd'), |
86 |
a035ba7fb21b
|
{'a': 0, 'b': 1, 'c': 2, 'd': 3}) |
87 |
a035ba7fb21b
|
|
88 |
a035ba7fb21b
|
def test_getcmap_dupechars(self): |
89 |
a035ba7fb21b
|
"""testing getcmap: error on alphabet with duplicate chars""" |
90 |
a035ba7fb21b
|
self.assertRaises(ValueError, numconv.getcmap, 'abcdaf') |
91 |
a035ba7fb21b
|
|
92 |
a035ba7fb21b
|
|
93 |
a035ba7fb21b
|
class BaseconvSanity(unittest.TestCase): |
94 |
a035ba7fb21b
|
"""sanity checks""" |
95 |
a035ba7fb21b
|
|
96 |
a035ba7fb21b
|
def test_sanity(self): |
97 |
a035ba7fb21b
|
"""sanity check: testing a large interval and lots of radixes""" |
98 |
a035ba7fb21b
|
for num in range(1000) + [10**x for x in range(5, 15)]: |
99 |
a035ba7fb21b
|
for base in range(2, len(numconv.BASE85)): |
100 |
a035ba7fb21b
|
self.assertEqual(num, |
101 |
a035ba7fb21b
|
numconv.str2int(numconv.int2str(num, base), base)) |
102 |
a035ba7fb21b
|
|
103 |
a035ba7fb21b
|
if __name__ == "__main__": |
104 |
a035ba7fb21b
|
unittest.main() |