-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtests.py
More file actions
110 lines (83 loc) · 2.8 KB
/
tests.py
File metadata and controls
110 lines (83 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import unittest
from measure_field import Measure, Unit
class TestMeasureField(unittest.TestCase):
def test_instance(self):
t = Measure(cm=1)
self.assertEqual(str(t), '1.0 cm')
def test_simple_conversion(self):
t = Measure(cm=1)
# long conversion
t2 = t.convert(cm=Unit.mm)
self.assertEqual(t2.value, 10)
# short conversion
self.assertEqual(t.mm.value, 10)
self.assertEqual(t.m.value, 0.01)
def test_complex_conversion(self):
t = Measure()
#1 m2 to cm2
t.value = 1
t.units[Unit.m] = 2
self.assertEqual(t.cm.value, 10000)
#1 m/s to cm/s
t.value = 1
t.units[Unit.m] = 1
t.units[Unit.s] = -1
self.assertEqual(t.convert(m=Unit.cm).value, 100.)
#1 m/s to m/min
self.assertEqual(t.convert(s=Unit.minute).value, 60.0)
#1 m/s to cm/min
self.assertEqual(t.convert(s=Unit.minute, m=Unit.cm).value, 6000)
#1 m/s^2 to km/hour^2
t.value = 1
t.units[Unit.m] = 1
t.units[Unit.s] = -2
self.assertEqual(t.convert(m=Unit.km, s=Unit.hour).value, 12960)
def test_add(self):
t1 = Measure(cm=1)
t2 = Measure(mm=10)
res = t1 + t2
self.assertEqual(res.value, 2)
self.assertEqual(res.units[Unit.cm], 1)
def test_mult(self):
t = Measure(cm=1)
self.assertEqual((t * 2).value, 2)
t = Measure(cm=4)
tt =t * t
self.assertEqual(tt.value, 16)
self.assertEqual(tt.units[Unit.cm], 2)
ttt = t * t * t
self.assertEqual(ttt.value, 64)
self.assertEqual(ttt.units[Unit.cm], 3)
#Complex mult 4 m/s * 2s = 8m
t1 = Measure()
t1.value = 4
t1.units = {Unit.m: 1, Unit.s: -1}
t2 = Measure()
t2.value = 2
t2.units = {Unit.s: 1}
r = t1 * t2
self.assertEqual(r.value, 8)
self.assertEqual(r.units[Unit.m], 1)
self.assertEqual(Unit.s in r.units, False)
def test_div(self):
t = Measure(cm=1)
self.assertEqual((t/2.).value, 0.5)
self.assertEqual( (t/t).value, 1)
self.assertEqual((4./t).value, 4.)
self.assertEqual((4./t).units[Unit.cm], -1)
t1 = Measure(cm=1)
t2 = Measure(cm=2)
self.assertEqual((t1 / t2).value, 0.5)
self.assertEqual((t1 / t2).units, {})
t1 = Measure(cm=1)
t1 = t1 * t1
t2 = Measure(cm=2)
self.assertEqual((t1 / t2).value, 0.5)
self.assertEqual((t1 / t2).units[Unit.cm], 1)
def test_pow(self):
t = Measure(cm=2)
r = t ** 3
self.assertEqual(r.value, 8)
self.assertEqual(r.units[Unit.cm] , 3)
if __name__ == '__main__':
unittest.main()