You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.4 KiB
92 lines
2.4 KiB
""" Stub file for testing the project """ |
|
|
|
from pathlib import Path |
|
|
|
import numpy |
|
import pytest |
|
|
|
EXAMPLE_DIR_WO_PARAMS = "mtp_wo_parameters" |
|
EXAMPLE_DIR_WITH_PARAMS = "mtp_with_parameters" |
|
|
|
|
|
@pytest.fixture |
|
def example_dir(request): |
|
root_dir = Path(request.config.rootdir) |
|
yield root_dir / "example_data" |
|
|
|
|
|
@pytest.fixture |
|
def example_file(example_dir): |
|
data_dir = example_dir / EXAMPLE_DIR_WO_PARAMS |
|
yield data_dir / "160210_SG2-010-001_Regen_cy3100_1_A1_1.csv" |
|
|
|
|
|
@pytest.mark.parametrize( |
|
"sub_dir,file_name", |
|
[ |
|
( |
|
EXAMPLE_DIR_WO_PARAMS, |
|
"160218_SG2-013-001_Regen1_Cy3-100_1_A1_1.csv", |
|
), |
|
( |
|
EXAMPLE_DIR_WITH_PARAMS, |
|
"160210_SG2-010-001_Regen_cy3100_1_A1_1.csv", |
|
), |
|
], |
|
) |
|
def test_parse_csv(example_dir, sub_dir, file_name): |
|
from sensovation_data_parser import _parse_csv |
|
|
|
result = _parse_csv(example_dir / sub_dir / file_name) |
|
|
|
columns = { |
|
" ID ": numpy.int64, |
|
"Pos.X": numpy.int64, |
|
"Pos.Y": numpy.int64, |
|
"Bkg.Mean": float, |
|
"Spot.Mean": float, |
|
"Bkg.Median": float, |
|
"Spot.Median": float, |
|
"Bkg.StdDev": float, |
|
"Spot.StdDev": float, |
|
"Bkg.Sum": numpy.int64, |
|
"Spot.Sum": numpy.int64, |
|
"Bkg.Area": numpy.int64, |
|
"Spot.Area": numpy.int64, |
|
"Spot.Sat. (%)": numpy.int64, |
|
"Found": numpy.bool_, |
|
"Pos.Nom.X": numpy.int64, |
|
"Pos.Nom.Y": numpy.int64, |
|
"Dia.": numpy.int64, |
|
"Rect.": str, |
|
"Contour": object, # ignore the type of contour |
|
} |
|
|
|
assert set(result.columns) == set(columns.keys()) |
|
assert len(result[" ID "].unique()) == 100 |
|
assert len(result) == 100 |
|
for column, value_type in columns.items(): |
|
assert isinstance(result[column][0], value_type) |
|
|
|
|
|
@pytest.mark.parametrize( |
|
"input,expected", [("", "."), ("..,", "."), (".,,", ","), ("..,,", "."),] |
|
) |
|
def test_guess_decimal_separator_returns_correct_separator(input, expected): |
|
from sensovation_data_parser import _guess_decimal_separator |
|
from io import StringIO |
|
|
|
handle = StringIO(f"header\n{input}\n") |
|
result = _guess_decimal_separator(handle) |
|
|
|
assert result == expected |
|
|
|
|
|
def test_guess_decimal_separator_rewinds_handle(): |
|
from sensovation_data_parser import _guess_decimal_separator |
|
from io import StringIO |
|
|
|
handle = StringIO(f"header\n{input}\n") |
|
_guess_decimal_separator(handle) |
|
|
|
assert next(handle) == "header\n"
|
|
|