void test_needs( const npc &who, const numeric_interval<int> &hunger, const numeric_interval<int> &thirst, const numeric_interval<int> &fatigue ) { CHECK( who.get_hunger() <= hunger.max ); CHECK( who.get_hunger() >= hunger.min ); CHECK( who.get_thirst() <= thirst.max ); CHECK( who.get_thirst() >= thirst.min ); CHECK( who.get_fatigue() <= fatigue.max ); CHECK( who.get_fatigue() >= fatigue.min ); }
void sane( const npc &who ) { CHECK( who.get_hunger() >= 0 ); CHECK( who.thirst >= 0 ); CHECK( who.fatigue >= -25 ); }
model_npc.set_mutation( "WEB_WEAVER" ); return model_npc; } TEST_CASE("on_load-sane-values") { npc model_npc = create_model(); SECTION("Awake for 10 minutes, gaining hunger/thirst/fatigue") { npc test_npc = model_npc; const int five_min_ticks = 2; on_load_test( test_npc, 0, MINUTES(5 * five_min_ticks) ); const int margin = 1; CHECK( test_npc.get_hunger() <= five_min_ticks + margin ); CHECK( test_npc.thirst <= five_min_ticks + margin ); CHECK( test_npc.fatigue <= five_min_ticks + margin ); CHECK( test_npc.get_hunger() >= five_min_ticks - margin ); CHECK( test_npc.thirst >= five_min_ticks - margin ); CHECK( test_npc.fatigue >= five_min_ticks - margin ); } SECTION("Awake for 2 days, gaining hunger/thirst/fatigue") { npc test_npc = model_npc; const int five_min_ticks = HOURS(2 * 24) / MINUTES(5); on_load_test( test_npc, 0, MINUTES(5 * five_min_ticks) ); const int margin = 10; CHECK( test_npc.get_hunger() <= five_min_ticks + margin ); CHECK( test_npc.thirst <= five_min_ticks + margin );