Newer
Older
/**
* DESCRIPTION OF THE CLASS
*
* @author David Vojtek
* @date 2018
*/
kra568
committed
#define BOOST_TEST_MODULE ParticleSwarm_test
#include "boost_unit_tests_preamble.h"
#include "../LearningMethods/ParticleSwarm.h"
#include <turtle/mock.hpp>
MOCK_BASE_CLASS(mock_Error, lib4neuro::ErrorFunction)
{
MOCK_METHOD(eval, 1)
MOCK_METHOD(calculate_error_gradient, 3)
MOCK_METHOD(get_parameters, 0)
MOCK_METHOD(get_dataset, 0)
MOCK_METHOD(get_dimension, 0)
/**
* Boost testing suite for testing ParticleSwarm.h
*/
double test_particle_swarm_neural_net_error_function(double *weights){
BOOST_AUTO_TEST_CASE(ParticleSwarm_construction_test){
std::vector<double> domain_bound;
domain_bound.push_back(5);
BOOST_CHECK_NO_THROW(ParticleSwarm swarm(&domain_bound, 0, 1, 1, 0.5, 0.05, 0.5, 0, 20));
BOOST_AUTO_TEST_CASE(ParticleSwarm_optimalize_and_get_parameters_test){
domain_bound.push_back(-5);
domain_bound.push_back(5);
domain_bound.push_back(-5);
domain_bound.push_back(5);
domain_bound.push_back(-5);
domain_bound.push_back(5);
domain_bound.push_back(-5);
domain_bound.push_back(5);
domain_bound.push_back(-5);
domain_bound.push_back(5);
mock_Error error;
MOCK_EXPECT(error.get_dimension).returns(5);
MOCK_EXPECT(error.eval).returns(0.8);
ParticleSwarm swarm(&domain_bound, 0, 1, 1, 1, 1, 1, 5, 20);
BOOST_CHECK_NO_THROW(swarm.optimize(error));
for (int i = 0; i < swarm.get_parameters()->size(); i++) {
BOOST_CHECK_NO_THROW(swarm.get_parameters()->at(i));
}