File: [local] / todotxt / Text-Todo / t / special_tags.t (download)
Revision 1.7, Sun Feb 14 00:50:56 2010 UTC (14 years, 4 months ago) by andrew
Branch: MAIN
CVS Tags: HEAD Changes since 1.6: +33 -8 lines
Add the ability to learn tags after creating the object.
|
#===============================================================================
#
# FILE: special_tags.t
#
# DESCRIPTION: Test special tags
#
# AUTHOR: Andrew Fresh (AAF), andrew@cpan.org
# COMPANY: Red River Communications
# CREATED: 01/09//10 17:43
# REVISION: $AFresh1: special_tags.t,v 1.7 2010/02/14 00:50:56 andrew Exp $
#===============================================================================
use strict;
use warnings;
use Test::More tests => 30;
my $class;
BEGIN {
$class = 'Text::Todo::Entry';
use_ok( $class, "use $class" )
}
diag("Testing special tags in $class $Text::Todo::Entry::VERSION");
my %sample = (
text => '(B) @home @work send email to mailto:andrew@cpan.org DUE:2011-01-01 +say_thanks',
known_tags => {
context => '@',
project => '+',
due_date => 'DUE:',
},
extra_tags => { 'email' => 'mailto:' },
priority => 'B',
contexts => [ 'home', 'work' ],
projects => ['say_thanks'],
due_dates => ['2011-01-01'],
emails => ['andrew@cpan.org'],
);
my $e = new_ok($class, [ {text => $sample{text}, tags => { due_date => 'DUE:' }} ]);
is( $e->text, $sample{text}, 'Make sure entry matches' );
is( $e->priority, $sample{priority}, 'check priority' );
my $known_tags = $sample{known_tags};
check_tags($e, $known_tags);
foreach my $key (keys %{ $sample{extra_tags} }) {
ok( $e->learn_tag( $key, $sample{extra_tags}{$key} ), "Learn tag [$key]");
$known_tags->{ $key } = $sample{extra_tags}{$key};
}
check_tags($e, $known_tags);
#done_testing();
sub check_tags {
my ($e, $known_tags) = @_;
is_deeply( $e->known_tags, $known_tags, 'check known_tags' );
foreach my $key (keys %{ $known_tags }) {
my $t = $key . 's';
my $in = 'in_' . $key;
is_deeply( [ $e->$t ], $sample{$t}, "check [$t]" );
ok( !$e->$in(''), "check not [$in]");
foreach my $value (@{ $sample{$t} }) {
ok( $e->$in($value), "check [$in] [$value]");
}
}
}