Something went wrong. Try again.
Perl game server for TLE Community
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293use lib '../lib';
use strict;use warnings;
use Test::More;use Test::Deep;use Test::Memory::Cycle;use Data::Dumper;use 5.010;use DateTime;use Lacuna;use TestHelper;
my $tester = TestHelper->new->use_existing_test_empire;my $session_id = $tester->session->id;my $empire = $tester->empire;my $home = $empire->home_planet;
# Demolish all 'algae' test buildings#my $algae_rs = Lacuna->db->resultset('Building')->search({ class => 'Lacuna::DB::Result::Building::Food::Algae', body_id => $home->id,});while (my $algae_building = $algae_rs->next) { diag("Demolishing algae ".$algae_building->id); $algae_building->demolish;};
# Test construction of a level 1 building#$tester->find_empty_plot;my $building_1 = Lacuna->db->resultset('Lacuna::DB::Result::Building')->new({ x => $tester->x, y => $tester->y, class => 'Lacuna::DB::Result::Building::Food::Algae', level => 0,});$home->build_building($building_1);diag("Building ".$building_1->id." ends at ".$building_1->upgrade_ends);
sleep 3;
$tester->find_empty_plot;my $building_2 = Lacuna->db->resultset('Lacuna::DB::Result::Building')->new({ x => $tester->x, y => $tester->y, class => 'Lacuna::DB::Result::Building::Food::Algae', level => 0,});$home->build_building($building_2);diag("Building ".$building_2->id." ends at ".$building_2->upgrade_ends);
my $retry = 0;my $building_1_complete;my $building_2_complete;TICK:while () { sleep 1; $building_1->discard_changes; $building_2->discard_changes; diag("tick: ".++$retry);
if (not $building_1_complete and not $building_1->is_upgrading) { cmp_ok($retry, '>=', 12, "upgrade is not premature"); cmp_ok($retry, '<', 15, "upgrade is not late"); $building_1_complete = 1; } if (not $building_2_complete and not $building_2->is_upgrading) { cmp_ok($retry, '>=', 27, "upgrade is not premature"); cmp_ok($retry, '<', 30, "upgrade is not late"); $building_2_complete = 1; } last TICK if $building_1_complete and $building_2_complete;
if ($retry > 32) { fail("Build did not terminate in time"); last TICK; }
}
sleep 1;
done_testing;
1;