add egg creation to qtgui debug menu
[openc2e.git] / tools / filetests.cpp
blob5003fdd62e5a74fe5514da8fe867b6e72f93bef5
1 #include "genome.h"
2 #include "Catalogue.h"
3 #include <fstream>
4 #include <typeinfo>
6 using namespace std;
8 /*
9 you'll need to change some of the source filenames here to point to valid files...
12 void testGenetics() {
13 ifstream f("/home/fuzzie/creatures3/Genetics/norn.bengal46.gen.brain.gen", std::ios::binary);
14 assert(!f.fail());
15 f >> noskipws;
17 ofstream o("/home/fuzzie/test.gen", std::ios::binary);
18 assert(!o.fail());
19 genomeFile g;
20 f >> g;
21 o << g;
23 cout << "read " << g.genes.size() << " genes\n";
25 for (vector<gene *>::iterator x = g.genes.begin(); x != g.genes.end(); x++) {
26 gene *t = *x;
28 cout << "semi-mangled name: " << typeid(*t).name() << "\n";
29 cout << "header flags: mut " << t->header.flags._mutable << " dup " << t->header.flags.dupable << " del " << t->header.flags.delable << "\n";
30 cout << "male-only " << t->header.flags.maleonly << " female-only " << t->header.flags.femaleonly << "\n";
31 if (typeid(*t) == typeid(organGene)) {
32 for (vector<gene *>::iterator y = ((organGene *)t)->genes.begin(); y != ((organGene *)t)->genes.end(); y++) {
33 gene *s = *y;
35 cout << "semi-mangled name: " << typeid(*s).name() << "\n";
36 cout << "header flags: mut " << s->header.flags._mutable << " dup " << s->header.flags.dupable << " del " << s->header.flags.delable << "\n";
37 cout << "male-only " << s->header.flags.maleonly << " female-only " << s->header.flags.femaleonly << "\n";
40 cout << '\n';
44 void testCatalogue() {
45 Catalogue c;
46 c.initFrom("data/Catalogue/");
48 cout << "\n*** dumping catalogue\n";
50 for (std::map<std::string, std::vector<string> >::iterator i = c.data.begin(); i != c.data.end(); i++) {
51 cout << endl << "TAG \"" << i->first << "\"" << endl;
52 for (std::vector<std::string>::iterator j = i->second.begin(); j != i->second.end(); j++) {
53 cout << "\"" << *j << "\"" << endl;
58 int main() {
59 try {
60 cout << "\n*** genome test\n\n";
61 testGenetics();
62 // cout << "\n*** catalogue test\n\n";
63 // testCatalogue();
64 cout << "\n*** done\n";
65 } catch (creaturesException &t) {
66 cout << "exception raised: " << t.what() << "!\n";
67 return -1;
70 return 0;