Skip to content

Commit

Permalink
test: Modify test_main for new arg
Browse files Browse the repository at this point in the history
Modified the test_main.py and 'test_gather_files'
test to include testing for the new 'proc' argument
for flexible file gathering.
  • Loading branch information
lsetiawan committed Aug 24, 2023
1 parent 13a51c8 commit 2f3bafd
Showing 1 changed file with 38 additions and 12 deletions.
50 changes: 38 additions & 12 deletions tests/test_main.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
import pytest

from gnatss.main import gather_files


def test_gather_files(mocker):
@pytest.mark.parametrize("proc", ["solver", "posfilter", "random"])
def test_gather_files(mocker, proc):
tt = "travel_times"
rph = "roll_pitch_heading"
glob_vals = [tt, rph]
expected_procs = {
"solver": ["sound_speed", tt, "gps_solution", "deletions"],
"posfilter": [rph],
}

# Setup get_filesystem mock
glob_res = [
"/some/path/to/1",
Expand All @@ -16,25 +27,40 @@ def glob(path):
mocker.patch("gnatss.main._get_filesystem", return_value=Filesystem)

# Setup mock configuration
item_keys = ["sound_speed", "travel_times", "gps_solution", "deletions"]
item_keys = []
if proc in expected_procs:
item_keys = expected_procs[proc]

sample_dict = {
k: {
"path": f"/some/path/to/{k}"
if k != "travel_times"
if k not in glob_vals
else "/some/glob/**/path",
"storage_options": {},
}
for k in item_keys
}
config = mocker.patch("gnatss.configs.main.Configuration")
config.solver.input_files.dict.return_value = sample_dict
if proc in list(expected_procs.keys()):
# Test for actual proc that exists
getattr(config, proc).input_files.dict.return_value = sample_dict

all_files_dict = gather_files(config, proc=proc)
# Check all_files_dict
assert isinstance(all_files_dict, dict)
assert sorted(list(all_files_dict.keys())) == sorted(item_keys)

# Test glob
for val in glob_vals:
if val in all_files_dict:
assert isinstance(all_files_dict[val], list)
assert all_files_dict[val] == glob_res
else:
# Test for random
del config.random

# Perform test
all_files_dict = gather_files(config)
# Check all_files_dict
assert isinstance(all_files_dict, dict)
assert sorted(list(all_files_dict.keys())) == sorted(item_keys)
with pytest.raises(AttributeError) as exc_info:
all_files_dict = gather_files(config, proc=proc)

# Test glob
assert isinstance(all_files_dict["travel_times"], list)
assert all_files_dict["travel_times"] == glob_res
assert exc_info.type == AttributeError
assert exc_info.value.args[0] == f"Unknown process type: {proc}"

0 comments on commit 2f3bafd

Please sign in to comment.