The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More;
use Test::Warn;

if ($] < 5.008000)
{
    plan skip_all => "Test requires perl 5.8.0 or greater";
}
if ($] == 5.015006)
{
    plan skip_all => "5.15.6 throws too many erroneous warnings";
}
else
{
    require Devel::Cover;
    Devel::Cover->import(qw( -silent 1 ));
    plan tests => 5;
}

Devel::Cover::set_coverage("none");
is Devel::Cover::get_coverage(),
   "",
   "Set coverage to none empties coverage";

Devel::Cover::set_coverage("all");
is Devel::Cover::get_coverage(),
   "branch condition path pod statement subroutine time",
   "Set coverage to all fills coverage";

Devel::Cover::remove_coverage("path");
is Devel::Cover::get_coverage(),
   "branch condition pod statement subroutine time",
   "Removing path coverage works";

warning_like { Devel::Cover::add_coverage("does_not_exist") }
   qr/Devel::Cover: Unknown coverage criterion "does_not_exist" ignored./,
   "Adding non-existent coverage warns";
is Devel::Cover::get_coverage(),
   "branch condition pod statement subroutine time",
   "Adding non-existent coverage has no effect";