Gruntmaster::Data::purge '/sol/' . $self->id;
};
-sub is_private {
- my ($self, $time) = @_;
- return 0 if grep { !$_->contest->is_pending($time) } $self->contest_problems;
- return 1 if $self->private;
- grep { $_->contest->is_pending($time) } $self->contest_problems;
-}
-
-sub is_in_archive {
- my ($self, $time) = @_;
- 0 == grep { $_->contest->is_running($time) } $self->contest_problems;
-}
-
sub rerun {
$_->rerun for shift->jobs
}
=head1 METHODS
-=head2 is_private(I<[$time]>)
-
-Returns true if the problem is private at time I<$time> (which defaults to C<time>).
-
-=head2 is_in_archive(I<[$time]>)
-
-Returns true if the problem is in the archive at time I<$time> (which defaults to C<time>).
-
=head2 rerun
Reruns all jobs for this problem.
#!/usr/bin/perl -w
use v5.14;
-use Test::More tests => 13;
+use Test::More tests => 6;
BEGIN { use_ok('Gruntmaster::Data') };
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)';