Skip to content

Commit 60bb2b1

Browse files
Adding unittesting to 6 problems and fixed a few bugs that existed in ported solutions. Did they not check their work?
1 parent d5b241c commit 60bb2b1

6 files changed

Lines changed: 155 additions & 20 deletions

File tree

solutions/python/array-pair-sum.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def test_one(self):
7272

7373
def test_two(self):
7474
self.assertEqual(
75-
array_pair_sum_iterative(self.arr2, 8), self.result2)
75+
array_pair_sum_iterative(self.arr2, 8), self.result2) # currently failing
7676
self.assertEqual(
7777
array_pair_sum_sort(self.arr2, 8), self.result2)
7878
self.assertEqual(

solutions/python/csv-sort.py

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,37 @@
1-
from future import print_function
1+
from __future__ import print_function
22
import unittest
33

4-
def csv_sort( string ):
5-
items=[x for x in input().split(',')]
4+
def csv_sort( string , console_out=True):
5+
items=[x for x in string.split(',')]
66
items.sort()
7-
print( ','.join(items) )
7+
if console_out:
8+
print( ','.join(items) )
9+
else:
10+
return ','.join(items)
11+
12+
13+
14+
# Unit tests
15+
class csv_sort_tests(unittest.TestCase):
16+
17+
def setUp(self):
18+
self.stringOne = "33,44,55,11,22"
19+
self.stringTwo = "a,f,d,z,y,e"
20+
self.stringEdge = ""
21+
self.stringEdgeTwo = "z,z,z,z,z,z,z"
22+
23+
def test_csv_sort_one(self):
24+
self.assertEqual(
25+
csv_sort(self.stringOne, False), "11,22,33,44,55"
26+
)
27+
self.assertEqual(
28+
csv_sort(self.stringTwo, False), "a,d,e,f,y,z"
29+
)
30+
self.assertEqual( csv_sort(self.stringEdge, False), "" )
31+
self.assertEqual(
32+
csv_sort(self.stringEdgeTwo, False), "z,z,z,z,z,z,z"
33+
)
34+
35+
if __name__ == '__main__':
36+
print("Tests started")
37+
unittest.main()

solutions/python/fizz-buzz.py

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def fizz_buzz_one( start, end ):
1717
fizzbuzz += str(i)
1818

1919
fizzbuzz += ' '
20-
return fizzbuzz
20+
return fizzbuzz.rstrip() # remove trailing whitespace
2121

2222

2323
def fizz_buzz_two( start, end ):
@@ -60,8 +60,44 @@ def fizz_buzz_four( start, end ):
6060
for i in range(start, end+1):
6161
fizz = (i % 3 == 0)
6262
buzz = (i % 5 == 0)
63-
if fizz and buzz: result.append('Fizzbuzz')
64-
elif fizz: result.append('Fizz')
65-
elif buzz: result.append('Buzz')
63+
if fizz and buzz: result.append('fizzbuzz')
64+
elif fizz: result.append('fizz')
65+
elif buzz: result.append('buzz')
6666
else: result.append(i)
6767
return result
68+
69+
70+
# Unit testing
71+
class fizz_buzz_tests(unittest.TestCase):
72+
73+
def setUp(self):
74+
pass
75+
76+
def test_fizz_buzz_one(self):
77+
self.assertEqual(
78+
fizz_buzz_one(0, 12), "fizzbuzz 1 2 fizz 4 buzz fizz 7 8 fizz buzz 11 fizz"
79+
)
80+
self.assertEqual(fizz_buzz_one(0, 0), "fizzbuzz")
81+
self.assertEqual(fizz_buzz_one(14,16), "14 fizzbuzz 16")
82+
83+
def test_fizz_buzz_two(self):
84+
self.assertEqual(
85+
fizz_buzz_two(5, 12), ['buzz', 'fizz', 7, 8, 'fizz', 'buzz', 11, 'fizz']
86+
)
87+
self.assertEqual(
88+
fizz_buzz_two(5, -2), []
89+
)
90+
91+
def test_fizz_buzz_three(self):
92+
self.assertEqual(
93+
fizz_buzz_three(5, 12), ['buzz', 'fizz', 7, 8, 'fizz', 'buzz', 11, 'fizz']
94+
)
95+
96+
def test_fizz_buzz_four(self):
97+
self.assertEqual(
98+
fizz_buzz_four(5, 12), ['buzz', 'fizz', 7, 8, 'fizz', 'buzz', 11, 'fizz']
99+
)
100+
101+
102+
if __name__ == '__main__':
103+
unittest.main()

solutions/python/gender-inheritance.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,20 @@ class Female( Person ):
1212
def getGender( self ):
1313
return "Female"
1414

15+
# Unittests
16+
class gender_inheritance_tests(unittest.TestCase):
17+
18+
def setUp(self):
19+
self.male = Male()
20+
self.female = Female()
21+
22+
def test_gender_inheritance(self):
23+
self.assertEqual( self.male.getGender(), "Male" )
24+
self.assertEqual( self.female.getGender(), "Female")
25+
1526
if __name__ == '__main__':
1627
aFemale = Female()
17-
aMale = aMale()
28+
aMale = Male()
1829
print( aMale.getGender() )
1930
print( aFemale.getGender() )
31+
unittest.main()
Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,28 @@
11
import unittest
22

3-
def solve_heads_tails( numheads, numlegs ):
3+
def solve_heads_tails_one( numheads, numlegs ):
44
ns = 'No Solutions!'
55
for i in range(numheads+1): # Using a loop to iterate all possible solutions
66
j = numheads - i
77
if 2*i+4*j == numlegs:
88
return i, j
99
return ns, ns
10+
11+
def solve_heads_tails_two( numheads, numlegs ):
12+
raise NotImplementedError # nothing yet, somebody add something!
13+
14+
15+
# Unit Testing
16+
class solve_heads_tails_tests(unittest.TestCase):
17+
18+
def setUp(self):
19+
pass
20+
21+
def test_solve_heads_tails_one(self):
22+
self.assertEqual(
23+
solve_heads_tails_one(35, 94), (23, 12)
24+
)
25+
26+
27+
if __name__ == '__main__':
28+
unittest.main()
Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,55 @@
11
"""solution to the largest-continuous-sum problem"""
2+
import unittest
3+
from functools import reduce
24

3-
def largest_continuous_sum(arr):
4-
"""returns the highest sum of a continuous sequence in a given list"""
5-
5+
def largest_continuous_sum_one(arr):
6+
""" returns the largest continous sub sequence in the given list of numbers. """
67
largest = 0
78
queue = []
89
for num in arr:
9-
if len(queue) > 0 and queue[-1] + 1 != num:
10-
sum = reduce(lambda x, y: x + y, queue)
11-
if largest < sum:
12-
largest = sum
13-
queue = []
14-
1510
queue.append(num)
11+
if len(queue) > 1:
12+
curr_sum = reduce(lambda x, y: x + y, queue)
13+
curr_sum = curr_sum if curr_sum > num else num
14+
if largest < curr_sum:
15+
largest = curr_sum
1616

1717
return largest
18+
19+
20+
21+
def largest_continous_sum_two(arr):
22+
if len(arr) == 0: # handle an edge case
23+
return None
24+
max_sum = current_sum = arr[0]
25+
for num in arr[1:]:
26+
current_sum=max(current_sum+num, num)
27+
max_sum=max(current_sum, max_sum)
28+
return max_sum
29+
30+
31+
# Unit testing
32+
class largest_continous_sum_test(unittest.TestCase):
33+
34+
def setUp(self):
35+
self.arrOne = [1,2,3,4,5]
36+
self.arrTwo = [4,5,1,-1000]
37+
38+
def test_largest_continuous_sum_one(self):
39+
self.assertEqual(
40+
largest_continuous_sum_one( self.arrOne ), 15
41+
)
42+
self.assertEqual(
43+
largest_continuous_sum_one( self.arrTwo ), 10
44+
)
45+
46+
def test_largest_continous_sum_two(self):
47+
self.assertEqual(
48+
largest_continous_sum_two( self.arrOne ) , 15
49+
)
50+
self.assertEqual(
51+
largest_continous_sum_two( self.arrTwo ), 10
52+
)
53+
54+
if __name__ == '__main__':
55+
unittest.main()

0 commit comments

Comments
 (0)