14
14
super(MainTestCase, self).setUp()
16
def test_temporarly_result(self):
17
self.app.main_view.insert('2450.1*369+')
19
self._assert_result_is(u'904086.9+')
20
self.app.main_view.insert('3.1=')
22
self._assert_result_is(u'904090')
23
self._assert_history_contains(u'2450.1×369+3.1=9.0409e+5')
16
25
def test_operation_after_clear(self):
17
26
self.app.main_view.insert('8*8=')
19
self._assert_result_is('64')
20
self._assert_history_contains('8×8=64')
28
self._assert_result_is(u'64')
29
self._assert_history_contains(u'8×8=64')
22
31
self.app.main_view.clear()
23
32
self.app.main_view.insert('9*9=')
25
self._assert_result_is('81')
26
self._assert_history_contains('9×9=81')
34
self._assert_result_is(u'81')
35
self._assert_history_contains(u'9×9=81')
28
37
def test_small_numbers(self):
29
38
self.app.main_view.insert('0.000000001+1=')
30
self._assert_result_is('1.000000001')
39
self._assert_result_is(u'1.000000001')
40
self._assert_history_contains(u'0.000000001+1=1.000000001')
32
42
self.app.main_view.clear()
34
44
self.app.main_view.insert('0.000000001/10=')
35
self._assert_result_is('1e−10')
45
self._assert_result_is(u'1e−10')
46
self._assert_history_contains(u'0.000000001÷10=1e-10')
37
48
def test_operators_precedence(self):
38
49
self.app.main_view.insert('2+2*2=')
40
self._assert_result_is('6')
41
self._assert_history_contains('2+2×2=6')
51
self._assert_result_is(u'6')
52
self._assert_history_contains(u'2+2×2=6')
43
54
self.app.main_view.clear()
44
55
self.app.main_view.insert('2-2*2=')
46
self._assert_result_is('−2')
47
self._assert_history_contains('2−2×2=-2')
57
self._assert_result_is(u'−2')
58
self._assert_history_contains(u'2−2×2=-2')
49
60
self.app.main_view.clear()
50
61
self.app.main_view.insert('5+6/2=')
52
self._assert_result_is('8')
53
self._assert_history_contains('5+6÷2=8')
63
self._assert_result_is(u'8')
64
self._assert_history_contains(u'5+6÷2=8')
55
66
def test_divide_with_zero(self):
56
67
self.app.main_view.insert('0/5=')
58
self._assert_result_is('0')
59
self._assert_history_contains('0÷5=0')
69
self._assert_result_is(u'0')
70
self._assert_history_contains(u'0÷5=0')
61
72
def test_divide_by_zero(self):
62
73
self.app.main_view.insert('5/0=')
67
78
def test_divide_zero_by_zero(self):
68
79
self.app.main_view.insert('0/0=')
70
self._assert_result_is("NaN")
81
self._assert_result_is(u'NaN')
71
82
self._assert_history_contains(u'0÷0=NaN')
84
def test_equals_doesnt_change_numbers(self):
85
self.app.main_view.insert('125')
86
self._assert_result_is(u'125')
88
self.app.main_view.insert('=')
89
self._assert_result_is(u'125')
91
def test_divide_with_infinite_number_as_result(self):
92
self.app.main_view.insert('1/3=')
93
self._assert_result_is(u'0.3333333333333333')
95
def test_operation_on_infinite_number(self):
96
self.app.main_view.insert('5/3=')
97
self._assert_result_is(u'1.6666666666666667')
99
self.app.main_view.insert('-1=')
100
self._assert_result_is(u'0.6666666666666667')
73
102
def _assert_result_is(self, value):
74
103
self.assertThat(self.app.main_view.get_result,
75
104
Eventually(Equals(value)))