Всем привет ::) Господа, вы наверное будете в голос ржать, но я в жизни не занимался тестированием кода, вот прям сосем никогда, от того прошу советов как тестировать чем тестировать и что по теме почитать/поучить как это дело автоматизируется и прочее. Да есть google, но я как всегда иду туда в последнюю очередь. Ну и смею себе позволить позвать людей (кого с ходу вспомню) плотно работающий с «С». Cast  
DELIRIUM,   i-rinat,
i-rinat,  beastie,
beastie,  ncrmnt,
ncrmnt,  theNamelessOne,
theNamelessOne,  Murg,
Murg,  Iron_Bug. Всем добра и улыбашек ::)
Iron_Bug. Всем добра и улыбашек ::) 
По просьбе   i-rinat пример кода (просто рандомный код из закромов откопанный/заброшенный/недописанный, в общем то что нужно)
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



