Всем привет ::) Господа, вы наверное будете в голос ржать, но я в жизни не занимался тестированием кода, вот прям сосем никогда, от того прошу советов как тестировать чем тестировать и что по теме почитать/поучить как это дело автоматизируется и прочее. Да есть google, но я как всегда иду туда в последнюю очередь. Ну и смею себе позволить позвать людей (кого с ходу вспомню) плотно работающий с «С». Cast DELIRIUM, i-rinat, beastie, ncrmnt, theNamelessOne, Murg, Iron_Bug. Всем добра и улыбашек ::)
По просьбе i-rinat пример кода (просто рандомный код из закромов откопанный/заброшенный/недописанный, в общем то что нужно)
#include <stddef.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
struct $struct_neuron
{
size_t id;
struct $struct_neuron ** sinapses_connections;
size_t sinapses_connections_size;
float * sinapses_weight;
struct $struct_neuron ** acsons_connections;
size_t acsons_connections_size;
float acsons_result_signals;
void (*finp)();
void (*fmid)();
void (*fout)();
};typedef struct $struct_neuron struct_neuron;
struct $struct_network
{
size_t id;
size_t network_size;
struct_neuron * neurons;
struct $struct_network ** network_connections;
size_t network_connections_size;;
};typedef struct $struct_network struct_network;
struct $struct_net_union
{
size_t id;
struct_network ** networks;
size_t net_union_size;
};typedef struct $struct_net_union struct_net_union;
struct_neuron neuro_neuron_new(void);
void neuro_neuron_connect(struct_neuron* acson, struct_neuron * sinaps);
struct_network neuro_network_new(size_t neurons);
void neuro_network_connect(struct_network* net1, struct_network* net2);
#include "neuro.h"
struct_neuron neuro_neuron_new(void)
{
static size_t id=0;
struct_neuron neuron;
neuron.id=id++;
neuron.sinapses_connections = NULL;
neuron.sinapses_connections_size = 0;
neuron.sinapses_weight = NULL;
neuron.acsons_connections = NULL;
neuron.acsons_connections_size = 0;
neuron.acsons_result_signals = 0.0;
return neuron;
}
void neuro_neuron_connect(struct_neuron * acson, struct_neuron * sinaps)
{
sinaps->sinapses_weight = realloc(sinaps->sinapses_weight,sizeof(float)*sinaps->sinapses_connections_size+1);
srand(clock());
sinaps->sinapses_weight[sinaps->sinapses_connections_size] = (float)(rand()/100000009);
sinaps->sinapses_connections = realloc(sinaps->sinapses_connections,sizeof(struct_neuron)*(sinaps->sinapses_connections_size+1));
sinaps->sinapses_connections[sinaps->sinapses_connections_size++] = acson;
acson->acsons_connections = realloc(acson->acsons_connections,sizeof(struct_neuron)*(acson->acsons_connections_size+1));
acson->acsons_connections[acson->acsons_connections_size++] = sinaps;
}
struct_network neuro_network_new(size_t neurons)
{
static size_t id = 0;
struct_network network;
network.id = id++;
network.network_size = neurons;
network.neurons = NULL;
network.network_connections = NULL;
network.network_connections_size = 0;
network.neurons = malloc(sizeof(struct_neuron)*neurons);
for(size_t i = 0; i < neurons; i++)
{
network.neurons[i] = neuro_neuron_new();
};
return network;
};
void neuro_network_connect(struct_network * net1, struct_network *net2)
{
net1->network_connections = realloc(net1->network_connections,sizeof(struct_network)*(net1->network_connections_size+1));
net1->network_connections[net1->network_connections_size++] = net2;
net2->network_connections = realloc(net2->network_connections,sizeof(struct_network)*(net2->network_connections_size+1));
net2->network_connections[net2->network_connections_size++] = net1;
for(size_t i = 0; i < net1->network_size; i++)
{
for(size_t p = 0; p < net2->network_size; p++)
{
neuro_neuron_connect(&net1->neurons[i],&net2->neurons[p]);
};
};
};
struct_net_union neuro_net_union_new()
{
static size_t id=0;
struct_net_union net_union;
net_union.id=id++;
net_union.networks=NULL;
net_union.net_union_size=0;
return net_union;
}
void neuro_net_union_add(struct_net_union * net_union, struct_network * network)
{
net_union->networks = realloc(net_union->networks,sizeof(struct_network)*(net_union->net_union_size+1));
net_union->networks[net_union->net_union_size] = network;
net_union->net_union_size++;
}
#include "neuro.h"
int main(int argc, char const *argv[])
{
struct_network net1 = neuro_network_new(100);
struct_network net2 = neuro_network_new(100);
neuro_network_connect(&net1,&net2);
return 0;
}
gcc -g neuro.c main.c -o neuro