data = new PopulationData<Object>(new Object(), 2, 1.2, 0.1, true, 10, 0, 1, 2);
assert !stagnation.shouldTerminate(data) : "Stagnation should not be triggered for at least 2 more generations.";
// Best doesn't improve but mean does.
data = new PopulationData<Object>(new Object(), 2, 1, 0.1, true, 10, 0, 2, 3);
// Best has stagnated but mean hasn't so shouldn't terminate.
assert !stagnation.shouldTerminate(data) : "Stagnation should not be triggered for at least 2 more generations.";
// Now we let the mean stagnate...and let the best candidate get fitter...
data = new PopulationData<Object>(new Object(), 2.1, 1.6, 0.1, true, 10, 0, 3, 4);
assert !stagnation.shouldTerminate(data) : "Stagnation should not be triggered for at least 1 more generation.";
data = new PopulationData<Object>(new Object(), 2.2, 1.5, 0.1, true, 10, 0, 4, 4);
assert stagnation.shouldTerminate(data) : "Stagnation should be triggered after 2 generations without improvement.";