Skip to content
Snippets Groups Projects
ParticleSwarm_test.cpp 1.71 KiB
Newer Older
  • Learn to ignore specific revisions
  • David Vojtek's avatar
    David Vojtek committed
    /**
     * DESCRIPTION OF THE CLASS
     *
     * @author David Vojtek
     * @date 2018
     */
    
    
    David Vojtek's avatar
    David Vojtek committed
    
    
    #include "boost_unit_tests_preamble.h"
    
    David Vojtek's avatar
    David Vojtek committed
    
    
    #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)
    		
    
    };
    using namespace lib4neuro;
    
    David Vojtek's avatar
    David Vojtek committed
    
    
    /**
     * Boost testing suite for testing ParticleSwarm.h
     */
    
    David Vojtek's avatar
    David Vojtek committed
    
    
    double test_particle_swarm_neural_net_error_function(double *weights){
    
    David Vojtek's avatar
    David Vojtek committed
    
    
    David Vojtek's avatar
    David Vojtek committed
    
    BOOST_AUTO_TEST_SUITE(ParticleSwarm_test)
    
    
    David Vojtek's avatar
    David Vojtek committed
        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){
    
            std::vector<double> domain_bound;
    
            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));
    		}
    
    David Vojtek's avatar
    David Vojtek committed
    
        }
    
    BOOST_AUTO_TEST_SUITE_END()