summaryrefslogtreecommitdiff
path: root/t/thread.t
diff options
context:
space:
mode:
Diffstat (limited to 't/thread.t')
-rw-r--r--t/thread.t43
1 files changed, 43 insertions, 0 deletions
diff --git a/t/thread.t b/t/thread.t
new file mode 100644
index 0000000..e945832
--- /dev/null
+++ b/t/thread.t
@@ -0,0 +1,43 @@
+#!perl
+use strict;
+use warnings;
+use Test::Most tests => 17, 'die';
+use threads;
+use Thread::Task::Thread;
+
+is( scalar( threads->list ), 0, 'One thread exists' );
+
+SCOPE: {
+ # Create the master thread
+ my $thread = Thread::Task::Thread->new->spawn;
+ isa_ok( $thread, 'Thread::Task::Thread' );
+ is( $thread->wid, 1, '->wid ok' );
+ isa_ok( $thread->queue, 'Thread::Queue' );
+ isa_ok( $thread->thread, 'threads' );
+ ok( !$thread->is_thread, '->is_thread is false' );
+ my $tid = $thread->thread->tid;
+ ok( $tid, "Got thread id $tid" );
+
+ # Does the threads module agree it was created
+ my @threads = threads->list;
+ is( scalar(@threads), 1, 'Found one thread' );
+ is( $threads[0]->tid, $tid, 'Found the expected thread id' );
+
+ # Initially, the thread should be running
+ ok( $thread->is_running, 'Thread is_running' );
+ ok( !$thread->is_joinable, 'Thread is not is_joinable' );
+ ok( !$thread->is_detached, 'Thread is not is_detached' );
+
+ # It should stay running
+ sleep 0.1;
+ ok( $thread->is_running, 'Thread is_running' );
+ ok( !$thread->is_joinable, 'Thread is not is_joinable' );
+ ok( !$thread->is_detached, 'Thread is not is_detached' );
+
+ # Instruct the master to shutdown, and give it a brief time to do so.
+ $thread->stop;
+ sleep 1;
+ ok( !$thread->thread, '->thread no longer exists' );
+}
+
+is( scalar( threads->list ), 0, 'One thread exists' );