- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
TaskChainedTest.pm.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:3k
源码类别:
外挂编程
开发平台:
Windows_Unix
- # Unit test for Task::Chained
- package TaskChainedTest;
- use strict;
- use Test::More;
- use Task::Chained;
- use Task::Testing;
- sub start {
- print "### Starting TaskChainedTestn";
- testBasicUsage();
- testMutexChanges();
- }
- sub testBasicUsage {
- print "Testing basic usage...n";
- my $taskA = new Task::Testing(name => 'A', mutexes => ['1', '2']);
- my $taskB = new Task::Testing(name => 'B', mutexes => []);
- my $taskC = new Task::Testing(name => 'C', mutexes => ['2', '3']);
- my $chain = new Task::Chained(tasks => [$taskA, $taskB, $taskC]);
- $chain->activate();
- ok($chain->getSubtask() == $taskA, "Current subtask is A.");
- is_deeply($chain->getMutexes(), ['1', '2'], "Chain has same mutexes as task A.");
- ok($chain->getStatus == Task::RUNNING, "Chain is running.");
- $chain->iterate();
- ok($chain->getSubtask() == $taskA, "Current subtask is still A.");
- is_deeply($chain->getMutexes(), ['1', '2'], "Chain still has same mutexes as task A.");
- ok($chain->getStatus == Task::RUNNING, "Chain is running.");
- $taskA->markDone();
- $chain->iterate();
- ok($chain->getSubtask() == $taskB, "Current subtask is B.");
- is_deeply($chain->getMutexes(), [], "Chain has same mutexes as task B.");
- ok($chain->getStatus == Task::RUNNING, "Chain is running.");
- $taskB->markDone();
- $chain->iterate();
- ok($chain->getSubtask() == $taskC, "Current subtask is C.");
- is_deeply($chain->getMutexes(), ['2', '3'], "Chain has same mutexes as task C.");
- ok($chain->getStatus == Task::RUNNING, "Chain is running.");
- $chain->iterate();
- ok($chain->getSubtask() == $taskC, "Current subtask is still C.");
- is_deeply($chain->getMutexes(), ['2', '3'], "Chain still has same mutexes as task C.");
- ok($chain->getStatus == Task::RUNNING, "Chain is running.");
- $taskC->markDone();
- $chain->iterate();
- ok(!defined($chain->getSubtask()), "No subtask active.");
- ok($chain->getStatus() == Task::DONE, "Chain is done.");
- }
- sub testMutexChanges {
- print "Testing dynamic mutex changes...n";
- my $taskA = new Task::Testing(name => 'A', mutexes => ['1', '2']);
- my $taskB = new Task::Testing(name => 'B', mutexes => []);
- my $taskC = new Task::Testing(name => 'C', mutexes => ['2', '3']);
- my $chain = new Task::Chained(tasks => [$taskA, $taskB, $taskC]);
- $chain->activate();
- $taskA->setMutexes('Foo', 'Bar');
- is_deeply($chain->getMutexes(), ['Foo', 'Bar']);
- $taskA->setMutexes();
- is_deeply($chain->getMutexes(), []);
- $taskA->setMutexes('Test');
- is_deeply($chain->getMutexes(), ['Test']);
- $taskB->setMutexes('hello');
- $taskA->markDone();
- $chain->iterate();
- ok($chain->getSubtask() == $taskB, "Current subtask is B.");
- is_deeply($chain->getMutexes(), ['hello']);
- $taskB->markDone();
- $chain->iterate();
- ok($chain->getSubtask() == $taskC, "Current subtask is C.");
- is_deeply($chain->getMutexes(), ['2', '3']);
- $taskC->setMutexes('2', '3', '4');
- is_deeply($chain->getMutexes(), ['2', '3', '4']);
- $taskC->markDone();
- $chain->iterate();
- ok(!defined($chain->getSubtask()), "No subtask active.");
- }
- 1;