diff --git a/unit_tests/gen_tools.py b/unit_tests/gen_tools.py
index 38ba686e9e7bce16a478c3c9824ec1f2508998b0..b7ed9b9e1c23eef98376ab74c3929e57934c0280 100644
--- a/unit_tests/gen_tools.py
+++ b/unit_tests/gen_tools.py
@@ -518,8 +518,8 @@ def write_mask(fileout,grid_h,grid_z):
     nav_lat[:, :] = grid_h['latt'].T
     nav_lev[:] = grid_z['dept_1d']
 
-    threeD_mask = np.zeros(np.shape(grid_z['e3t']))
-    twoD_mask = np.zeros(np.shape(grid_h['e1t']))
+    threeD_mask = np.ones(np.shape(grid_z['e3t']))
+    twoD_mask = np.ones(np.shape(grid_h['e1t']))
 
     fmask[:,:,:] = threeD_mask.T
     fmaskutil[:,:] = twoD_mask.T
@@ -550,7 +550,7 @@ def write_parameter(fileout, grid_h,grid_z,params):
 
     # Get input size and create appropriate dimensions
     # TODO: add some sort of error handling
-    nt = 2
+    nt = 31
     nx, ny, nz = np.shape(grid_z['e3t'])
     dataset.createDimension('x', nx)
     dataset.createDimension('y', ny)
@@ -576,7 +576,7 @@ def write_parameter(fileout, grid_h,grid_z,params):
     longitude[:, :] = grid_h['lont'].T
     latitude[:, :] = grid_h['latt'].T
     depth[:] = grid_z['dept_1d']
-    time_counter[:] = (587340.00,588060.00)
+    time_counter[:] = np.linspace(587340.00,588060.00,31)
     parameter = dataset.createVariable(str(params['name']), np.float64, ('time','z', 'y', 'x'))
     parameter.units, parameter.long_name = str(params['units']), str(params['longname'])
     value_fill = np.ones(np.shape(grid_z['e3t']))
diff --git a/unit_tests/namelist_unit_test.bdy b/unit_tests/namelist_unit_test.bdy
index 68539ce36d0e7dd21eee500a10192dc35b1f0ed3..d07f1db37789c52733acaa51856723bec50485e4 100644
--- a/unit_tests/namelist_unit_test.bdy
+++ b/unit_tests/namelist_unit_test.bdy
@@ -35,7 +35,7 @@
    sn_dst_hgr = '/Users/thopri/Projects/PyNEMO/unit_tests/test_data/test_dst_hgr_zps.nc'
    sn_dst_zgr = '/Users/thopri/Projects/PyNEMO/unit_tests/test_data/test_dst_zgr_zps.nc'
    sn_src_msk = '/Users/thopri/Projects/PyNEMO/unit_tests/test_data/mask.nc'
-   sn_bathy   = '/Users/thopri/Projects/PyNEMO/unit_tests/test_data/dst_bathy.nc'
+   sn_bathy   = '/Users/thopri/Projects/PyNEMO/unit_tests/test_data/test_dst_bathy.nc'
 
 !------------------------------------------------------------------------------
 !  I/O 
@@ -45,7 +45,7 @@
    sn_fn      = 'unit_test'             ! prefix for output files
    nn_fv      = -1e20                 !  set fill value for output files
    nn_src_time_adj = 0                ! src time adjustment
-   sn_dst_metainfo = 'Benchmarking Data'
+   sn_dst_metainfo = 'Unit Test Data'
 
 !------------------------------------------------------------------------------
 !  CMEMS Data Source Configuration
diff --git a/unit_tests/test_gen.py b/unit_tests/test_gen.py
index 15ec96e0bc694784f7041cfcb7a091b9523c25a0..8e8cd19d32e433e4b8ecd44c40ab936c8bfc03e6 100644
--- a/unit_tests/test_gen.py
+++ b/unit_tests/test_gen.py
@@ -48,7 +48,10 @@ def _main():
     grid_z2 = gt.set_zgrid(grid_h2,jpk,max_dep,min_dep,z_end_dim)
     write_coord_H = gt.write_coord_H(h_fname,grid_h2)
     write_coord_Z = gt.write_coord_Z(z_fname,grid_h2,grid_z2)
-    if write_coord_H + write_coord_Z == 0:
+    # write bathy files (constant bathy)
+    bathy_fname = 'unit_tests/test_data/test_dst_bathy.nc'
+    bathy = gt.write_bathy(bathy_fname,grid_h2,grid_z2)
+    if write_coord_H + write_coord_Z + bathy == 0:
         print("Success!")
 
     # set rotation and origin point
@@ -66,7 +69,10 @@ def _main():
     grid_rot['latf'], grid_rot['lonf'] = gt.rotate_around_point(grid_h2['latf'], grid_h2['lonf'], theta, origin)
     write_coord_H = gt.write_coord_H(rot_h_fname,grid_rot)
     write_coord_Z = gt.write_coord_Z(rot_z_fname,grid_rot,grid_z2)
-    if write_coord_H + write_coord_Z == 0:
+    # write bathy files (constant bathy)
+    bathy_fname = 'unit_tests/test_data/test_rot_dst_bathy.nc'
+    bathy = gt.write_bathy(bathy_fname,grid_rot,grid_z2)
+    if write_coord_H + write_coord_Z + bathy == 0:
         print("Success!")
 
     # offset grid
@@ -81,25 +87,22 @@ def _main():
     min_dep = 10
     z_end_dim = 1
     sf = 10
-    h_fname = 'unit_tests/test_data/test_dst_offset_hgr_zps.nc'
-    z_fname = 'unit_tests/test_data/test_dst_offset_zgr_zps.nc'
+    h_fname = 'unit_tests/test_data/test_offset_dst_hgr_zps.nc'
+    z_fname = 'unit_tests/test_data/test_offset_dst_zgr_zps.nc'
     grid_h3 = gt.set_hgrid(dx,dy,jpi,jpj,zoffx,zoffy,sf)
     grid_z3 = gt.set_zgrid(grid_h2,jpk,max_dep,min_dep,z_end_dim)
     write_coord_H = gt.write_coord_H(h_fname,grid_h3)
     write_coord_Z = gt.write_coord_Z(z_fname,grid_h3,grid_z3)
-    if write_coord_H + write_coord_Z == 0:
+    # write bathy files (constant bathy)
+    bathy_fname = 'unit_tests/test_data/test_offset_dst_bathy.nc'
+    bathy = gt.write_bathy(bathy_fname,grid_h3,grid_z3)
+    if write_coord_H + write_coord_Z + bathy == 0:
         print("Success!")
 
     # plot orginal, rotatated and source lat and lon
     gt.plot_grids(grid_h2['latt'],grid_h2['lont'],grid_rot['latt'],grid_rot['lont'],grid_h3['latt'], \
                grid_h3['lont'],grid_h1['latt'],grid_h1['lont'])
 
-    # write bathy files (constant bathy)
-    bathy_fname = 'unit_tests/test_data/dst_bathy.nc'
-    bathy = gt.write_bathy(bathy_fname,grid_h2,grid_z2)
-    if bathy == 0:
-        print('Success!')
-
     # write boundary files (constant parameters)
     out_fname = 'unit_tests/test_data/output_boundary_T.nc'
     params = {'name':'thetao','const_value':15.0,'longname':'temperature','units':'degreesC'}
@@ -113,5 +116,7 @@ def _main():
     if mask == 0:
         print('Success!')
 
+    return 0
+
 if __name__ == '__main__':
     _main()
\ No newline at end of file
diff --git a/unit_tests/unit_test.py b/unit_tests/unit_test.py
index bbfe4a0f882d26d14fbb6e76b9461345fbbdb0e8..c5d6784091ce3d3f9627a2568e4f1ca584d2cfef 100644
--- a/unit_tests/unit_test.py
+++ b/unit_tests/unit_test.py
@@ -9,11 +9,19 @@ import numpy as np
 import glob
 import os
 
-def test_run():
-    stdout, stderr = Popen(['pynemo','-s','unit_tests/namelist_unit_test.bdy'], stdout=PIPE, stderr=PIPE,
-                           universal_newlines=True).communicate()
-    assert 'Execution Time' in stdout
+# generate test data by import test gen script and executing main function
+import unit_tests.test_gen as tg
+gen_data = tg._main()
+if gen_data != 0:
+    raise Exception('DONT PANIC: Input data generation failed')
 
+# run PyNEMO with test data
+stdout, stderr = Popen(['pynemo', '-s', 'unit_tests/namelist_unit_test.bdy'], stdout=PIPE, stderr=PIPE,
+                       universal_newlines=True).communicate()
+if 'Execution Time' not in stdout:
+    raise Exception('DONT PANIC: Test Run Failed')
+
+# perform tests
 def test_temp():
     test_files = glob.glob('unit_tests/test_outputs/unit_test*')
     for t in test_files:
@@ -36,10 +44,18 @@ def test_temp():
 #        assert abs(sal_[sal_ != 0.0].max() - 35) <= 0.001
 #        assert abs(sal_[sal_ != 0.0].min() - 35) <= 0.001
 
-def test_rm_output():
-    files = glob.glob('unit_tests/test_outputs/*')
-    for f in files:
-        os.remove(f)
-    files = glob.glob('unit_tests/test_outputs/*')
-    assert len(files) == 0
+# clean up test I/O
+files = glob.glob('unit_tests/test_outputs/*')
+for f in files:
+    os.remove(f)
+files = glob.glob('unit_tests/test_outputs/*')
+if len(files) != 0:
+    raise Exception('DONT PANIC: output folder not cleaned')
+
+files = glob.glob('unit_tests/test_data/*')
+for f in files:
+    os.remove(f)
+files = glob.glob('unit_tests/test_data/*')
+if len(files) != 0:
+    raise Exception('DONT PANIC: input folder not cleaned')