1 |
jonathan |
905 |
#!/usr/bin/env python |
2 |
|
|
# |
3 |
|
|
# Copyright (C) 2002, 2003 by Intevation GmbH |
4 |
|
|
# Authors: |
5 |
|
|
# Thomas Koester <[email protected]> |
6 |
|
|
# |
7 |
|
|
# This program is free software under the GPL (>=v2) |
8 |
|
|
# Read the file COPYING coming with the software for details. |
9 |
|
|
|
10 |
|
|
""" |
11 |
|
|
Unit test for range.py |
12 |
|
|
""" |
13 |
|
|
|
14 |
|
|
__version__ = "$Revision$" |
15 |
|
|
# $Source$ |
16 |
|
|
# $Id$ |
17 |
|
|
|
18 |
|
|
import unittest |
19 |
|
|
|
20 |
|
|
import support |
21 |
|
|
support.initthuban() |
22 |
|
|
|
23 |
jonathan |
970 |
from Thuban.Model.range import Range, _inf |
24 |
jonathan |
905 |
|
25 |
|
|
class RangeTest(support.FloatTestCase): |
26 |
|
|
|
27 |
|
|
def test_equal(self): |
28 |
|
|
"""test if different ways to create a range yield equal ranges""" |
29 |
|
|
range = Range() |
30 |
|
|
self.assertEqual(range, Range('')) |
31 |
|
|
self.assertEqual(range, Range(']-oo;oo[')) |
32 |
jonathan |
970 |
self.assertEqual(range, Range((']', -_inf, _inf, '['))) |
33 |
|
|
self.assertEqual(range, Range((']', '-oo', 'oo', '['))) |
34 |
tkoester |
993 |
range = Range('[0;1]') |
35 |
jonathan |
905 |
self.assertEqual(range, Range('[000;1.0]')) |
36 |
jonathan |
970 |
self.assertEqual(range, Range(('[', '0', 1.0, ']'))) |
37 |
jonathan |
905 |
range2 = range |
38 |
|
|
self.assertEqual(range, range2) |
39 |
|
|
range3 = Range(range) |
40 |
|
|
self.assertEqual(range3, range2) |
41 |
|
|
range = Range(']0;99]') |
42 |
|
|
self.assertEqual(range, Range(']0;99E+00]')) |
43 |
|
|
self.assertEqual(range, Range(']0;9.9E+01]')) |
44 |
|
|
self.assertEqual(range, Range(']0;990E-01]')) |
45 |
|
|
self.assertEqual(range, Range(']0;.99E+02]')) |
46 |
jonathan |
970 |
self.assertEqual(range, Range((']', 0, '.99E+02', ']'))) |
47 |
jonathan |
905 |
|
48 |
|
|
def test_different(self): |
49 |
|
|
"""test if different ranges are different""" |
50 |
|
|
range = Range('[-1;1]') |
51 |
|
|
self.failIfEqual(range, Range(']-1;1]')) |
52 |
|
|
self.failIfEqual(range, Range('[-1;1[')) |
53 |
|
|
self.failIfEqual(range, Range(']-1;1[')) |
54 |
|
|
self.failIfEqual(range, Range('[0;1]')) |
55 |
|
|
self.failIfEqual(range, Range('[-1;0]')) |
56 |
|
|
|
57 |
|
|
def test_contains(self): |
58 |
|
|
"""test value in range""" |
59 |
jonathan |
970 |
range = Range((']', '0', 99, ']')) |
60 |
jonathan |
905 |
for value in [-0.1, 0, 99.1]: |
61 |
|
|
self.failIf(value in range) |
62 |
|
|
for value in [0.1, 9.9, 99]: |
63 |
|
|
self.assert_(value in range) |
64 |
|
|
range = Range('[-oo;0]') |
65 |
|
|
for value in [0.1, float('1e100'), float('1e10000')]: |
66 |
|
|
self.failIf(value in range) |
67 |
|
|
for value in [0.0, float('-1e100'), float('-1e10000')]: |
68 |
|
|
self.assert_(value in range) |
69 |
|
|
|
70 |
|
|
def test_float(self): |
71 |
|
|
"""test string to float conversion""" |
72 |
|
|
range = Range() |
73 |
|
|
self.assertFloatEqual(range.float('oo'), _inf) |
74 |
|
|
self.assertFloatEqual(range.float('-oo'), -_inf) |
75 |
|
|
for value in [-100000000000000000000l, 12345.6789, 0, 0.0, 5.30e20]: |
76 |
|
|
self.assertFloatEqual(range.float(str(value)), value) |
77 |
|
|
|
78 |
|
|
def test_short_range(self): |
79 |
|
|
"""test if range parser handles short ranges""" |
80 |
|
|
range = Range('[0;0]') |
81 |
|
|
self.failIf(-0.001 in range) |
82 |
|
|
self.assert_(0 in range) |
83 |
|
|
self.failIf(0.001 in range) |
84 |
|
|
|
85 |
|
|
def test_bad_ranges(self): |
86 |
|
|
"""test if range parser raises correct exception on bad ranges""" |
87 |
|
|
for range in [0, 1.1]: |
88 |
|
|
self.assertRaises(TypeError, Range, range) |
89 |
|
|
for range in ['x', ']x;9]', ']]0;1]', '[0;1]]', '[0;x]', '0', |
90 |
|
|
'[0]', '[;]', '[0;]', '[;0]', '[1;0]', |
91 |
jonathan |
970 |
']0;0]', '[0;0[', ']0;0[', |
92 |
|
|
('[',), ('[', 0), ('[', 0, 1), ('[', 0, ']'), |
93 |
|
|
('', 0, 1, ']'), ('[', 0, 1, '')]: |
94 |
jonathan |
905 |
self.assertRaises(ValueError, Range, range) |
95 |
|
|
|
96 |
|
|
|
97 |
|
|
if __name__ == "__main__": |
98 |
|
|
unittest.main() |