Skip to content
Snippets Groups Projects
Select Git revision
  • b017d3091599b86a841c6f4f11d0e110bfb45207
  • master default protected
2 results

Simple_CSV.pm

Blame
  • test_inputnml.py 1.97 KiB
    import os, shutil
    import datetime as dt
    
    from dartwrf import dart_nml
    
    
    
    def test_input_nml():
        test_input = './input.nml.original'
        test_output = './input.nml.output'
        desired_output = './input.nml.desired_output'
    
        # read an existing input.nml
        nml = dart_nml.read_namelist(test_input)
    
        # modify one parameter
        nml['&filter_nml']['ens_size'] = [[999,]]
        nml['&filter_nml']['num_output_state_members'] = [[999,]]
        nml['&filter_nml']['num_output_obs_members'] = [[999,]]
        nml['&filter_nml']['compute_posterior'] = [['.false.']]
    
        # save the configuration as input.nml
        dart_nml.write_namelist_from_dict(nml, test_output)
    
        # compare the saved input.nml to the true input.nml
        # by reading both and comparing the dictionaries
        nml_desired = dart_nml.read_namelist(desired_output)
        nml_test = dart_nml.read_namelist(test_output)
    
        # section e.g. '&preprocess_nml'
        for section, _ in nml_desired.items():
    
            # param e.g. 'filter_kind'
            for param, value in nml_desired[section].items():
    
                should_have = nml_desired[section][param]
                have = nml_test[section][param]
    
                for i, line in enumerate(should_have):
    
                    for j, expected in enumerate(line):
    
                        if expected != have[i][j]:
    
                            # if one has "wrfinput" and other has 'wrfinput'
                            # thats ok
                            this = "'"+have[i][j].strip('"')+"'"
                            if this == expected:
                                pass
                                # print(this, expected)
                            else:
                                raise ValueError('expected', expected, 'got', have[i][j])
        
        os.remove(test_output)
    
    def test_get_list_of_localizations():
    
        output = dart_nml._get_list_of_localizations()
        assert (['SYNOP_TEMPERATURE'], [0.0015698587127158557], [1274000.0], [-1]) == output
    
    
    if __name__ == '__main__':
        test_input_nml()
    
        test_get_list_of_localizations()