import pytest import os from os import path import netCDF4 from tests.TestUtils import TestUtils from SDToolBox import main as main from SDToolBox import extract_waves from SDToolBox import data_acquisition import numpy as np class Test_create: @pytest.mark.unittest def test_given_no_input_data_then_exception_is_risen(self): # 1. Given input_data = None output_result = None expected_error = 'No valid input data.' # 2. When with pytest.raises(IOError) as e_info: output_result = extract_waves.ExtractWaves(input_data) # 3. Then error_message = str(e_info.value) assert output_result is None assert error_message == expected_error, '' + \ 'Expected exception message {},'.format(expected_error) + \ 'retrieved {}'.format(error_message) class Test_subset_era_5: @pytest.mark.systemtest def test_given_waves_folder_then_subset_collection_is_extracted(self): # 1. Given # When using local data you can just replace the comment in these lines #dir_test_data = TestUtils.get_test_data_dir('netCDF_Waves_data') #dir_test_data = 'P:\\metocean-data\\open\\ERA5\\data\\Global' dir_test_data = 'D:\\workspace\\SD_Toolbox\\trunk\\tests\\test_data\\' # TODO to be removed input_data = data_acquisition.InputData() input_data.coord_list = [(4.2, 2.4)] # 2. When extract_wave = extract_waves.ExtractWaves(input_data) dataset_list = extract_wave.subset_era_5(dir_test_data, 1981, 1982) # 3. Then assert dataset_list is not None # """ # Instantiates a wave extraction class and checks that # it is correctly created # """ # @pytest.mark.unittest # def test_instantiating_extract_wave_era5_returns_allocated_object(self): # waves_era5 = extract_waves.ExtractWaves(0.0,0.0,"path", 1980,2000) # assert waves_era5.lat == 0.0 # assert waves_era5.lon == 0.0 # assert waves_era5.dpath == "path" # assert waves_era5.year1 == 1980 # assert waves_era5.yearN == 2000 # """ # Checks that the longitude is normalized if a value higher than 180 is passed # """ # @pytest.mark.unittest # def test_given_longitude_higher_than_180_returns_normalized_longitude(self): # #setup # longitude = 400 # normalized_longitude = longitude -180 # waves_era5 = extract_waves_era.subset_era_5(0.0,0.0,"path", 1980,2000) # #call # result = waves_era5.check_for_longitude(longitude) # #assert # assert result == normalized_longitude # """ # Checks that the longitude is unchanged if a value lower than 180 is passed # """ # @pytest.mark.unittest # def test_given_longitude_lower_than_180_returns_normalized_unchanged(self): # #setup # longitude = 30 # waves_era5 = extract_waves_era.subset_era_5(0.0,0.0,"path", 1980,2000) # #call # result = waves_era5.check_for_longitude(longitude) # #assert # assert result == 30 # """ # Checks that array of years if correctly generated # """ # @pytest.mark.unittest # def test_years_array_is_correctly_generated(self): # #setup # year1 = 1980 # yearN = 1983 # result_array = [1980,1981,1982,1983] # result = [] # waves_era5 = extract_waves_era5.ExtractWavesEra5(0.0,0.0,"path", 1980,2000) # #call # result = waves_era5.generate_years_array(year1, yearN) # #assert # assert result[0] == result_array[0] # assert result[1] == result_array[1] # assert result[2] == result_array[2] # assert result[3] == result_array[3]