Fix BitGenerator test.
[genetic.git] / tests / generator / bitGenerator / breed.cpp
1 #include <iostream>
2 #include <vector>
3
4 #include "gene.h"
5 #include "chromosome.h"
6 #include "generation.h"
7 #include "generator/bitGenerator.h"
8
9 using namespace std;
10 using namespace genetic;
11
12 int main() {
13     typedef Gene<int> _Gene;
14     typedef Chromosome<_Gene> _Chromosome;
15     typedef Generation<_Chromosome> _Generation;
16     typedef generator::BitGenerator<_Chromosome> _Generator;
17
18     const unsigned int chromosomeSize = 20;
19     const unsigned int generationSize = 100;
20
21     _Generator generator(generationSize, chromosomeSize);
22     _Generation generation = generator.breed();
23
24     if (generation.size() != generationSize) {
25         cout << "Generation contained incorrect size after breeding\n";
26         return 1;
27     }
28
29     for (unsigned int i = 0; i < generation.size(); i++) {
30         if (generation[i].size() != chromosomeSize) {
31             cout << "Chromosome contained bad size after breeding\n";
32             return 1;
33         }
34         for (unsigned int j = 0; j < generation[i].size(); j++) {
35             if ((generation[i][j].get() != 0) &&
36                 (generation[i][j].get() != 1)) {
37                 cout << "Chromosome breeded by BitGenerator does not have bit Genes\n";
38                 return 1;
39             }
40         }
41     }
42
43     cout << "BitGenerator breeded correctly\n";
44     return 0;
45 }
46