Skip to content

Commit dfc2651

Browse files
committed
Added solutions to doctest
1 parent 5763dd0 commit dfc2651

File tree

3 files changed

+285
-162
lines changed

3 files changed

+285
-162
lines changed

sciware_testing_python/sciware_testing_python.py

Lines changed: 13 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,6 @@ def sum_numbers(number_list):
1919
-----
2020
This is NOT good Python, just an example function for tests.
2121
22-
Examples
23-
--------
24-
>>> number_list = [2,3,4]
25-
>>> sum_numbers(number_list)
26-
9
2722
"""
2823

2924
sum_val = 0
@@ -33,64 +28,30 @@ def sum_numbers(number_list):
3328
return sum_val
3429

3530

36-
def max_number(number_list):
37-
"""Example function. Finds max of list of numbers using a for loop.
31+
def add_vectors(vector_1, vector_2):
32+
"""Example function. Sums the same index elements of two list of numbers.
3833
3934
Parameters
4035
----------
41-
number_list : list
36+
v1 : list
37+
List of ints or floats
38+
39+
v2 : list
4240
List of ints or floats
4341
4442
Returns
4543
-------
46-
int or float
47-
Sum of list
44+
list
45+
Sum of lists
4846
4947
Notes
5048
-----
51-
Also not good Python.
52-
49+
This is NOT good Python, just an example function for tests.
5350
54-
Examples
55-
--------
56-
>>> number_list = [2,3,4]
57-
>>> max_number(number_list)
58-
4
5951
"""
52+
sum_vec = []
6053

61-
cur_max = number_list[0]
62-
for n in number_list[1:]:
63-
if n > cur_max:
64-
cur_max = n
65-
66-
return cur_max
67-
68-
# std::vector<double> add_vectors(std::vector<double> &v1, std::vector<double> &v2)
69-
# {
70-
# // Check inputs
71-
# if (v1.size() != v2.size())
72-
# {
73-
# throw std::invalid_argument("There's a mismatch in vector size" + std::to_string(v1.size()) + "!=" + std::to_string(v2.size()));
74-
# }
75-
76-
# //
77-
# // Solution 1
78-
# //
79-
80-
# // Add the vectors
81-
# std::vector<double> new_vector(v1.size());
82-
83-
# for (size_t i = 0; i < v1.size(); i++)
84-
# {
85-
# new_vector[i] = v1[i] + v2[i];
86-
# }
87-
88-
# //
89-
# // Solution 2
90-
# //
91-
92-
# // std::vector<double> new_vector = v1;
93-
# // std::transform(new_vector.begin(), new_vector.end(), v2.begin(), new_vector.begin(), std::plus<double>());
54+
for a, b in zip(vector_1, vector_2):
55+
sum_vec += [a + b]
9456

95-
# return new_vector;
96-
# }
57+
return sum_vec
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
# -*- coding: utf-8 -*-
2+
"""Main module template with example functions."""
3+
4+
5+
def sum_numbers(number_list):
6+
"""Example function. Sums a list of numbers using a for loop.
7+
8+
Parameters
9+
----------
10+
number_list : list
11+
List of ints or floats
12+
13+
Returns
14+
-------
15+
int or float
16+
Sum of list
17+
18+
Notes
19+
-----
20+
This is NOT good Python, just an example function for tests.
21+
22+
Examples
23+
--------
24+
>>> number_list = [2, 3, 4]
25+
>>> sum_numbers(number_list)
26+
9
27+
28+
Empty lists are returned as zero
29+
>>> zero_number_list = []
30+
>>> sum_numbers(zero_number_list)
31+
0
32+
33+
Does not sum strings. Will return value error
34+
>>> not_number_list = [2, 3, 'stuff']
35+
>>> sum_numbers(not_number_list) # doctest: +IGNORE_EXCEPTION_DETAIL
36+
Traceback (most recent call last):
37+
raise ValueError(
38+
ValueError: sum_numbers sums a list containing only ints and floats
39+
40+
Nor will it sum list of lists, dicts, sets, or tuples.
41+
# doctest: +IGNORE_EXCEPTION_DETAIL
42+
>>> another_not_number_list = [[4], 5]
43+
>>> sum_numbers(another_not_number_list)
44+
Traceback (most recent call last):
45+
raise ValueError(
46+
ValueError: ...
47+
48+
Bools are alright though.
49+
>>> bool_list = [True, False, False, True, True]
50+
>>> sum_numbers(bool_list)
51+
3
52+
53+
Will sum tuples
54+
>>> number_tuple = (4, 9, 16)
55+
>>> sum_numbers(number_tuple)
56+
29
57+
58+
"""
59+
60+
sum_val = 0
61+
for n in number_list:
62+
if not isinstance(n, (float, int)):
63+
raise ValueError(
64+
'sum_numbers sums a list containing only ints and floats.')
65+
sum_val += n
66+
67+
return sum_val
68+
69+
70+
def add_vectors(vector_1, vector_2):
71+
"""Example function. Sums the same index elements of two list of numbers.
72+
73+
Parameters
74+
----------
75+
v1 : list
76+
List of ints or floats
77+
78+
v2 : list
79+
List of ints or floats
80+
81+
Returns
82+
-------
83+
list
84+
Sum of lists
85+
86+
Notes
87+
-----
88+
This is NOT good Python, just an example function for tests.
89+
90+
Examples
91+
--------
92+
>>> v1 = [2, 3, 4]
93+
>>> v2 = [4, 9, 16]
94+
>>> add_vectors(v1, v2)
95+
[6, 12, 20]
96+
97+
Will not sum vectors of different lengths
98+
>>> v3 = [2, 3, 4]
99+
>>> v4 = [4, 9, 16, 25]
100+
>>> add_vectors(v3, v4) # doctest: +IGNORE_EXCEPTION_DETAIL
101+
Traceback (most recent call last):
102+
raise RuntimeError(
103+
RuntimeError: add_vectors can only add vectors of the same length.
104+
105+
Adding two empty vectors will also return an empty vector
106+
Will not sum vectors of different lengths
107+
>>> v0 = []
108+
>>> add_vectors(v0, v0) # doctest: +IGNORE_EXCEPTION_DETAIL
109+
[]
110+
111+
Will only take lists
112+
>>> t1 = (2, 4, 8)
113+
>>> t2 = (3, 9, 27)
114+
>>> add_vectors(t1, t2) # doctest: +IGNORE_EXCEPTION_DETAIL
115+
Traceback (most recent call last):
116+
raise ValueError(
117+
ValueError: add_vectors can only sum vectors that are lists.
118+
119+
"""
120+
sum_vec = []
121+
if len(vector_1) != len(vector_2):
122+
raise RuntimeError(
123+
'add_vectors can only add vectors of the same length.')
124+
125+
if not isinstance(vector_1, list) or not isinstance(vector_2, list):
126+
raise ValueError(
127+
'add_vectors can only sum vectors that are lists.')
128+
129+
for a, b in zip(vector_1, vector_2):
130+
sum_vec += [a + b]
131+
132+
return sum_vec
133+
134+
135+
# std::vector<double> add_vectors(std::vector<double> &v1, std::vector<double> &v2)
136+
# {
137+
# // Check inputs
138+
# if (v1.size() != v2.size())
139+
# {
140+
# throw std::invalid_argument("There's a mismatch in vector size" + std::to_string(v1.size()) + "!=" + std::to_string(v2.size()));
141+
# }
142+
143+
# //
144+
# // Solution 1
145+
# //
146+
147+
# // Add the vectors
148+
# std::vector<double> new_vector(v1.size());
149+
150+
# for (size_t i = 0; i < v1.size(); i++)
151+
# {
152+
# new_vector[i] = v1[i] + v2[i];
153+
# }
154+
155+
# //
156+
# // Solution 2
157+
# //
158+
159+
# // std::vector<double> new_vector = v1;
160+
# // std::transform(new_vector.begin(), new_vector.end(), v2.begin(), new_vector.begin(), std::plus<double>());
161+
162+
# return new_vector;
163+
# }

0 commit comments

Comments
 (0)