def test_fails_on_duplicate_input_data(input_data_file_with_duplicates, output_data_file): with pytest.raises(ValueError): data_model = ModelFromData(input_data_file_with_duplicates, output_data_file, 1.) data_model.evaluate([1, 2, 3, 4, 5])
def test_fails_on_unmatched_input(input_data_file, output_data_file): """ Ensure an exception is raised if an input supplied to evaluate does not have a match in the input data. """ data_model = ModelFromData(input_data_file, output_data_file, 1.) with pytest.raises(ValueError): data_model.evaluate(-1)
def test_single_row_2d_input_data(input_data_file_2d, output_data_file_2d): """ Test ability to evaluate one row of input data passed in as 2d array. """ # Initialize model from spring-mass example data files: data_model = ModelFromData(input_data_file_2d, output_data_file_2d, 1.) # Should be able to do this without an exception. one_row_2d_input = np.array([data_model._inputs[0]]) data_model.evaluate(one_row_2d_input)
def test_fails_on_duplicate_input_data(input_data_file_with_duplicates, output_data_file): """ Ensure an exception is raised if there are duplicate inputs found in the input data. """ with pytest.raises(ValueError): data_model = ModelFromData(input_data_file_with_duplicates, output_data_file, 1.) data_model.evaluate([1, 2, 3, 4, 5])
def test_evaluate_fails_on_invalid_input(input_data_file, output_data_file): data_model = ModelFromData(input_data_file, output_data_file, 1.) bogus_input = "five" with pytest.raises(TypeError): data_model.evaluate(bogus_input) bogus_input = [[1, 2], [3, 4]] with pytest.raises(ValueError): data_model.evaluate(bogus_input)
def test_evaluate_with_cost_delay(cost, input_data_file, output_data_file): model = ModelFromData(input_data_file, output_data_file, cost=cost, wait_cost_duration=True) sample = model._inputs[0] start_time = timeit.default_timer() model.evaluate(sample) evaluation_time = timeit.default_timer() - start_time # Ensure evaluation time was close to specified cost. assert np.abs(evaluation_time - cost) < .01
def test_evaluate_fails_on_invalid_input(input_data_file, output_data_file): """ Ensure that an invalid input triggers an exception in evaluate. """ data_model = ModelFromData(input_data_file, output_data_file, 1.) bogus_input = "five" with pytest.raises(TypeError): data_model.evaluate(bogus_input) bogus_input = [[1, 2], [3, 4]] with pytest.raises(ValueError): data_model.evaluate(bogus_input)
def test_evaluate_with_cost_delay(cost, input_data_file, output_data_file): """ Test ability to wait for the duration of the cost specified for the model when evaluating a sample. """ model = ModelFromData(input_data_file, output_data_file, cost=cost, wait_cost_duration=True) sample = model._inputs[0] start_time = timeit.default_timer() model.evaluate(sample) evaluation_time = timeit.default_timer() - start_time # Ensure evaluation time was close to specified cost. assert np.abs(evaluation_time - cost) < .01
def test_evaluate_2d_data(input_data_file_2d, output_data_file_2d, index): # Initialize model from spring-mass example data files: data_model = ModelFromData(input_data_file_2d, output_data_file_2d, 1.) input_data = np.genfromtxt(input_data_file_2d) output_data = np.genfromtxt(output_data_file_2d) # Model expects arrays as inputs/outputs model_output = data_model.evaluate(input_data[index]) true_output = output_data[index] assert np.all(np.isclose(model_output, true_output))
def test_evaluate_1d_data(input_data_file, output_data_file, index): """ Test ability to evaluate one dimensional data. """ # Initialize model from spring-mass example data files: data_model = ModelFromData(input_data_file, output_data_file, 1.) input_data = np.genfromtxt(input_data_file) output_data = np.genfromtxt(output_data_file) # Model expects arrays as inputs/outputs. model_output = data_model.evaluate(input_data[index]) true_output = output_data[index] assert np.all(np.isclose(model_output, true_output))