diff --git a/projects/test_suite/tests/04-thread_sleep b/projects/test_suite/tests/04-thread_sleep
new file mode 100755
index 0000000000000000000000000000000000000000..1734706b7a66242a1eb2e22f0a3f48f037386c5f
--- /dev/null
+++ b/projects/test_suite/tests/04-thread_sleep
@@ -0,0 +1,70 @@
+#!/usr/bin/expect
+
+set timeout 5
+
+spawn pseudoterm $env(PORT)
+
+expect { 
+    ">$" {} 
+    timeout { exit 1 }
+}
+
+send "start_test\n" 
+expect {
+    "\[TEST_START\]" {}
+    timeout { exit 1 }
+}
+
+expect { 
+    ">$" {} 
+    timeout { exit 1 }
+}
+
+send "thread_sleep\n" 
+expect {
+"   main: running. integer=0, i=1." {}
+"   main: running. integer=0, i=2." {}
+"Waking up sleeper." {}
+"sleeper: running. integer=1, i=2." {}
+"sleeper: running. integer=2, i=2." {}
+"Going to sleep." {}
+"   main: running. integer=2, i=3." {}
+"   main: running. integer=2, i=4." {}
+"Waking up sleeper." {}
+"Woke up!" {}
+"sleeper: running. integer=3, i=4." {}
+"sleeper: running. integer=4, i=4." {}
+"Going to sleep." {}
+"   main: running. integer=4, i=5." {}
+"   main: running. integer=4, i=6." {}
+"Waking up sleeper." {}
+"Woke up!" {}
+"sleeper: running. integer=5, i=6." {}
+"sleeper: running. integer=6, i=6." {}
+"Going to sleep." {}
+"   main: running. integer=6, i=7." {}
+"   main: running. integer=6, i=8." {}
+"Waking up sleeper." {}
+"Woke up!" {}
+"sleeper: running. integer=7, i=8." {}
+"sleeper: running. integer=8, i=8." {}
+"Going to sleep." {}
+"   main: running. integer=8, i=9." {}
+"   main: running. integer=8, i=10." {}
+"Waking up sleeper." {}
+"Woke up!" {}
+"sleeper: running. integer=9, i=10." {}
+"sleeper: running. integer=10, i=10." {}
+"Going to sleep." {}
+    ">$" {} 
+    timeout { exit 1 }
+}
+
+send "end_test\n" 
+
+expect {
+    "\[TEST_END\]" {}
+    timeout { exit 1 }
+}
+
+puts "\nTest successful!\n"
diff --git a/projects/test_suite/thread_sleep.c b/projects/test_suite/thread_sleep.c
index c4bc3294a3e9717ca6f8871b143ff9d5964023b9..7790a32e0d02a620068fa202409d147cd33b6d82 100644
--- a/projects/test_suite/thread_sleep.c
+++ b/projects/test_suite/thread_sleep.c
@@ -9,7 +9,7 @@ static void second_thread(void) {
     while(1) {
         integer++;
         printf("sleeper: running. integer=%i, i=%i.\n", integer, i);
-        if (integer % 10 == 0) { 
+        if (integer % 2 == 0) { 
             printf("Going to sleep.\n");
             thread_sleep();
             printf("Woke up!\n");
@@ -29,10 +29,10 @@ void test_thread_sleep(char* line)
         while(1);
     }
 
-    while(1) {
+    while(i < 10) {
         i++;
         printf("   main: running. integer=%i, i=%i.\n", integer, i);
-        if (i % 10 == 0) { 
+        if (i % 2 == 0) { 
             printf("Waking up sleeper.\n");
             thread_wakeup(pid);
         }