-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquadratic_function_pbt.py
48 lines (38 loc) · 1.32 KB
/
quadratic_function_pbt.py
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
import unittest
from hypothesis import given, strategies, example
from quadratic_function import QuadraticFunction
class MyTestCase(unittest.TestCase):
@given(
strategies.floats(
min_value=-100000,
max_value=100000
), strategies.floats(
min_value=-100000,
max_value=100000
), strategies.floats(
min_value=-100000,
max_value=100000
))
def test_root_always_zero(self, a, b, c):
f = QuadraticFunction(a, b, c)
# if not QuadraticFunction.same(a, 0):
roots = f.solve()
for x in roots:
self.assertAlmostEqual(0, f.y_for(x), places=2)
@given(strategies.floats(), strategies.floats(), strategies.floats())
def test_negative_determinant_no_result(self, a, b, c):
f = QuadraticFunction(a, b, c)
if f.determinant() < 0:
self.assertEqual(f.solve(), [])
@given(strategies.floats(), strategies.floats())
def test_determinant_0_single_result(self, a, c):
from math import sqrt
b_prime = 2 * a * c
if b_prime > 0:
b = sqrt(b_prime)
f = QuadraticFunction(a, b, c)
self.assertEqual(len(f.solve()), 1)
if __name__ == '__main__':
unittest.main()
# min_value=-1000,
# max_value=1000