#! @PYTHON@

from cdoTest import *
from collections import defaultdict

HAS_NETCDF=cdo_check_req("has-nc")

OPERATORS=[
"timmin", "timmax", "timrange", "timsum", "timavg", "timmean", "timstd", "timstd1", "timvar", "timvar1",
"yearmin", "yearmax", "yearrange", "yearsum", "yearavg", "yearmean", "yearstd", "yearstd1", "yearvar", "yearvar1",
"monmin", "monmax", "monrange", "monsum", "monavg", "monmean", "monstd", "monstd1", "monvar", "monvar1",
"daymin", "daymax", "dayrange", "daysum", "dayavg", "daymean", "daystd", "daystd1", "dayvar", "dayvar1"]

IFILES=defaultdict(lambda : f'{DATAPATH}/ts_mm_5years',{"day" : f'{DATAPATH}/ts_6h_1mon' , "mon" : f'{DATAPATH}/ts_1d_1year'})

FMS=["srv","grb"]
if (HAS_NETCDF):
    FMS+=["nc"]

test_module = TestModule()
for FILE_MOD in ["","m"]:
    WITHMISSVALS="+missvals" if FILE_MOD == "m" else ""
    for OPERATOR in OPERATORS:
        IFILE=IFILES[OPERATOR[:3]]
        IFILE=IFILE + "_m" if FILE_MOD == "m" else IFILE

        RFILE=f'{DATAPATH}/{OPERATOR}{FILE_MOD}_ref'
        OFILE=f'{OPERATOR}{FILE_MOD}_res'

        t=TAPTest(f'({",".join(FMS)}) {OPERATOR}  {WITHMISSVALS}')
        for FM in FMS:
            t.add(f'{CDO} -f {FM} {OPERATOR} {IFILE} {OFILE}')
            t.add(f'{CDO} diff,abslim=0.004 {OFILE} {RFILE}')
            t.clean(OFILE)
        test_module.add(t)

test_module.run()
