Program Listing for File EfficientWorld.test.cc¶
↰ Return to documentation for file (source/test/efficient_mode_test/EfficientWorld.test.cc
)
#include "../../efficient_mode/EfficientWorld.h"
TEST_CASE("Efficient SetupSymbionts", "[efficient]") {
GIVEN("a world") {
emp::Random random(17);
SymConfigBase config;
EfficientWorld world(random, &config);
size_t world_size = 6;
world.Resize(world_size);
config.FREE_LIVING_SYMS(1);
WHEN("SetupSymbionts is called") {
size_t num_to_add = 2;
world.SetupSymbionts(&num_to_add);
THEN("The specified number of efficient symbionts are added to the world") {
size_t num_added = world.GetNumOrgs();
REQUIRE(num_added == num_to_add);
emp::Ptr<Organism> symbiont;
for (size_t i = 0; i < world_size; i++) {
symbiont = world.GetSymAt(i);
if (symbiont) {
REQUIRE(symbiont->GetEfficiency() == 1);
REQUIRE(symbiont->GetName() == "EfficientSymbiont");
}
}
}
}
}
}
TEST_CASE("Efficient SetupHosts", "[efficient]") {
GIVEN("a world") {
emp::Random random(17);
SymConfigBase config;
EfficientWorld world(random, &config);
WHEN("SetupHosts is called") {
size_t num_to_add = 5;
world.SetupHosts(&num_to_add);
THEN("The specified number of efficient hosts are added to the world") {
size_t num_added = world.GetNumOrgs();
REQUIRE(num_added == num_to_add);
emp::Ptr<Organism> host = world.GetPop()[0];
REQUIRE(host != nullptr);
REQUIRE(host->GetName() == "EfficientHost");
}
}
}
}
TEST_CASE("Efficient Setup", "[efficient]") {
GIVEN("a world") {
emp::Random random(17);
SymConfigBase config;
EfficientWorld world(random, &config);
config.GRID_X(1);
config.GRID_Y(1);
double eff_mut_rate;
double horiz_mut_rate = 1;
config.HORIZ_MUTATION_RATE(horiz_mut_rate);
WHEN("The config option for the efficiency mutation rate is -1") {
eff_mut_rate = -1;
config.EFFICIENCY_MUT_RATE(eff_mut_rate);
world.Setup();
THEN("The horizontal mutation rate is used") {
REQUIRE(config.EFFICIENCY_MUT_RATE() == horiz_mut_rate);
}
}
WHEN("The config option for the efficiency mutation rate is not -1") {
eff_mut_rate = 0.2;
config.EFFICIENCY_MUT_RATE(eff_mut_rate);
world.Setup();
THEN("The efficiency mutation rate is used") {
REQUIRE(config.EFFICIENCY_MUT_RATE() == eff_mut_rate);
}
}
}
}