|
13 | 13 | import pyomo.common.unittest as unittest
|
14 | 14 |
|
15 | 15 | class TestPyomoUnittest(unittest.TestCase):
|
16 |
| - def test_assertRelativeEqual_comparison(self): |
| 16 | + def test_assertStructuredAlmostEqual_comparison(self): |
17 | 17 | a = 1
|
18 | 18 | b = 1
|
19 |
| - self.assertRelativeEqual(a, b) |
20 |
| - # default relative tolerance is 1e-7. This should have a delta |
| 19 | + self.assertStructuredAlmostEqual(a, b) |
| 20 | + # default relative tolerance is 1e-7. This should have a reltol |
21 | 21 | # of "exactly" 1e-7, but due to roundoff error, it is not. The
|
22 | 22 | # choice of 9.999e-8 and 9.999-e7 is specifically so that
|
23 | 23 | # roundoff error doesn't cause tests to fail
|
24 | 24 | b -= 9.999e-8
|
25 |
| - self.assertRelativeEqual(a, b) |
| 25 | + self.assertStructuredAlmostEqual(a, b) |
26 | 26 | b -= 9.999e-8
|
27 | 27 | with self.assertRaisesRegex(self.failureException, '1 !~= 0.9999'):
|
28 |
| - self.assertRelativeEqual(a, b) |
| 28 | + self.assertStructuredAlmostEqual(a, b) |
29 | 29 |
|
30 | 30 | b = 1
|
31 |
| - self.assertRelativeEqual(a, b, delta=1e-6) |
| 31 | + self.assertStructuredAlmostEqual(a, b, reltol=1e-6) |
32 | 32 | b -= 9.999e-7
|
33 |
| - self.assertRelativeEqual(a, b, delta=1e-6) |
| 33 | + self.assertStructuredAlmostEqual(a, b, reltol=1e-6) |
34 | 34 | b -= 9.999e-7
|
35 | 35 | with self.assertRaisesRegex(self.failureException, '1 !~= 0.999'):
|
36 |
| - self.assertRelativeEqual(a, b, delta=1e-6) |
| 36 | + self.assertStructuredAlmostEqual(a, b, reltol=1e-6) |
37 | 37 |
|
38 | 38 | b = 1
|
39 |
| - self.assertRelativeEqual(a, b, places=6) |
| 39 | + self.assertStructuredAlmostEqual(a, b, places=6) |
40 | 40 | b -= 9.999e-7
|
41 |
| - self.assertRelativeEqual(a, b, places=6) |
| 41 | + self.assertStructuredAlmostEqual(a, b, places=6) |
42 | 42 | b -= 9.999e-7
|
43 | 43 | with self.assertRaisesRegex(self.failureException, '1 !~= 0.999'):
|
44 |
| - self.assertRelativeEqual(a, b, places=6) |
45 |
| - |
46 |
| - def test_assertRelativeEqual_errorChecking(self): |
47 |
| - with self.assertRaisesRegex(ValueError, |
48 |
| - "Cannot specify both places and delta"): |
49 |
| - self.assertRelativeEqual(1,1,places=7,delta=1) |
50 |
| - |
51 |
| - def test_assertRelativeEqual_str(self): |
52 |
| - self.assertRelativeEqual("hi", "hi") |
53 |
| - with self.assertRaisesRegex(self.failureException, "'hi' !~= 'hello'"): |
54 |
| - self.assertRelativeEqual("hi", "hello") |
55 |
| - with self.assertRaisesRegex(self.failureException, "'hi' !~= \['h',"): |
56 |
| - self.assertRelativeEqual("hi", ['h','i']) |
57 |
| - |
58 |
| - def test_assertRelativeEqual_othertype(self): |
| 44 | + self.assertStructuredAlmostEqual(a, b, places=6) |
| 45 | + |
| 46 | + with self.assertRaisesRegex(self.failureException, '10 !~= 10.01'): |
| 47 | + self.assertStructuredAlmostEqual(10, 10.01, abstol=1e-3) |
| 48 | + self.assertStructuredAlmostEqual(10, 10.01, reltol=1e-3) |
| 49 | + with self.assertRaisesRegex(self.failureException, '10 !~= 10.01'): |
| 50 | + self.assertStructuredAlmostEqual(10, 10.01, delta=1e-3) |
| 51 | + |
| 52 | + def test_assertStructuredAlmostEqual_errorChecking(self): |
| 53 | + with self.assertRaisesRegex( |
| 54 | + ValueError, "Cannot specify more than one of " |
| 55 | + "{places, delta, abstol}"): |
| 56 | + self.assertStructuredAlmostEqual(1, 1, places=7, delta=1) |
| 57 | + |
| 58 | + def test_assertStructuredAlmostEqual_str(self): |
| 59 | + self.assertStructuredAlmostEqual("hi", "hi") |
| 60 | + with self.assertRaisesRegex( |
| 61 | + self.failureException, "'hi' !~= 'hello'"): |
| 62 | + self.assertStructuredAlmostEqual("hi", "hello") |
| 63 | + with self.assertRaisesRegex( |
| 64 | + self.failureException, "'hi' !~= \['h',"): |
| 65 | + self.assertStructuredAlmostEqual("hi", ['h','i']) |
| 66 | + |
| 67 | + def test_assertStructuredAlmostEqual_othertype(self): |
59 | 68 | a = datetime.datetime(1,1,1)
|
60 | 69 | b = datetime.datetime(1,1,1)
|
61 |
| - self.assertRelativeEqual(a, b) |
| 70 | + self.assertStructuredAlmostEqual(a, b) |
62 | 71 | b = datetime.datetime(1,1,2)
|
63 |
| - with self.assertRaisesRegex(self.failureException, |
64 |
| - "datetime.* !~= datetime"): |
65 |
| - self.assertRelativeEqual(a, b) |
66 |
| - |
67 |
| - def test_assertRelativeEqual_list(self): |
| 72 | + with self.assertRaisesRegex( |
| 73 | + self.failureException, "datetime.* !~= datetime"): |
| 74 | + self.assertStructuredAlmostEqual(a, b) |
| 75 | + |
| 76 | + def test_assertStructuredAlmostEqual_list(self): |
68 | 77 | a = [1,2]
|
69 | 78 | b = [1,2,3]
|
70 |
| - with self.assertRaisesRegex(self.failureException, |
71 |
| - 'sequences are different sizes \(2 != 3\)'): |
72 |
| - self.assertRelativeEqual(a, b) |
73 |
| - self.assertRelativeEqual(a, b, allow_second_superset=True) |
| 79 | + with self.assertRaisesRegex( |
| 80 | + self.failureException, |
| 81 | + 'sequences are different sizes \(2 != 3\)'): |
| 82 | + self.assertStructuredAlmostEqual(a, b) |
| 83 | + self.assertStructuredAlmostEqual(a, b, allow_second_superset=True) |
74 | 84 | a.append(3)
|
75 |
| - |
76 | 85 |
|
77 |
| - self.assertRelativeEqual(a, b) |
| 86 | + |
| 87 | + self.assertStructuredAlmostEqual(a, b) |
78 | 88 | b[1] -= 1.999e-7
|
79 |
| - self.assertRelativeEqual(a, b) |
| 89 | + self.assertStructuredAlmostEqual(a, b) |
80 | 90 | b[1] -= 1.999e-7
|
81 | 91 | with self.assertRaisesRegex(self.failureException, '2 !~= 1.999'):
|
82 |
| - self.assertRelativeEqual(a, b) |
| 92 | + self.assertStructuredAlmostEqual(a, b) |
83 | 93 |
|
84 |
| - def test_assertRelativeEqual_dict(self): |
| 94 | + def test_assertStructuredAlmostEqual_dict(self): |
85 | 95 | a = {1:2, 3:4}
|
86 | 96 | b = {1:2, 3:4, 5:6}
|
87 |
| - with self.assertRaisesRegex(self.failureException, |
88 |
| - 'mappings are different sizes \(2 != 3\)'): |
89 |
| - self.assertRelativeEqual(a, b) |
90 |
| - self.assertRelativeEqual(a, b, allow_second_superset=True) |
| 97 | + with self.assertRaisesRegex( |
| 98 | + self.failureException, |
| 99 | + 'mappings are different sizes \(2 != 3\)'): |
| 100 | + self.assertStructuredAlmostEqual(a, b) |
| 101 | + self.assertStructuredAlmostEqual(a, b, allow_second_superset=True) |
91 | 102 | a[5] = 6
|
92 |
| - |
93 | 103 |
|
94 |
| - self.assertRelativeEqual(a, b) |
| 104 | + |
| 105 | + self.assertStructuredAlmostEqual(a, b) |
95 | 106 | b[1] -= 1.999e-7
|
96 |
| - self.assertRelativeEqual(a, b) |
| 107 | + self.assertStructuredAlmostEqual(a, b) |
97 | 108 | b[1] -= 1.999e-7
|
98 | 109 | with self.assertRaisesRegex(self.failureException, '2 !~= 1.999'):
|
99 |
| - self.assertRelativeEqual(a, b) |
| 110 | + self.assertStructuredAlmostEqual(a, b) |
100 | 111 |
|
101 | 112 | del b[1]
|
102 | 113 | b[6] = 6
|
103 |
| - with self.assertRaisesRegex(self.failureException, |
104 |
| - 'key \(1\) from first not found in second'): |
105 |
| - self.assertRelativeEqual(a, b) |
| 114 | + with self.assertRaisesRegex( |
| 115 | + self.failureException, |
| 116 | + 'key \(1\) from first not found in second'): |
| 117 | + self.assertStructuredAlmostEqual(a, b) |
106 | 118 |
|
107 |
| - def test_assertRelativeEqual_nested(self): |
| 119 | + def test_assertStructuredAlmostEqual_nested(self): |
108 | 120 | a = {1.1: [1,2,3], 'a': 'hi', 3: {1:2, 3:4}}
|
109 | 121 | b = {1.1: [1,2,3], 'a': 'hi', 3: {1:2, 3:4}}
|
110 |
| - self.assertRelativeEqual(a, b) |
| 122 | + self.assertStructuredAlmostEqual(a, b) |
111 | 123 | b[1.1][2] -= 1.999e-7
|
112 | 124 | b[3][1] -= 9.999e-8
|
113 |
| - self.assertRelativeEqual(a, b) |
| 125 | + self.assertStructuredAlmostEqual(a, b) |
114 | 126 | b[1.1][2] -= 1.999e-7
|
115 | 127 | with self.assertRaisesRegex(self.failureException,
|
116 | 128 | '3 !~= 2.999'):
|
117 |
| - self.assertRelativeEqual(a, b) |
| 129 | + self.assertStructuredAlmostEqual(a, b) |
0 commit comments