- An already-completed task may now also be deleted.
- Added unit tests.
This commit is contained in:
Paul Beckingham 2011-10-23 23:49:25 -04:00
parent fce2469f41
commit e5303a2180
3 changed files with 19 additions and 16 deletions

View file

@ -145,7 +145,7 @@ void TF2::add_task (const Task& task)
}
////////////////////////////////////////////////////////////////////////////////
void TF2::modify_task (const Task& task)
bool TF2::modify_task (const Task& task)
{
// Modify in-place.
std::string uuid = task.get ("uuid");
@ -155,12 +155,13 @@ void TF2::modify_task (const Task& task)
if (i->get ("uuid") == uuid)
{
*i = task;
break;
_modified_tasks.push_back (task);
_dirty = true;
return true;
}
}
_modified_tasks.push_back (task);
_dirty = true;
return false;
}
////////////////////////////////////////////////////////////////////////////////
@ -522,17 +523,9 @@ void TDB2::modify (Task& task)
if (taskDiff (original, task))
{
std::string status = original.get ("status");
if (status == "pending" ||
status == "waiting" ||
status == "recurring")
{
pending.modify_task (task);
}
else
{
// Update the task, wherever it is.
if (!pending.modify_task (task))
completed.modify_task (task);
}
// time <time>
// old <task>

View file

@ -51,7 +51,7 @@ public:
const std::string& get_contents ();
void add_task (const Task&);
void modify_task (const Task&);
bool modify_task (const Task&);
void add_line (const std::string&);
void clear_lines ();
void commit ();

View file

@ -28,7 +28,7 @@
use strict;
use warnings;
use Test::More tests => 14;
use Test::More tests => 16;
# Create the rc file.
if (open my $fh, '>', 'delete.rc')
@ -70,6 +70,16 @@ $output = qx{../src/task rc:delete.rc 1 info};
like ($output, qr/foo/, 'Deletion annotation successful');
like ($output, qr/H/, 'Deletion modification successful');
# Add a task, complete it, then delete it.
qx{../src/task rc:delete.rc add three};
$output = qx{../src/task rc:delete.rc 2 info};
like ($output, qr/three/, 'added and verified new task');
my ($uuid) = $output =~ /UUID\s+(\S+)/;
qx{../src/task rc:delete.rc 2 done};
qx{../src/task rc:delete.rc $uuid delete};
$output = qx{../src/task rc:delete.rc $uuid info};
like ($output, qr/Deleted/, 'task added, completed, then deleted');
# Cleanup.
unlink qw(pending.data completed.data undo.data backlog.data synch.key delete.rc);
ok (! -r 'pending.data' &&