1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
/*!
@authors Andrei Novikov (pyclustering@yandex.ru)
@date 2014-2020
@copyright BSD-3-Clause
*/
#include <gtest/gtest.h>
#include <pyclustering/interface/pcnn_interface.h>
#include <pyclustering/interface/pyclustering_interface.h>
#include <pyclustering/interface/pyclustering_package.hpp>
#include "utenv_utils.hpp"
using namespace pyclustering::nnet;
static void CHECK_FREE_PACKAGE(pyclustering_package * package) {
ASSERT_NE(nullptr, package);
ASSERT_TRUE(package->size > 0);
free_pyclustering_package(package);
}
TEST(utest_interface_pcnn, pcnn_api) {
std::shared_ptr<pyclustering_package> stimulus = pack(pcnn_stimulus({ 1, 0, 1, 1, 0, 1, 1, 1, 1, 1 }));
pcnn_parameters parameters;
void * pcnn_network = pcnn_create(10, (unsigned int) connection_t::CONNECTION_ALL_TO_ALL, 0, 0, (void *) ¶meters);
ASSERT_NE(nullptr, pcnn_network);
void * dynamic = pcnn_simulate(pcnn_network, 10, stimulus.get());
ASSERT_NE(nullptr, dynamic);
std::size_t size_network = pcnn_get_size(pcnn_network);
ASSERT_EQ(10U, size_network);
pyclustering_package * package = pcnn_dynamic_allocate_sync_ensembles(dynamic);
CHECK_FREE_PACKAGE(package);
package = pcnn_dynamic_allocate_spike_ensembles(dynamic);
CHECK_FREE_PACKAGE(package);
package = pcnn_dynamic_allocate_time_signal(dynamic);
CHECK_FREE_PACKAGE(package);
package = pcnn_dynamic_get_output(dynamic);
CHECK_FREE_PACKAGE(package);
package = pcnn_dynamic_get_time(dynamic);
CHECK_FREE_PACKAGE(package);
std::size_t size_dynamic = pcnn_dynamic_get_size(dynamic);
ASSERT_GT(size_dynamic, 0U);
pcnn_dynamic_destroy(dynamic);
pcnn_destroy(pcnn_network);
}
|