Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion src/pytest_regressions/num_regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,21 @@ def check(

__tracebackhide__ = True

for k, obj in data_dict.items():
Comment thread
jpn-- marked this conversation as resolved.
if not isinstance(obj, np.ndarray):
try:
arr = np.atleast_1d(np.asarray(obj))
except:
Comment thread
jpn-- marked this conversation as resolved.
Outdated
raise
else:
if np.issubdtype(arr.dtype, np.number):
data_dict[k] = arr

data_shapes = []
for obj in data_dict.values():
assert type(obj) in [
np.ndarray
], "Only numpy arrays are valid for numeric_data_regression fixture.\n"
], "Only objects that can be coerced to numpy arrays are valid for numeric_data_regression fixture.\n"
shape = obj.shape

assert len(shape) == 1, (
Expand Down
36 changes: 36 additions & 0 deletions tests/test_num_regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,3 +257,39 @@ def test_arrays_of_same_size(num_regression):
"world": np.zeros((1,), dtype=np.int),
}
num_regression.check(same_size_int_arrays)


def test_simple_numbers(num_regression, data_regression):
data1 = 1.1
data2 = 2
num_regression.check({"data1": data1, "data2": data2})
data_regression.check({"data1": data1, "data2": data2})
data1 += 0.00000001
num_regression.check({"data1": data1, "data2": data2}) # passes, within tol
with pytest.raises(
AssertionError,
match="FILES DIFFER.*",
):
data_regression.check({"data1": data1, "data2": data2}) # fails, must be exact


def test_simple_list_of_numbers(num_regression):
data1 = [1.1, 1.1, 1.1]
data2 = [2, 2, 2]
num_regression.check({"data1": data1, "data2": data2})


def test_simple_tuple_of_numbers(num_regression):
data1 = (1.1, 1.1, 1.1)
data2 = (2, 2, 2)
num_regression.check({"data1": data1, "data2": data2})


def test_simple_list_of_mostly_numbers(num_regression):
data1 = [1.1, "not a number", 1.1]
data2 = [2, 2, 2]
with pytest.raises(
AssertionError,
match="Only objects that can be coerced to numpy arrays are valid for numeric_data_regression fixture.",
):
num_regression.check({"data1": data1, "data2": data2})
2 changes: 2 additions & 0 deletions tests/test_num_regression/test_simple_floats.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
,data1,data2
0,1.1000000000000001,2.2000000000000002
4 changes: 4 additions & 0 deletions tests/test_num_regression/test_simple_list_of_numbers.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
,data1,data2
0,1.1000000000000001,2
1,1.1000000000000001,2
2,1.1000000000000001,2
2 changes: 2 additions & 0 deletions tests/test_num_regression/test_simple_numbers.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
,data1,data2
0,1.1000000000000001,2
2 changes: 2 additions & 0 deletions tests/test_num_regression/test_simple_numbers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
data1: 1.1
data2: 2
4 changes: 4 additions & 0 deletions tests/test_num_regression/test_simple_tuple_of_numbers.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
,data1,data2
0,1.1000000000000001,2
1,1.1000000000000001,2
2,1.1000000000000001,2