diff --git a/src/tests/dateformat.t b/src/tests/dateformat.t index 83fe0b293..c08cdb884 100755 --- a/src/tests/dateformat.t +++ b/src/tests/dateformat.t @@ -28,27 +28,45 @@ use strict; use warnings; -use Test::More tests => 5; +use Test::More tests => 8; # Create the rc file. -if (open my $fh, '>', 'date.rc') +if (open my $fh, '>', 'date1.rc') { print $fh "data.location=.\n", "dateformat=YMD\n"; close $fh; - ok (-r 'date.rc', 'Created date.rc'); + ok (-r 'date1.rc', 'Created date1.rc'); } -qx{../task rc:date.rc add foo due:20091231}; -my $output = qx{../task rc:date.rc info 1}; +if (open my $fh, '>', 'date2.rc') +{ + print $fh "data.location=.\n", + "dateformat=m/d/y\n"; + close $fh; + ok (-r 'date2.rc', 'Created date2.rc'); +} + +qx{../task rc:date1.rc add foo due:20091231}; +my $output = qx{../task rc:date1.rc info 1}; like ($output, qr/\b20091231\b/, 'date format YMD parsed'); +unlink 'pending.data'; +ok (!-r 'pending.data', 'Removed pending.data'); + +qx{../task rc:date2.rc add foo due:12/1/09}; +$output = qx{../task rc:date2.rc info 1}; +like ($output, qr/\b12\/1\/09\b/, 'date format m/d/y parsed'); + # Cleanup. unlink 'pending.data'; ok (!-r 'pending.data', 'Removed pending.data'); -unlink 'date.rc'; -ok (!-r 'date.rc', 'Removed date.rc'); +unlink 'date1.rc'; +ok (!-r 'date1.rc', 'Removed date1.rc'); + +unlink 'date2.rc'; +ok (!-r 'date2.rc', 'Removed date2.rc'); exit 0; diff --git a/src/tests/shadow.t b/src/tests/shadow.t new file mode 100755 index 000000000..abea89205 --- /dev/null +++ b/src/tests/shadow.t @@ -0,0 +1,101 @@ +#! /usr/bin/perl +################################################################################ +## task - a command line task list manager. +## +## Copyright 2006 - 2009, Paul Beckingham. +## All rights reserved. +## +## This program is free software; you can redistribute it and/or modify it under +## the terms of the GNU General Public License as published by the Free Software +## Foundation; either version 2 of the License, or (at your option) any later +## version. +## +## This program is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +## FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +## details. +## +## You should have received a copy of the GNU General Public License along with +## this program; if not, write to the +## +## Free Software Foundation, Inc., +## 51 Franklin Street, Fifth Floor, +## Boston, MA +## 02110-1301 +## USA +## +################################################################################ + +use strict; +use warnings; +use Test::More tests => 21; + +# Create the rc file. +if (open my $fh, '>', 'shadow.rc') +{ + print $fh "data.location=.\n", + "shadow.file=./shadow.txt\n", + "shadow.command=stats\n", + "shadow.notify=on\n"; + close $fh; + ok (-r 'shadow.rc', 'Created shadow.rc'); +} + +my $output = qx{../task rc:shadow.rc add one}; +like ($output, qr/\[Shadow file '\.\/shadow\.txt' updated\]/, 'shadow file updated on add'); + +$output = qx{../task rc:shadow.rc list}; +unlike ($output, qr/\[Shadow file '\.\/shadow\.txt' updated\]/, 'shadow file not updated on list'); + +$output = qx{../task rc:shadow.rc delete 1}; +like ($output, qr/\[Shadow file '\.\/shadow\.txt' updated\]/, 'shadow file updated on delete'); + +$output = qx{../task rc:shadow.rc list}; +like ($output, qr/\[Shadow file '\.\/shadow\.txt' updated\]/, 'shadow file updated on list'); + +# Inspect the shadow file. +my $file = slurp ('./shadow.txt'); +like ($file, qr/Pending\s+0\n/, 'Pending 0'); +like ($file, qr/Recurring\s+0\n/, 'Recurring 0'); +like ($file, qr/Completed\s+0\n/, 'Completed 0'); +like ($file, qr/Deleted\s+1\n/, 'Deleted 1'); +like ($file, qr/Total\s+1\n/, 'Total 1'); +like ($file, qr/Task used for\s+-\n/, 'Task used for -'); +like ($file, qr/Task added every\s+-\n/, 'Task added every -'); +like ($file, qr/Task deleted every\s+-\n/, 'Task deleted every -'); +like ($file, qr/Average desc length\s+3 characters\n/, 'Average desc length 3 characters'); +like ($file, qr/Tasks tagged\s+0%\n/, 'Tasks tagged 0%'); +like ($file, qr/Unique tags\s+0\n/, 'Unique tags 0'); +like ($file, qr/Projects\s+0\n/, 'Projects 0'); + +# Cleanup. +unlink 'pending.data'; +ok (!-r 'pending.data', 'Removed pending.data'); + +unlink 'completed.data'; +ok (!-r 'completed.data', 'Removed completed.data'); + +unlink 'shadow.rc'; +ok (!-r 'shadow.rc', 'Removed shadow.rc'); + +unlink 'shadow.txt'; +ok (!-r 'shadow.txt', 'Removed shadow.txt'); + +exit 0; + +################################################################################ +sub slurp +{ + my ($file) = @_; + local $/; + + if (open my $fh, '<', $file) + { + my $contents = <$fh>; + close $fh; + return $contents; + } + + ''; +} +