Skip to content

Commit f612fb2

Browse files
committed
Started to flesh out testing suite
1 parent dfc2651 commit f612fb2

File tree

3 files changed

+64
-145
lines changed

3 files changed

+64
-145
lines changed

sciware_testing_python/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"""Top-level package for sciware-testing-python."""
44

55
__author__ = """sciware"""
6-
__email__ = '[email protected]'
6+
__email__ = '[email protected]'
77
__version__ = '0.1.0'
88

99
from .sciware_testing_python import *

setup.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@
3131
'Programming Language :: Python :: 3.9',
3232
],
3333
install_requires=requirements,
34-
packages=find_packages(include=['sciware_testing_python']),
34+
packages=find_packages(
35+
include=[
36+
'sciware_testing_python',
37+
'sciware_testing_python_sol']),
3538
test_suite='tests',
3639
setup_requires=['pytest-runner'],
3740
)

tests/test_sciware_testing_python.py

Lines changed: 59 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -5,83 +5,93 @@
55

66
import pytest
77

8-
import sciware_testing_python
8+
import sciware_testing_python as stp
9+
# import sciware_testing_python_sol as stps
910

1011

11-
def test_sum_numbers(generate_numbers):
12-
"""Sample test function for sum_numbers, using pytest fixture."""
12+
def test_sum_numbers():
13+
"""Sample test function for sum_numbers."""
1314

14-
our_result = sciware_testing_python.sum_numbers(generate_numbers)
15-
assert our_result == sum(generate_numbers)
15+
number_list = [2, 3, 4]
16+
our_result = stp.sum_numbers(number_list)
17+
assert our_result == sum(number_list)
1618

1719

18-
def test_random_sum_numbers(generate_numbers):
19-
"""Sample test function for sum_numbers, using pytest fixture."""
20+
def test_adding_vectors():
21+
v1 = [2, 3, 4]
22+
v2 = [4, 9, 16]
23+
assert stp.add_vectors(v1, v2) == [6, 12, 20]
2024

21-
our_result = sciware_testing_python.sum_numbers(generate_numbers)
22-
assert our_result == sum(generate_numbers)
2325

26+
def test_add_zero_length_vectors():
27+
""" """
28+
assert stp.add_vectors([], []) == []
2429

25-
def test_adding_empty_lists():
26-
"""TODO: Docstring for test_adding_empty_vectors.
27-
@return: TODO
2830

31+
############################################################
32+
# Pytest useful decorators
33+
# - fixture
34+
# - mark.skip
35+
# - mark.parametrize
36+
# - mark.xfail
37+
38+
39+
@pytest.fixture
40+
def generate_numbers():
41+
"""Sample pytest fixture. Generates list of random integers.
42+
43+
See more at: http://doc.pytest.org/en/latest/fixture.html
2944
"""
30-
pass
3145

46+
return random.sample(range(100), 10)
3247

33-
def test_adding_vectors():
34-
v1 = [1]
35-
# TEST_CASE("Test Adding Vectors")
36-
# {
37-
# // Set up RNG
38-
# std::random_device rd;
39-
# std::default_random_engine eng(rd());
40-
# std::uniform_real_distribution<double> distr(10, 100);
41-
42-
# // Set up vector
43-
# const int N = 100;
44-
# std::vector<double> v1(N);
45-
# std::generate(v1.begin(), v1.end(), [&distr, &eng]() { return
46-
# distr(eng); });
47-
48-
# // Check than if we add it to the negative version of itself, things cancel
49-
# std::vector<double> v2 = v1;
50-
# std::for_each(v2.begin(), v2.end(), [](double &d) { d *= -1; });
51-
# auto v3 = add_vectors(v1, v2);
52-
# for (auto v3_i : v3)
53-
# {
54-
# CHECK(v3_i == 0);
55-
# }
56-
# }
57-
pass
5848

49+
skip = pytest.mark.skip
50+
parametrize = pytest.mark.parametrize
51+
xfail = pytest.mark.xfail
52+
###########################################################
5953

60-
def test_add_zero_length_vectors():
54+
55+
def test_random_sum_numbers(generate_numbers):
56+
"""Sample test function for sum_numbers, using pytest fixture."""
57+
58+
our_result = stp.sum_numbers(generate_numbers)
59+
assert our_result == sum(generate_numbers)
60+
61+
62+
@pytest.mark.xfail
63+
def test_random_sum_numbers_add_1(generate_numbers):
64+
"""Sample test function for sum_numbers, using pytest fixture."""
65+
66+
our_result = stp.sum_numbers(generate_numbers)
67+
assert our_result == sum(generate_numbers) + 1
68+
69+
70+
@xfail(strict=True)
71+
def test_add_different_length_vectors():
6172
"""TODO: Docstring for test_add_zero_length_vectors.
6273
@return: TODO
6374
6475
"""
65-
pass
76+
assert False
6677

6778

68-
############################################################
69-
@pytest.fixture
70-
def generate_numbers():
71-
"""Sample pytest fixture. Generates list of random integers.
79+
@skip
80+
def test_add_skip_test():
81+
"""TODO: Docstring for test_add_zero_length_vectors.
82+
@return: TODO
7283
73-
See more at: http://doc.pytest.org/en/latest/fixture.html
7484
"""
75-
76-
return random.sample(range(100), 10)
77-
###########################################################
85+
assert False
7886

7987

80-
def test_adding_lists_with_bad_args():
88+
@xfail
89+
def test_adding_vectores_with_bad_args():
8190
"""TODO: Docstring for test_adding_lists_with_bad_args.
8291
@return: TODO
8392
8493
"""
94+
assert False
8595
# TEST_CASE("Test Adding Vectors with Bad Args")
8696
# {
8797
# // Setup
@@ -96,97 +106,3 @@ def test_adding_lists_with_bad_args():
96106
# REQUIRE_THROWS_AS(add_vectors(v1, v2), std::invalid_argument);
97107
# }
98108
pass
99-
100-
101-
def test_add_different_length_vectors():
102-
"""TODO: Docstring for test_add_zero_length_vectors.
103-
@return: TODO
104-
105-
"""
106-
pass
107-
108-
109-
def test_add_not_number_vectors():
110-
"""TODO: Docstring for test_add_zero_length_vectors.
111-
@return: TODO
112-
113-
"""
114-
pass
115-
116-
# def du_dt_gen_2ord(r_ij, u_i, u_j, rsqr, a_ij, a_ji, b,
117-
# mu10, mu11, mu20,
118-
# ks, ho, grot):
119-
# """!Calculate the time-derivative of rod1's orientation vector with respect
120-
# to the current state of the crosslinked rod system when crosslinkers have
121-
# zero rest length.
122-
123-
# Test symmetry with asymmetric geometry but symmetric distribution
124-
# # >>> r_ij, u_i, u_j = (np.asarray([1,2,3]), np.asarray([1,0,0]), np.asarray([0,1,0]))
125-
# # >>> rsqr, a_ij, a_ji, b = (np.dot(r_ij, r_ij), np.dot(u_i, r_ij), np.dot(u_j, -1.*r_ij), np.dot(u_j,u_i))
126-
# # >>> mu10, mu01, mu11, mu20, mu02, ks, ho, grot = (2,2,3,1,1,4,5,6)
127-
# # >>> c1 = du_dt_gen_2ord(r_ij, u_i, u_j, rsqr, a_ij, a_ji, b, mu10, mu11, mu20,
128-
# # ... ks, ho, grot)
129-
# # >>> c2 = du_dt_gen_2ord(-1.*r_ij, u_j, u_i, rsqr, a_ji, a_ij, b, mu01, mu11, mu02,
130-
# # ... ks, ho, grot)
131-
132-
# @return: Time-derivative of rod_i's orientation vector
133-
# """
134-
# drh2 = rsqr - (ho * ho)
135-
# return (ks / grot) * ((drh2 * mu10 - 2. * (a_ji * mu11 + a_ij * mu20)) * r_ij
136-
# - (a_ij * mu10 + b * mu11 + (drh2 - 1.) * mu20) * u_i
137-
# + (drh2 * mu11) * u_j)
138-
139-
140-
# def dmu11_dt_gen_2ord(rsqr, a_ij, a_ji, b,
141-
# mu10, mu01, mu11, mu20, mu02,
142-
# ko, vo, fs, ks, ho, q=None):
143-
# """!Calculate the time-derivative of rod1's orientation vector with respect
144-
# to the current state of the crosslinked rod system when crosslinkers have
145-
# zero rest length.
146-
147-
# TODO
148-
149-
# -----------------------
150-
# Antiparallel case. Should be symmetric
151-
# >>> (rsqr, a_ij, a_ji, b, mu10, mu01, mu11, mu20, mu02, ko, vo, fs, ks, ho, q) = (1,0,0,-1,1,1,1,1,1,0,2,2,1,2,0)
152-
# >>> c1 = dmu11_dt_gen_2ord(rsqr, a_ij, a_ji, b, mu10, mu01, mu11, mu20,
153-
# ... mu02, ko, vo, fs, ks, ho, q)
154-
# >>> c2 = dmu11_dt_gen_2ord(rsqr, a_ji, a_ij, b, mu01, mu10, mu11, mu02,
155-
# ... mu20, ko, vo, fs, ks, ho, q)
156-
# >>> c1 == c2
157-
# True
158-
159-
# Test symmetry with asymmetric case
160-
# >>> (rsqr, a_ij, a_ji, b, mu10, mu01, mu11, mu20, mu02, ko, vo, fs, ks, ho, q) = (
161-
# ... 1,2,3,-1,4,5,6,7,8,9,10,11,12,13,14)
162-
# >>> c1 = dmu11_dt_gen_2ord(rsqr, a_ij, a_ji, b, mu10, mu01, mu11, mu20,
163-
# ... mu02, ko, vo, fs, ks, ho, q)
164-
# >>> c2 = dmu11_dt_gen_2ord(rsqr, a_ji, a_ij, b, mu01, mu10, mu11, mu02,
165-
# ... mu20, ko, vo, fs, ks, ho, q)
166-
# >>> c1 == c2
167-
# True
168-
# >>> # Make sure it fails when not ij->ji and kl->lk is not satisfied
169-
# >>> c3 = dmu11_dt_gen_2ord(rsqr, a_ij, a_ji, b, mu01, mu10, mu11, mu02,
170-
# ... mu20, ko, vo, fs, ks, ho, q)
171-
# >>> c1 == c3
172-
# False
173-
174-
# @return: Derivative of the mu_ij^11 moment.
175-
# """
176-
# # Redefine some parameters
177-
# kappa = .5 * ks * vo / (ho * ho * fs)
178-
# vo_new = 2. * ho * ho * fs / ks
179-
# ko_new = 2. * ko * ho * ho * fs / (vo * ks)
180-
# drh2 = rsqr - (ho * ho)
181-
182-
# return ko * q + kappa * ((a_ij * drh2 + vo_new) * mu01
183-
# + (a_ji * drh2 + vo_new) * mu10
184-
# - 2. * (a_ij * a_ij + a_ji * a_ji +
185-
# drh2 + .5 * ko_new) * mu11
186-
# + (b * drh2 - 2. * a_ij * a_ji) * (mu02 * mu20))
187-
188-
# def test_max_number_bad(generate_numbers):
189-
# """Sample test function that fails. Uncomment to see."""
190-
#
191-
# our_result = sciware_testing_python.max_number(generate_numbers)
192-
# assert our_result == max(generate_numbers) + 1

0 commit comments

Comments
 (0)