diff --git a/src/tests/DataSet_test.cpp b/src/tests/DataSet_test.cpp index 66709578ed0059398b1c3debbc935fd04b84fc4a..ac1751665f23b32f4e6233339cb6e994b493460d 100644 --- a/src/tests/DataSet_test.cpp +++ b/src/tests/DataSet_test.cpp @@ -50,101 +50,6 @@ BOOST_AUTO_TEST_SUITE(DataSet_test) * Test of DataSet constructor with vector parameter */ BOOST_AUTO_TEST_CASE(DataSet_construction_from_vector_test) { -// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec; -// std::vector<double> inp, out; -// -// for (int i = 0; i < 3; i++) { -// inp.push_back(i); -// out.push_back(i + 4); -// } -// -// data_vec.emplace_back(std::make_pair(inp, out)); -// -// lib4neuro::DataSet ds (&data_vec); // TODO why is the ds object created unitialized? -// -// //test of no exception when create object DataSet -// BOOST_CHECK_NO_THROW(new lib4neuro::DataSet(&data_vec)); - } - -/** - * Test of get_data method - */ - BOOST_AUTO_TEST_CASE(DataSet_get_data_test) { - std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec; - std::vector<double> inp, out; - - for (int i = 0; i < 1; i++) { - inp.push_back(i); - out.push_back(i + 4); - } - - data_vec.emplace_back(std::make_pair(inp, out)); - lib4neuro::DataSet DataSet(&data_vec); - - //test of equal data - BOOST_CHECK_EQUAL(0, DataSet.get_data()->at(0).first.at(0)); - BOOST_CHECK_EQUAL(4, DataSet.get_data()->at(0).second.at(0)); - - } - -/** - * Test of add_data_pair method - */ - BOOST_AUTO_TEST_CASE(DataSet_add_data_pair_test) { - std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec; - std::vector<double> inp, out; - - for (int i = 0; i < 3; i++) { - inp.push_back(i); - out.push_back(i + 4); - } - - data_vec.emplace_back(std::make_pair(inp, out)); - - lib4neuro::DataSet DataSet(&data_vec); - - inp.clear(); - out.clear(); - for (int i = 8; i < 11; i++) { - inp.push_back(i); - out.push_back(i + 4); - } - - DataSet.add_data_pair(inp, out); - - // Test of correct add of input - BOOST_CHECK_EQUAL(8, DataSet.get_data()->at(1).first.at(0)); - // Test of correct add of output - BOOST_CHECK_EQUAL(12, DataSet.get_data()->at(1).second.at(0)); - - } - - /** - * Test of get_input_dim and get_output_dim methods - */ - BOOST_AUTO_TEST_CASE(DataSet_dimension_test) { - std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec; - std::vector<double> inp, out; - - for (int i = 0; i < 3; i++) { - inp.push_back(i); - out.push_back(i + 4); - } - - data_vec.emplace_back(std::make_pair(inp, out)); - - lib4neuro::DataSet DataSet(&data_vec); - - //Test of correct input dimension - BOOST_CHECK_EQUAL(3, DataSet.get_input_dim()); - //Test of correct output dimension - BOOST_CHECK_EQUAL(3, DataSet.get_output_dim()); - } - -/** - * Test of get_n_elements method - */ - BOOST_AUTO_TEST_CASE(DataSet_get_number_of_elements_test) { std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec; std::vector<double> inp, out; @@ -152,47 +57,142 @@ BOOST_AUTO_TEST_SUITE(DataSet_test) inp.push_back(i); out.push_back(i + 4); } - data_vec.emplace_back(std::make_pair(inp, out)); - inp.clear(); - out.clear(); - for (int i = 8; i < 11; i++) { - inp.push_back(i); - out.push_back(i + 4); - } - data_vec.emplace_back(std::make_pair(inp, out)); - - lib4neuro::DataSet DataSet(&data_vec); - - //Test of correct number of elements - BOOST_CHECK_EQUAL(2, DataSet.get_n_elements()); - } - -/** - * Test of print_data method - */ - BOOST_AUTO_TEST_CASE(DataSet_print_data_test) { - std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec; - std::vector<double> inp, out; - - for (int i = 0; i < 1; i++) { - inp.push_back(i); - out.push_back(i + 4); - } data_vec.emplace_back(std::make_pair(inp, out)); - lib4neuro::DataSet DataSet(&data_vec); - std::stringstream buffer; - std::streambuf * old = std::cout.rdbuf(buffer.rdbuf()); - DataSet.print_data(); - - //Test of correct print of DataSet - std::string text = buffer.str(); - BOOST_CHECK(text.compare("0 -> 4 \n")); - std::cout.rdbuf(old); + lib4neuro::DataSet ds (&data_vec); // TODO why is the ds object created unitialized? + //test of no exception when create object DataSet + BOOST_CHECK_NO_THROW(new lib4neuro::DataSet(&data_vec)); } +///** +// * Test of get_data method +// */ +// BOOST_AUTO_TEST_CASE(DataSet_get_data_test) { +// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec; +// std::vector<double> inp, out; +// +// for (int i = 0; i < 1; i++) { +// inp.push_back(i); +// out.push_back(i + 4); +// } +// +// data_vec.emplace_back(std::make_pair(inp, out)); +// lib4neuro::DataSet DataSet(&data_vec); +// +// //test of equal data +// BOOST_CHECK_EQUAL(0, DataSet.get_data()->at(0).first.at(0)); +// BOOST_CHECK_EQUAL(4, DataSet.get_data()->at(0).second.at(0)); +// +// } +// +///** +// * Test of add_data_pair method +// */ +// BOOST_AUTO_TEST_CASE(DataSet_add_data_pair_test) { +// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec; +// std::vector<double> inp, out; +// +// for (int i = 0; i < 3; i++) { +// inp.push_back(i); +// out.push_back(i + 4); +// } +// +// data_vec.emplace_back(std::make_pair(inp, out)); +// +// lib4neuro::DataSet DataSet(&data_vec); +// +// inp.clear(); +// out.clear(); +// for (int i = 8; i < 11; i++) { +// inp.push_back(i); +// out.push_back(i + 4); +// } +// +// DataSet.add_data_pair(inp, out); +// +// // Test of correct add of input +// BOOST_CHECK_EQUAL(8, DataSet.get_data()->at(1).first.at(0)); +// // Test of correct add of output +// BOOST_CHECK_EQUAL(12, DataSet.get_data()->at(1).second.at(0)); +// +// } +// +// /** +// * Test of get_input_dim and get_output_dim methods +// */ +// BOOST_AUTO_TEST_CASE(DataSet_dimension_test) { +// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec; +// std::vector<double> inp, out; +// +// for (int i = 0; i < 3; i++) { +// inp.push_back(i); +// out.push_back(i + 4); +// } +// +// data_vec.emplace_back(std::make_pair(inp, out)); +// +// lib4neuro::DataSet DataSet(&data_vec); +// +// //Test of correct input dimension +// BOOST_CHECK_EQUAL(3, DataSet.get_input_dim()); +// //Test of correct output dimension +// BOOST_CHECK_EQUAL(3, DataSet.get_output_dim()); +// } +// +///** +// * Test of get_n_elements method +// */ +// BOOST_AUTO_TEST_CASE(DataSet_get_number_of_elements_test) { +// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec; +// std::vector<double> inp, out; +// +// for (int i = 0; i < 3; i++) { +// inp.push_back(i); +// out.push_back(i + 4); +// } +// data_vec.emplace_back(std::make_pair(inp, out)); +// inp.clear(); +// out.clear(); +// for (int i = 8; i < 11; i++) { +// inp.push_back(i); +// out.push_back(i + 4); +// } +// data_vec.emplace_back(std::make_pair(inp, out)); +// +// lib4neuro::DataSet DataSet(&data_vec); +// +// //Test of correct number of elements +// BOOST_CHECK_EQUAL(2, DataSet.get_n_elements()); +// } +// +///** +// * Test of print_data method +// */ +// BOOST_AUTO_TEST_CASE(DataSet_print_data_test) { +// std::vector<std::pair<std::vector<double>, std::vector<double>>> data_vec; +// std::vector<double> inp, out; +// +// for (int i = 0; i < 1; i++) { +// inp.push_back(i); +// out.push_back(i + 4); +// } +// +// data_vec.emplace_back(std::make_pair(inp, out)); +// lib4neuro::DataSet DataSet(&data_vec); +// std::stringstream buffer; +// std::streambuf * old = std::cout.rdbuf(buffer.rdbuf()); +// DataSet.print_data(); +// +// +// //Test of correct print of DataSet +// std::string text = buffer.str(); +// BOOST_CHECK(text.compare("0 -> 4 \n")); +// std::cout.rdbuf(old); +// +// } +// ///** // * Test of store_text method // */ diff --git a/src/tests/ErrorFunctions_test.cpp b/src/tests/ErrorFunctions_test.cpp index c4d095edb2c788e855d2f4ae008c6bdc28876a6a..d0849efa79cc36ca0ddc6e544a9e56f46d0bf45f 100644 --- a/src/tests/ErrorFunctions_test.cpp +++ b/src/tests/ErrorFunctions_test.cpp @@ -37,20 +37,33 @@ MOCK_BASE_CLASS(mock_network, lib4neuro::NeuralNetwork) MOCK_METHOD(get_parameter_ptr_biases, 0) MOCK_METHOD(get_parameter_ptr_weights, 0) MOCK_METHOD(save_text, 1) - MOCK_METHOD(print_stats, 0) - MOCK_METHOD(print_weights, 0) + MOCK_METHOD(write_weights, 0, void(), id1) + MOCK_METHOD(write_weights, 1, void(std::string), id2) + MOCK_METHOD(write_weights, 1, void(std::ofstream*), id3) + MOCK_METHOD(write_biases, 0, void(), id4) + MOCK_METHOD(write_biases, 1, void(std::string), id5) + MOCK_METHOD(write_biases, 1, void(std::ofstream*), id6) + MOCK_METHOD(write_stats, 0, void(), id7) + MOCK_METHOD(write_stats, 1, void(std::string), id8) + MOCK_METHOD(write_stats, 1, void(std::ofstream*), id9) }; -MOCK_BASE_CLASS(mock_error_fun, lib4neuro::ErrorFunction) { +MOCK_BASE_CLASS(mock_error_fun, ErrorFunction) +{ MOCK_METHOD(eval, 1) MOCK_METHOD(get_dimension, 0) MOCK_METHOD(calculate_error_gradient, 4) MOCK_METHOD(get_parameters, 0) MOCK_METHOD(get_dataset, 0) MOCK_METHOD(get_network_instance, 0) - MOCK_METHOD(divide_data_train_test, 1); + MOCK_METHOD(divide_data_train_test, 1) MOCK_METHOD(return_full_data_set_for_training, 0) - MOCK_METHOD(eval_on_test_data, 1) + MOCK_METHOD(eval_on_test_data, 1, double(std::vector<double>*), id1) + MOCK_METHOD(eval_on_test_data, 2, double(std::string, std::vector<double>*), id2) + MOCK_METHOD(eval_on_test_data, 2, double(std::ofstream*, std::vector<double>*), id3) + MOCK_METHOD(eval_on_data_set, 2, double(DataSet*, std::vector<double>*), id4) + MOCK_METHOD(eval_on_data_set, 3, double(DataSet*, std::string, std::vector<double>*), id5) + MOCK_METHOD(eval_on_data_set, 3, double(DataSet*, std::ofstream*, std::vector<double>*), id6) }; MOCK_BASE_CLASS(mock_dataSet, lib4neuro::DataSet) @@ -66,7 +79,8 @@ MOCK_BASE_CLASS(mock_dataSet, lib4neuro::DataSet) MOCK_METHOD(get_output_dim, 0) MOCK_METHOD(print_data, 0) MOCK_METHOD(store_text, 1) - + MOCK_METHOD(store_data_text, 1, void(std::string), id1) + MOCK_METHOD(store_data_text, 1, void(std::ofstream*), id2) }; diff --git a/src/tests/NeuralNetworkSum_test.cpp b/src/tests/NeuralNetworkSum_test.cpp index d757730a469cc2d9d7456d96577b668d1fe5f73b..c200f96dcdf991461ddf0da9cc62ee8d6f8e344d 100644 --- a/src/tests/NeuralNetworkSum_test.cpp +++ b/src/tests/NeuralNetworkSum_test.cpp @@ -17,29 +17,36 @@ using namespace lib4neuro; MOCK_BASE_CLASS(mock_network, lib4neuro::NeuralNetwork) { MOCK_METHOD(get_subnet, 2) - MOCK_METHOD(add_neuron, 3) - MOCK_METHOD(add_connection_simple, 4) - MOCK_METHOD(add_existing_connection, 4) - MOCK_METHOD(copy_parameter_space, 1) - MOCK_METHOD(set_parameter_space_pointers, 1) - MOCK_METHOD(eval_single, 3) - MOCK_METHOD(add_to_gradient_single, 4) - MOCK_METHOD(randomize_weights, 0) - MOCK_METHOD(randomize_biases, 0) - MOCK_METHOD(randomize_parameters, 0) - MOCK_METHOD(get_n_inputs, 0) - MOCK_METHOD(get_n_outputs, 0) - MOCK_METHOD(get_n_weights, 0) - MOCK_METHOD(get_n_biases, 0) - MOCK_METHOD(get_neuron_bias_index, 1) - MOCK_METHOD(get_n_neurons, 0) - MOCK_METHOD(specify_input_neurons, 1) - MOCK_METHOD(specify_output_neurons, 1) - MOCK_METHOD(get_parameter_ptr_biases, 0) - MOCK_METHOD(get_parameter_ptr_weights, 0) - MOCK_METHOD(save_text, 1) - MOCK_METHOD(print_stats, 0) - MOCK_METHOD(print_weights, 0) + MOCK_METHOD(add_neuron, 3) + MOCK_METHOD(add_connection_simple, 4) + MOCK_METHOD(add_existing_connection, 4) + MOCK_METHOD(copy_parameter_space, 1) + MOCK_METHOD(set_parameter_space_pointers, 1) + MOCK_METHOD(eval_single, 3) + MOCK_METHOD(add_to_gradient_single, 4) + MOCK_METHOD(randomize_weights, 0) + MOCK_METHOD(randomize_biases, 0) + MOCK_METHOD(randomize_parameters, 0) + MOCK_METHOD(get_n_inputs, 0) + MOCK_METHOD(get_n_outputs, 0) + MOCK_METHOD(get_n_weights, 0) + MOCK_METHOD(get_n_biases, 0) + MOCK_METHOD(get_neuron_bias_index, 1) + MOCK_METHOD(get_n_neurons, 0) + MOCK_METHOD(specify_input_neurons, 1) + MOCK_METHOD(specify_output_neurons, 1) + MOCK_METHOD(get_parameter_ptr_biases, 0) + MOCK_METHOD(get_parameter_ptr_weights, 0) + MOCK_METHOD(save_text, 1) + MOCK_METHOD(write_weights, 0, void(), id1) + MOCK_METHOD(write_weights, 1, void(std::string), id2) + MOCK_METHOD(write_weights, 1, void(std::ofstream*), id3) + MOCK_METHOD(write_biases, 0, void(), id4) + MOCK_METHOD(write_biases, 1, void(std::string), id5) + MOCK_METHOD(write_biases, 1, void(std::ofstream*), id6) + MOCK_METHOD(write_stats, 0, void(), id7) + MOCK_METHOD(write_stats, 1, void(std::string), id8) + MOCK_METHOD(write_stats, 1, void(std::ofstream*), id9) }; /** diff --git a/src/tests/ParticleSwarm_test.cpp b/src/tests/ParticleSwarm_test.cpp index f4be2b1386b51235fb58d775866414678968e2ba..18116cf8c4d2832ea34507cdcdb031ec8affeae8 100644 --- a/src/tests/ParticleSwarm_test.cpp +++ b/src/tests/ParticleSwarm_test.cpp @@ -32,14 +32,19 @@ using namespace lib4neuro; MOCK_BASE_CLASS(mock_Error, ErrorFunction) { MOCK_METHOD(eval, 1) - MOCK_METHOD(get_dimension, 0) - MOCK_METHOD(calculate_error_gradient, 4) - MOCK_METHOD(get_parameters, 0) - MOCK_METHOD(get_dataset, 0) - MOCK_METHOD(get_network_instance, 0) - MOCK_METHOD(divide_data_train_test, 1); + MOCK_METHOD(get_dimension, 0) + MOCK_METHOD(calculate_error_gradient, 4) + MOCK_METHOD(get_parameters, 0) + MOCK_METHOD(get_dataset, 0) + MOCK_METHOD(get_network_instance, 0) + MOCK_METHOD(divide_data_train_test, 1) MOCK_METHOD(return_full_data_set_for_training, 0) - MOCK_METHOD(eval_on_test_data, 1) + MOCK_METHOD(eval_on_test_data, 1, double(std::vector<double>*), id1) + MOCK_METHOD(eval_on_test_data, 2, double(std::string, std::vector<double>*), id2) + MOCK_METHOD(eval_on_test_data, 2, double(std::ofstream*, std::vector<double>*), id3) + MOCK_METHOD(eval_on_data_set, 2, double(DataSet*, std::vector<double>*), id4) + MOCK_METHOD(eval_on_data_set, 3, double(DataSet*, std::string, std::vector<double>*), id5) + MOCK_METHOD(eval_on_data_set, 3, double(DataSet*, std::ofstream*, std::vector<double>*), id6) }; /** @@ -47,9 +52,8 @@ MOCK_BASE_CLASS(mock_Error, ErrorFunction) */ double test_particle_swarm_neural_net_error_function(double *weights){ - -return 0; - } + return 0; +} BOOST_AUTO_TEST_SUITE(ParticleSwarm_test) diff --git a/src/tests/Particle_test.cpp b/src/tests/Particle_test.cpp index e4a4321f19cacc9636594d291cd16c58db22aa4a..0405bec0a34337c6c43e3ee5376dccc10dbf2051 100644 --- a/src/tests/Particle_test.cpp +++ b/src/tests/Particle_test.cpp @@ -36,9 +36,14 @@ MOCK_BASE_CLASS(mock_Error, ErrorFunction) MOCK_METHOD(get_parameters, 0) MOCK_METHOD(get_dataset, 0) MOCK_METHOD(get_network_instance, 0) - MOCK_METHOD(divide_data_train_test, 1); + MOCK_METHOD(divide_data_train_test, 1) MOCK_METHOD(return_full_data_set_for_training, 0) - MOCK_METHOD(eval_on_test_data, 1) + MOCK_METHOD(eval_on_test_data, 1, double(std::vector<double>*), id1) + MOCK_METHOD(eval_on_test_data, 2, double(std::string, std::vector<double>*), id2) + MOCK_METHOD(eval_on_test_data, 2, double(std::ofstream*, std::vector<double>*), id3) + MOCK_METHOD(eval_on_data_set, 2, double(DataSet*, std::vector<double>*), id4) + MOCK_METHOD(eval_on_data_set, 3, double(DataSet*, std::string, std::vector<double>*), id5) + MOCK_METHOD(eval_on_data_set, 3, double(DataSet*, std::ofstream*, std::vector<double>*), id6) }; /** @@ -67,13 +72,14 @@ BOOST_AUTO_TEST_CASE(Particle_get_coordinate_test) { BOOST_CHECK(*particle1.get_coordinate() != *particle2.get_coordinate()); } + BOOST_AUTO_TEST_CASE(Particle_get_optimal_value_test) { std::vector<double> domain_bound{ 1, 2, 3, 4, 5 }; mock_Error error; MOCK_EXPECT(error.get_dimension).returns(5); MOCK_EXPECT(error.eval).returns(0.8); - + Particle particle1(&error, &domain_bound); BOOST_CHECK_EQUAL(0.8, particle1.get_optimal_value());