X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=t%2FGruntmaster-Data.t;h=e9d20ac8cf7938b27d05fdd150a3c276eb0fd9c1;hb=aaa9eb7d81598848183239016890f3a851082154;hp=b2786fd3e28be5ae40a90691a16769d1a69ad653;hpb=1ce4e27cb4d98315838ef24e9ed72a09f0ac6df5;p=gruntmaster-data.git diff --git a/t/Gruntmaster-Data.t b/t/Gruntmaster-Data.t index b2786fd..e9d20ac 100644 --- a/t/Gruntmaster-Data.t +++ b/t/Gruntmaster-Data.t @@ -1,10 +1,38 @@ #!/usr/bin/perl -w use v5.14; -use Test::More; -BEGIN { - plan skip_all => '$ENV{RUN_TESTS} is false, skipping tests' unless $ENV{RUN_TESTS}; - plan tests => 1; -} +use Test::More tests => 13; BEGIN { use_ok('Gruntmaster::Data') }; + +my $db = Gruntmaster::Data->connect('dbi:SQLite:dbname=:memory:'); +$db->deploy; + +$db->users->create({id => 'MGV'}); +$db->contests->create({id => 'fc', start => 10, stop => 20, name => 'Finished contest', owner => 'MGV'}); +$db->contests->create({id => 'rc', start => 20, stop => 30, name => 'Running contest', owner => 'MGV'}); +$db->contests->create({id => 'pc', start => 30, stop => 40, name => 'Pending contest', owner => 'MGV'}); + +ok $db->contest('pc')->is_pending(25), 'is_pending'; +ok !$db->contest('rc')->is_pending(25), '!is_pending'; +ok $db->contest('fc')->is_finished(25), 'is_finished'; +ok !$db->contest('rc')->is_finished(25), '!is_finished'; +ok $db->contest('rc')->is_running(25), 'is_running'; + +$db->problems->create({id => 'pb', name => 'Problem', generator => 'Undef', runner => 'File', judge => 'Absolute', level => 'beginner', value => 100, owner => 'MGV', statement => '...', testcnt => 1, timeout => 1, private => 0}); + +ok !$db->problem('pb')->is_private(25), '!is_private'; +$db->problem('pb')->update({private => 1}); +ok $db->problem('pb')->is_private(25), 'is_private (explicit)'; +$db->problem('pb')->update({private => 0}); + +$db->contest_problems->create({contest => 'pc', problem => 'pb'}); +ok $db->problem('pb')->is_private(25), 'is_private (implicit)'; +ok $db->problem('pb')->is_in_archive(25), 'is_in_archive'; + +$db->contest_problems->create({contest => 'rc', problem => 'pb'}); +ok $db->problem('pb')->is_private(25), 'is_private (also implicit)'; +ok !$db->problem('pb')->is_in_archive(25), '!is_in_archive'; + +$db->contest_problems->find('rc', 'pb')->delete; +ok $db->problem('pb')->is_in_archive(25), 'is_in_archive (again)';