TEST(ProcreationTests, SimpleProcreationTest) { bug_list.clear(); for (int i = 0; i < 10; i++) { // The provided code has "if (...health > REPRODUCE_HEALTH) instead of >= bug_list.push_back(initBug(i, i, rand() % 8, REPRODUCE_HEALTH + 2, i, i + 10)); } initWorld(); reproduceBugs(); ASSERT_EQ(bug_list.size(), 20); for (int i = 10; i < bug_list.size(); i++) { auto &bug = bug_list[i]; ASSERT_EQ(bug.x, i - 10); ASSERT_EQ(bug.y, i - 10); ASSERT_EQ(bug.dir, bug_list[i - 10].dir); ASSERT_EQ(bug.health, REPRODUCE_HEALTH / 2 + 1); ASSERT_EQ(bug.generation, i - 9); ASSERT_EQ(bug.age, 0); } }
void timeStep() { time_step += 1; addFood(); moveBugs(); killDeadBugs(); reproduceBugs(); percent_straight = 100 * total_straight / bug_list.size() / GENE_TOTAL; percent_left = 100 * total_left / bug_list.size() / GENE_TOTAL; percent_right = 100 * total_right / bug_list.size() / GENE_TOTAL; percent_back = 100 * total_back / bug_list.size() / GENE_TOTAL; }