The real first thing you test is if the module loaded.
use Test::More tests => 1;
BEGIN { use_ok( 'Date::ICal' ); }
Has to be inside a BEGIN block to act like a real 'use' and export functions at the right time
Remember the black magic? That's what it was doing.
Also require_ok().
Can cause intermittent failures on compilation error, so:
BEGIN { use_ok( 'Date::ICal' ) or exit; }