Add tests for Chromosome and Generation.
[genetic.git] / tests / generation / create.cpp
1 #include <iostream>
2 #include <vector>
3
4 #include "gene.h"
5 #include "chromosome.h"
6 #include "generation.h"
7
8 using namespace std;
9 using namespace genetic;
10
11 int main() {
12     typedef Gene<int> _Gene;
13     typedef Chromosome<_Gene> _Chromosome;
14     typedef Generation<_Chromosome> _Generation;
15
16     const unsigned int chromosomeSize = 20;
17     const unsigned int generationSize = 100;
18
19     std::vector<_Gene> chromosomeData;
20     std::vector<_Chromosome> generationData;
21
22     for (unsigned int i = 0; i < generationSize; i++) {
23         for (unsigned int j = 0; j < chromosomeSize; j++) {
24             chromosomeData.push_back(_Gene(i*j));
25         }
26         generationData.push_back(_Chromosome(chromosomeData));
27     }
28
29     _Generation generation(generationData);
30
31     if (generation.size() != generationSize) {
32         cout << "Generation contained incorrect size after creation\n";
33         return 1;
34     }
35
36     for (unsigned int i = 0; i < generation.size(); i++) {
37         for (unsigned int j = 0; j < generation[i].size(); j++) {
38             if (generation[i][j].get() != generationData[i][j].get()) {
39                 cout << "Generation contained bad data after creation\n";
40                 return 1;
41             }
42         }
43     }
44
45     cout << "Generation is created correctly\n";
46     return 0;
47 }
48