Bill Ladwig 6 years ago
parent
commit
f7417030a6
  1. 1
      test/ci_tests/make_test_file.py
  2. 22
      test/ci_tests/utests.py

1
test/ci_tests/make_test_file.py

@ -159,6 +159,7 @@ def make_result_file(opts): @@ -159,6 +159,7 @@ def make_result_file(opts):
ll = xy_to_ll(infile, x_s[0], y_s[0])
add_to_ncfile(outfile, ll, "ll")
def main(opts):
copy_and_reduce(opts)
make_result_file(opts)

22
test/ci_tests/utests.py

@ -2,7 +2,8 @@ import unittest as ut @@ -2,7 +2,8 @@ import unittest as ut
import numpy.testing as nt
import numpy as np
import numpy.ma as ma
import os, sys
import os
import sys
import subprocess
from wrf import (getvar, interplevel, interpline, vertcross, vinterp,
@ -20,6 +21,7 @@ REF_FILE = "ci_result_file.nc" @@ -20,6 +21,7 @@ REF_FILE = "ci_result_file.nc"
if sys.version_info > (3,):
xrange = range
# Using helpful information at:
# http://eli.thegreenplace.net/2014/04/02/dynamically-generating-python-test-cases
def make_test(varname, wrf_in, referent, multi=False, repeat=3, pynio=False):
@ -34,7 +36,6 @@ def make_test(varname, wrf_in, referent, multi=False, repeat=3, pynio=False): @@ -34,7 +36,6 @@ def make_test(varname, wrf_in, referent, multi=False, repeat=3, pynio=False):
multiproduct = varname in ("uvmet", "uvmet10", "cape_2d", "cape_3d",
"cfrac")
ref_vals = refnc.variables[varname][:]
if (varname == "tc"):
@ -45,8 +46,7 @@ def make_test(varname, wrf_in, referent, multi=False, repeat=3, pynio=False): @@ -45,8 +46,7 @@ def make_test(varname, wrf_in, referent, multi=False, repeat=3, pynio=False):
elif (varname == "pw"):
my_vals = getvar(in_wrfnc, "pw", timeidx=timeidx)
tol = .5/100.0
atol = 0 # NCL uses different constants and doesn't use same
# handrolled virtual temp in method
atol = 0
nt.assert_allclose(to_np(my_vals), ref_vals, tol, atol)
elif (varname == "cape_2d"):
cape_2d = getvar(in_wrfnc, varname, timeidx=timeidx)
@ -76,9 +76,9 @@ def make_test(varname, wrf_in, referent, multi=False, repeat=3, pynio=False): @@ -76,9 +76,9 @@ def make_test(varname, wrf_in, referent, multi=False, repeat=3, pynio=False):
# print (np.amax(np.abs(to_np(my_vals) - ref_vals)))
nt.assert_allclose(to_np(my_vals), ref_vals, tol, atol)
return test
def _get_refvals(referent, varname, repeat, multi):
from netCDF4 import Dataset as NetCDF
@ -88,6 +88,7 @@ def _get_refvals(referent, varname, repeat, multi): @@ -88,6 +88,7 @@ def _get_refvals(referent, varname, repeat, multi):
return ref_vals
def make_interp_test(varname, wrf_in, referent, multi=False,
repeat=3, pynio=False):
def test(self):
@ -123,7 +124,6 @@ def make_interp_test(varname, wrf_in, referent, multi=False, @@ -123,7 +124,6 @@ def make_interp_test(varname, wrf_in, referent, multi=False,
nt.assert_allclose(to_np(ht_cross), ref_ht_cross, rtol=.01)
elif (varname == "interpline"):
ref_t2_line = _get_refvals(referent, "interpline", repeat, multi)
@ -200,7 +200,6 @@ def make_latlon_test(testid, wrf_in, referent, single, multi=False, repeat=3, @@ -200,7 +200,6 @@ def make_latlon_test(testid, wrf_in, referent, single, multi=False, repeat=3,
nt.assert_allclose(to_np(xy), ref_vals)
else:
# Since this domain is not moving, the reference values are the
# same whether there are multiple or single files
@ -215,15 +214,17 @@ def make_latlon_test(testid, wrf_in, referent, single, multi=False, repeat=3, @@ -215,15 +214,17 @@ def make_latlon_test(testid, wrf_in, referent, single, multi=False, repeat=3,
nt.assert_allclose(to_np(ll), ref_vals)
return test
class WRFVarsTest(ut.TestCase):
longMessage = True
class WRFInterpTest(ut.TestCase):
longMessage = True
class WRFLatLonTest(ut.TestCase):
longMessage = True
@ -261,10 +262,7 @@ if __name__ == "__main__": @@ -261,10 +262,7 @@ if __name__ == "__main__":
repeat=3, pynio=False)
multistr = "" if not multi else "_multi"
singlestr = "_nosingle" if not single else "_single"
test_name = "test_{}{}{}".format(testid, singlestr,
multistr)
test_name = "test_{}{}{}".format(testid, singlestr, multistr)
setattr(WRFLatLonTest, test_name, test_ll_func)
ut.main()
Loading…
Cancel
Save