Rename GenerationLimit to GenerationLimitCondition. Add test for this class.
[genetic.git] / tests / condition / generationLimitCondition / check.cpp
diff --git a/tests/condition/generationLimitCondition/check.cpp b/tests/condition/generationLimitCondition/check.cpp
new file mode 100644 (file)
index 0000000..7173437
--- /dev/null
@@ -0,0 +1,40 @@
+#include <iostream>
+#include <vector>
+
+#include "gene.h"
+#include "chromosome.h"
+#include "generation.h"
+#include "generator/bitGenerator.h"
+#include "condition/generationLimitCondition.h"
+
+using namespace std;
+using namespace genetic;
+
+int main() {
+    typedef Gene<int> _Gene;
+    typedef Chromosome<_Gene> _Chromosome;
+    typedef Generation<_Chromosome> _Generation;
+    typedef generator::BitGenerator<_Chromosome> _Generator;
+    typedef GenerationLimitCondition<_Chromosome> _Condition;
+
+    const unsigned int chromosomeSize = 20;
+    const unsigned int generationSize = 100;
+    const unsigned int numberOfChecks = 20;
+
+    _Generator generator(generationSize, chromosomeSize);
+    _Generation generation = generator.breed();
+    _Condition condition(numberOfChecks);
+
+    unsigned int i = 0;
+    while(condition.check(generation)) {
+        if (i > numberOfChecks) {
+            cout << "GenerationLimitCondition got outside limit\n";
+            return 1;
+        }
+        i++;
+    }
+
+    cout << "BitGenerator breeded correctly\n";
+    return 0;
+}
+