#!/usr/bin/env python # SPDX-FileCopyrightText: 2021 Helmholtz-Zentrum für Umweltforschung GmbH - UFZ # # SPDX-License-Identifier: GPL-3.0-or-later import pytest from click.testing import CliRunner from pathlib import Path FLOAT = [ ",Battery,Battery,SM1,SM1,SM2,SM2\n", ",data,flags,data,flags,data,flags\n", "Date,,,,,,\n", "2016-04-01 00:00:00,nan,nan,nan,nan,29.3157,-inf\n", "2016-04-01 00:05:48,3573.0,-inf,32.685,-inf,nan,nan\n", "2016-04-01 00:15:00,nan,nan,nan,nan,29.3157,-inf\n", "2016-04-01 00:20:42,3572.0,-inf,32.7428,-inf,nan,nan\n", "2016-04-01 00:30:00,nan,nan,nan,nan,29.3679,-inf\n", "2016-04-01 00:35:37,3572.0,-inf,32.6186,-inf,nan,nan\n", "2016-04-01 00:45:00,nan,nan,nan,nan,29.3679,-inf\n", ] SIMPLE = [ ",Battery,Battery,SM1,SM1,SM2,SM2\n", ",data,flags,data,flags,data,flags\n", "Date,,,,,,\n", "2016-04-01 00:00:00,nan,nan,nan,nan,29.3157,UNFLAGGED\n", "2016-04-01 00:05:48,3573.0,UNFLAGGED,32.685,UNFLAGGED,nan,nan\n", "2016-04-01 00:15:00,nan,nan,nan,nan,29.3157,UNFLAGGED\n", "2016-04-01 00:20:42,3572.0,UNFLAGGED,32.7428,UNFLAGGED,nan,nan\n", "2016-04-01 00:30:00,nan,nan,nan,nan,29.3679,UNFLAGGED\n", "2016-04-01 00:35:37,3572.0,UNFLAGGED,32.6186,UNFLAGGED,nan,nan\n", "2016-04-01 00:45:00,nan,nan,nan,nan,29.3679,UNFLAGGED\n", ] POSITIONAL = [ ",Battery,Battery,SM1,SM1,SM2,SM2\n", ",data,flags,data,flags,data,flags\n", "Date,,,,,,\n", "2016-04-01 00:00:00,nan,-9999,nan,-9999,29.3157,9000\n", "2016-04-01 00:05:48,3573.0,9,32.685,90,nan,-9999\n", "2016-04-01 00:15:00,nan,-9999,nan,-9999,29.3157,9000\n", "2016-04-01 00:20:42,3572.0,9,32.7428,90,nan,-9999\n", "2016-04-01 00:30:00,nan,-9999,nan,-9999,29.3679,9000\n", "2016-04-01 00:35:37,3572.0,9,32.6186,90,nan,-9999\n", "2016-04-01 00:45:00,nan,-9999,nan,-9999,29.3679,9000\n", ] DMP = [ ",Battery,Battery,Battery,Battery,SM1,SM1,SM1,SM1,SM2,SM2,SM2,SM2\n", ",data,quality_flag,quality_cause,quality_comment,data,quality_flag,quality_cause,quality_comment,data,quality_flag,quality_cause,quality_comment\n", "Date,,,,,,,,,,,,\n", "2016-04-01 00:00:00,nan,nan,nan,nan,nan,nan,nan,nan,29.3157,NIL,,\n", "2016-04-01 00:05:48,3573.0,NIL,,,32.685,NIL,,,nan,nan,nan,nan\n", "2016-04-01 00:15:00,nan,nan,nan,nan,nan,nan,nan,nan,29.3157,NIL,,\n", "2016-04-01 00:20:42,3572.0,NIL,,,32.7428,NIL,,,nan,nan,nan,nan\n", "2016-04-01 00:30:00,nan,nan,nan,nan,nan,nan,nan,nan,29.3679,NIL,,\n", "2016-04-01 00:35:37,3572.0,NIL,,,32.6186,NIL,,,nan,nan,nan,nan\n", "2016-04-01 00:45:00,nan,nan,nan,nan,nan,nan,nan,nan,29.3679,NIL,,\n", ] @pytest.mark.slow @pytest.mark.parametrize( "scheme, expected", [("float", FLOAT), ("simple", SIMPLE), ("positional", POSITIONAL), ("dmp", DMP)], ) def test__main__py(tmp_path, scheme, expected): import saqc.__main__ # if not run from project root projpath = Path(saqc.__file__).parents[1] outfile = Path(tmp_path, "test.csv") # the filesystem's temp dir args = [ "--config", Path(projpath, "docs/resources/data/config.csv"), "--data", Path(projpath, "docs/resources/data/data.csv"), "--outfile", outfile, "--scheme", scheme, ] result = CliRunner().invoke(saqc.__main__.main, args) assert result.exit_code == 0, result.output with open(outfile, "r") as f: result = f.readlines()[:10] assert result == expected