Skip to content

Commit ea35f85

Browse files
add rest of tests
1 parent c120c01 commit ea35f85

File tree

1 file changed

+183
-1
lines changed

1 file changed

+183
-1
lines changed

tests/test_real_algebraic_number.py

Lines changed: 183 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,189 @@ def test_trunc(self):
4343
self.assertEqual(math.trunc(RealAlgebraicNumber(-128) / 10), -12)
4444
self.assertEqual(math.trunc(-(RealAlgebraicNumber(123)
4545
** (RealAlgebraicNumber(1) / 2))), -11)
46-
# FIXME: add more tests
46+
47+
def test_floor(self):
48+
self.assertEqual(math.floor(RealAlgebraicNumber(123)), 123)
49+
self.assertEqual(math.floor(RealAlgebraicNumber(123) / 10), 12)
50+
self.assertEqual(math.floor(RealAlgebraicNumber(128) / 10), 12)
51+
self.assertEqual(math.floor(RealAlgebraicNumber(123)
52+
** (RealAlgebraicNumber(1) / 2)), 11)
53+
self.assertEqual(math.floor(RealAlgebraicNumber(-123)), -123)
54+
self.assertEqual(math.floor(RealAlgebraicNumber(-123) / 10), -13)
55+
self.assertEqual(math.floor(RealAlgebraicNumber(-128) / 10), -13)
56+
self.assertEqual(math.floor(-(RealAlgebraicNumber(123)
57+
** (RealAlgebraicNumber(1) / 2))), -12)
58+
59+
def test_ceil(self):
60+
self.assertEqual(math.ceil(RealAlgebraicNumber(123)), 123)
61+
self.assertEqual(math.ceil(RealAlgebraicNumber(123) / 10), 13)
62+
self.assertEqual(math.ceil(RealAlgebraicNumber(128) / 10), 13)
63+
self.assertEqual(math.ceil(RealAlgebraicNumber(123)
64+
** (RealAlgebraicNumber(1) / 2)), 12)
65+
self.assertEqual(math.ceil(RealAlgebraicNumber(-123)), -123)
66+
self.assertEqual(math.ceil(RealAlgebraicNumber(-123) / 10), -12)
67+
self.assertEqual(math.ceil(RealAlgebraicNumber(-128) / 10), -12)
68+
self.assertEqual(math.ceil(-(RealAlgebraicNumber(123)
69+
** (RealAlgebraicNumber(1) / 2))), -11)
70+
71+
def test_to_integer(self):
72+
self.assertEqual(RealAlgebraicNumber(123).to_integer(), 123)
73+
self.assertEqual((RealAlgebraicNumber(123) / 10).to_integer(), None)
74+
self.assertEqual((RealAlgebraicNumber(128) / 10).to_integer(), None)
75+
self.assertEqual((RealAlgebraicNumber(123)
76+
** (RealAlgebraicNumber(1) / 2)).to_integer(), None)
77+
self.assertEqual(RealAlgebraicNumber(-123).to_integer(), -123)
78+
self.assertEqual((RealAlgebraicNumber(-123) / 10).to_integer(), None)
79+
self.assertEqual((RealAlgebraicNumber(-128) / 10).to_integer(), None)
80+
self.assertEqual((-(RealAlgebraicNumber(123)
81+
** (RealAlgebraicNumber(1) / 2))
82+
).to_integer(), None)
83+
84+
def test_to_rational(self):
85+
self.assertEqual(RealAlgebraicNumber(123).to_rational(), (123, 1))
86+
self.assertEqual((RealAlgebraicNumber(123) / 10).to_rational(),
87+
(123, 10))
88+
self.assertEqual((RealAlgebraicNumber(128) / 10).to_rational(),
89+
(64, 5))
90+
self.assertEqual((RealAlgebraicNumber(123)
91+
** (RealAlgebraicNumber(1) / 2)).to_rational(), None)
92+
self.assertEqual(RealAlgebraicNumber(-123).to_rational(), (-123, 1))
93+
self.assertEqual((RealAlgebraicNumber(-123) / 10).to_rational(),
94+
(-123, 10))
95+
self.assertEqual((RealAlgebraicNumber(-128) / 10).to_rational(),
96+
(-64, 5))
97+
self.assertEqual((-(RealAlgebraicNumber(123)
98+
** (RealAlgebraicNumber(1) / 2))
99+
).to_rational(), None)
100+
101+
def test_minimal_polynomial(self):
102+
self.assertEqual(RealAlgebraicNumber(123).minimal_polynomial,
103+
[-123, 1])
104+
self.assertEqual((RealAlgebraicNumber(123) / 10).minimal_polynomial,
105+
[-123, 10])
106+
self.assertEqual((RealAlgebraicNumber(128) / 10).minimal_polynomial,
107+
[-64, 5])
108+
self.assertEqual((RealAlgebraicNumber(123)
109+
** (RealAlgebraicNumber(1) / 2)).minimal_polynomial,
110+
[-123, 0, 1])
111+
self.assertEqual(RealAlgebraicNumber(-123).minimal_polynomial,
112+
[123, 1])
113+
self.assertEqual((RealAlgebraicNumber(-123) / 10).minimal_polynomial,
114+
[123, 10])
115+
self.assertEqual((RealAlgebraicNumber(-128) / 10).minimal_polynomial,
116+
[64, 5])
117+
self.assertEqual((-(RealAlgebraicNumber(123)
118+
** (RealAlgebraicNumber(1) / 2))
119+
).minimal_polynomial,
120+
[-123, 0, 1])
121+
122+
def test_degree(self):
123+
self.assertEqual(RealAlgebraicNumber(123).degree, 1)
124+
self.assertEqual((RealAlgebraicNumber(123) / 10).degree, 1)
125+
self.assertEqual((RealAlgebraicNumber(128) / 10).degree, 1)
126+
self.assertEqual((RealAlgebraicNumber(123)
127+
** (RealAlgebraicNumber(1) / 2)).degree, 2)
128+
self.assertEqual(RealAlgebraicNumber(-123).degree, 1)
129+
self.assertEqual((RealAlgebraicNumber(-123) / 10).degree, 1)
130+
self.assertEqual((RealAlgebraicNumber(-128) / 10).degree, 1)
131+
self.assertEqual((-(RealAlgebraicNumber(123)
132+
** (RealAlgebraicNumber(1) / 2))
133+
).degree, 2)
134+
self.assertEqual((-(RealAlgebraicNumber(123)
135+
** (RealAlgebraicNumber(1) / 3))
136+
).degree, 3)
137+
self.assertEqual((-(RealAlgebraicNumber(123)
138+
** (RealAlgebraicNumber(1) / 4))
139+
).degree, 4)
140+
141+
def test_is_integer(self):
142+
self.assertEqual(RealAlgebraicNumber(123).is_integer(), True)
143+
self.assertEqual((RealAlgebraicNumber(123) / 10).is_integer(), False)
144+
self.assertEqual((RealAlgebraicNumber(128) / 10).is_integer(), False)
145+
self.assertEqual((RealAlgebraicNumber(123)
146+
** (RealAlgebraicNumber(1) / 2)).is_integer(), False)
147+
self.assertEqual(RealAlgebraicNumber(-123).is_integer(), True)
148+
self.assertEqual((RealAlgebraicNumber(-123) / 10).is_integer(), False)
149+
self.assertEqual((RealAlgebraicNumber(-128) / 10).is_integer(), False)
150+
self.assertEqual((-(RealAlgebraicNumber(123)
151+
** (RealAlgebraicNumber(1) / 2))
152+
).is_integer(), False)
153+
154+
def test_is_rational(self):
155+
self.assertEqual(RealAlgebraicNumber(123).is_rational(), True)
156+
self.assertEqual((RealAlgebraicNumber(123) / 10).is_rational(), True)
157+
self.assertEqual((RealAlgebraicNumber(128) / 10).is_rational(), True)
158+
self.assertEqual((RealAlgebraicNumber(123)
159+
** (RealAlgebraicNumber(1) / 2)).is_rational(),
160+
False)
161+
self.assertEqual(RealAlgebraicNumber(-123).is_rational(), True)
162+
self.assertEqual((RealAlgebraicNumber(-123) / 10).is_rational(), True)
163+
self.assertEqual((RealAlgebraicNumber(-128) / 10).is_rational(), True)
164+
self.assertEqual((-(RealAlgebraicNumber(123)
165+
** (RealAlgebraicNumber(1) / 2))
166+
).is_rational(), False)
167+
168+
def test_recip(self):
169+
self.assertEqual(RealAlgebraicNumber(123).recip().minimal_polynomial,
170+
[-1, 123])
171+
self.assertEqual((RealAlgebraicNumber(123) / 10
172+
).recip().minimal_polynomial,
173+
[-10, 123])
174+
self.assertEqual((RealAlgebraicNumber(128) / 10
175+
).recip().minimal_polynomial,
176+
[-5, 64])
177+
self.assertEqual((-(RealAlgebraicNumber(123)
178+
** (RealAlgebraicNumber(1) / 2))
179+
).recip().minimal_polynomial,
180+
[1, 0, -123])
181+
182+
def test_recip_zero(self):
183+
with self.assertRaises(ZeroDivisionError):
184+
RealAlgebraicNumber(0).recip()
185+
186+
def test_add(self):
187+
self.assertEqual(RealAlgebraicNumber(1) + 2, 3)
188+
self.assertEqual(1 + RealAlgebraicNumber(2), 3)
189+
self.assertEqual(RealAlgebraicNumber(1) + RealAlgebraicNumber(2), 3)
190+
191+
def test_sub(self):
192+
self.assertEqual(RealAlgebraicNumber(1) - 2, -1)
193+
self.assertEqual(1 - RealAlgebraicNumber(2), -1)
194+
self.assertEqual(RealAlgebraicNumber(1) - RealAlgebraicNumber(2), -1)
195+
196+
def test_mul(self):
197+
self.assertEqual(RealAlgebraicNumber(1) * 2, 2)
198+
self.assertEqual(1 * RealAlgebraicNumber(2), 2)
199+
self.assertEqual(RealAlgebraicNumber(1) * RealAlgebraicNumber(2), 2)
200+
201+
def test_div(self):
202+
self.assertEqual(RealAlgebraicNumber(1) / 2,
203+
RealAlgebraicNumber(1) / 2)
204+
self.assertEqual(1 / RealAlgebraicNumber(2),
205+
RealAlgebraicNumber(1) / 2)
206+
self.assertEqual(RealAlgebraicNumber(1) / RealAlgebraicNumber(2),
207+
RealAlgebraicNumber(1) / 2)
208+
209+
def test_div_zero(self):
210+
with self.assertRaises(ZeroDivisionError):
211+
RealAlgebraicNumber(1) / 0
212+
with self.assertRaises(ZeroDivisionError):
213+
RealAlgebraicNumber(-1) / 0
214+
with self.assertRaises(ZeroDivisionError):
215+
RealAlgebraicNumber(0) / 0
216+
217+
def test_pow(self):
218+
self.assertEqual(RealAlgebraicNumber(1) ** 2, 1)
219+
self.assertEqual(1 ** RealAlgebraicNumber(2), 1)
220+
self.assertEqual(RealAlgebraicNumber(1) ** RealAlgebraicNumber(2), 1)
221+
222+
def test_neg(self):
223+
self.assertEqual(-RealAlgebraicNumber(1), -1)
224+
self.assertEqual(-RealAlgebraicNumber(-2), 2)
225+
226+
def test_abs(self):
227+
self.assertEqual(abs(RealAlgebraicNumber(1)), 1)
228+
self.assertEqual(abs(RealAlgebraicNumber(-2)), 2)
47229

48230

49231
if __name__ == '__main__':

0 commit comments

Comments
 (0)