Skip to content

Commit 46ea2a5

Browse files
author
meshmote
committed
Setting up repo and test code for ticker project
1 parent 06fc9b2 commit 46ea2a5

File tree

7 files changed

+215
-4
lines changed

7 files changed

+215
-4
lines changed

Students/RPerkins/session07/circleHW.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ class Circle(object):
88
def __init__(self, radius):
99
self.radius = float(radius)
1010

11+
@classmethod
12+
def from_diameter(cls, diameter):
13+
return cls(diameter / 2.0)
14+
1115
@property
1216
def diameter(self):
1317
return self.radius * 2.0
@@ -18,4 +22,7 @@ def diameter(self, value):
1822

1923
@property
2024
def area(self):
21-
return self.radius**2 * pi
25+
return self.radius**2 * pi
26+
27+
def __repr__(self):
28+
return "Circle(%s)"%self.radius

Students/RPerkins/session07/test_circleHW.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
__author__ = 'Robert W. Perkins'
22

33

4-
from circleHW import Circle
54
import pytest
5+
from circleHW import Circle
66
from math import pi
77

88

@@ -19,11 +19,13 @@ def test_radius():
1919
def test_no_radius():
2020
c = Circle()
2121
with pytest.raises(TypeError):
22+
c.radius = None
2223

2324

2425
def test_set_radius():
2526
c = Circle(3)
2627
c.radius = 5
28+
2729
assert c.radius == 5
2830

2931

@@ -33,9 +35,9 @@ def test_diam():
3335

3436

3537
def test_radius_change():
36-
3738
c = Circle(3)
3839
c.radius = 4
40+
3941
assert c.diameter == 8
4042

4143

@@ -49,10 +51,25 @@ def test_set_diameter():
4951

5052
def test_area():
5153
c = Circle(2)
54+
5255
assert c.area == pi*4
5356

5457

5558
def test_set_area():
5659
c = Circle(2)
5760
with pytest.raises(AttributeError):
58-
c.area = 30
61+
c.area = 30
62+
63+
64+
def test_from_diameter():
65+
c = Circle.from_diameter(4)
66+
67+
assert isinstance(c, Circle)
68+
assert c.radius == 2
69+
assert c.diameter == 4
70+
71+
72+
def test_repr():
73+
c = Circle(6.0)
74+
75+
assert repr(c) == 'Circle(6.0)'
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env python
2+
3+
"""
4+
Simple iterator examples
5+
"""
6+
7+
8+
class IterateMe(object):
9+
"""
10+
About as simple an iterator as you can get:
11+
12+
returns the sequence of numbers from zero to 4
13+
( like xrange(4) )
14+
"""
15+
def __init__(self, stop, *args):
16+
self.step = 1
17+
if not args:
18+
self.start = -1
19+
self.stop = stop
20+
else:
21+
self.start = stop
22+
self.stop = args[0]
23+
if len(args) == 2:
24+
self.step = args[1]
25+
26+
def __iter__(self):
27+
self.current = self.start
28+
return self
29+
30+
def next(self):
31+
self.current += 1
32+
if self.current < self.stop:
33+
return self.current
34+
else:
35+
raise StopIteration
36+
37+
if __name__ == "__main__":
38+
39+
print "Testing the iterator"
40+
for i in IterateMe():
41+
print i
42+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
__author__ = 'Robert W. Perkins'
2+
3+
4+
class Quadratic(object):
5+
def __init__(self, a, b, c):
6+
self.a = a
7+
self.b = b
8+
self.c = c
9+
10+
def __call__(self, x):
11+
return self.a * x**2 + self.b * x + self.c
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
__author__ = 'Robert W. Perkins'
2+
3+
4+
class SparseArray(object):
5+
def __init__(self, in_sequence):
6+
self.s_array = {i: in_sequence[i] for i in in_sequence}
7+
8+
def __call__(self, x):
9+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/env python
2+
3+
"""
4+
test code for the quadratic function evaluator
5+
"""
6+
7+
import pytest
8+
9+
from quadratic import Quadratic
10+
11+
12+
def test_init():
13+
q = Quadratic(1, 2, 3)
14+
15+
16+
def test_evaluate():
17+
q = Quadratic(1, 2, 3)
18+
19+
assert q(3) == 9 + 6 + 3
20+
assert q(0) == 3
21+
22+
23+
def test_evaluate2():
24+
q = Quadratic(2, 1, -3)
25+
26+
assert q(0) == -3
27+
assert q(1) == 2 + 1 - 3
28+
assert q(-2) == 8 - 2 - 3
29+
30+
31+
def test_bad_input():
32+
33+
with pytest.raises(TypeError):
34+
q = Quadratic(2,3)
35+
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import pytest
2+
from sparse_array import SparseArray
3+
4+
5+
def set_up():
6+
my_array = [2, 0, 0, 0, 3, 0, 0, 0, 4, 5, 6, 0, 2, 9]
7+
my_sparse = SparseArray(my_array)
8+
return (my_array, my_sparse)
9+
10+
11+
def test_object_exists():
12+
my_array, my_sparse = set_up()
13+
assert isinstance(my_sparse, SparseArray)
14+
15+
16+
def test_get_non_zero_number():
17+
my_array, my_sparse = set_up()
18+
assert my_sparse[4] == 3
19+
20+
21+
def test_get_zero():
22+
my_array, my_sparse = set_up()
23+
assert my_sparse[1] == 0
24+
25+
26+
def test_get_element_not_in_array():
27+
my_array, my_sparse = set_up()
28+
with pytest.raises(IndexError):
29+
my_sparse[14]
30+
31+
32+
def test_get_lenght():
33+
my_array, my_sparse = set_up()
34+
assert len(my_sparse) == 14
35+
36+
37+
def test_change_number_in_array():
38+
my_array, my_sparse = set_up()
39+
my_sparse[0] = 3
40+
assert my_sparse[0] == 3
41+
# make sure others aren't changed
42+
assert my_sparse[1] == 0
43+
# make sure still same length
44+
assert len(my_sparse) == 14
45+
46+
47+
def test_change_number_in_array_to_zero():
48+
my_array, my_sparse = set_up()
49+
my_sparse[4] = 0
50+
assert my_sparse[4] == 0
51+
# make sure still same length
52+
assert len(my_sparse) == 14
53+
54+
55+
def test_change_number_in_array_from_zero():
56+
my_array, my_sparse = set_up()
57+
my_sparse[1] = 4
58+
assert my_sparse[1] == 4
59+
# make sure still same length
60+
assert len(my_sparse) == 14
61+
62+
63+
def test_delete_number():
64+
my_array, my_sparse = set_up()
65+
del(my_sparse[4])
66+
# if we delete the 4 position, should now be zero
67+
assert my_sparse[4] == 0
68+
# should have smaller length
69+
assert len(my_sparse) == 13
70+
71+
72+
def test_delete_zero():
73+
my_array, my_sparse = set_up()
74+
del(my_sparse[5])
75+
# should still be zero, but should have shorter length
76+
assert my_sparse[5] == 0
77+
assert len(my_sparse) == 13
78+
79+
80+
def test_delete_last_number():
81+
my_array, my_sparse = set_up()
82+
del(my_sparse[13])
83+
# should get an error?
84+
print 'print some stuff damnit'
85+
with pytest.raises(IndexError):
86+
my_sparse[13]
87+
assert len(my_sparse) == 13
88+
89+
90+

0 commit comments

Comments
 (0)