1 #include <gtest/gtest.h> 2 3 #include "AllocationTestHarness.h" 4 5 extern "C" { 6 #include <sys/select.h> 7 8 #include "reactor.h" 9 #include "semaphore.h" 10 #include "thread.h" 11 #include "osi.h" 12 } 13 14 class ThreadTest : public AllocationTestHarness {}; 15 16 TEST_F(ThreadTest, test_new_simple) { 17 thread_t *thread = thread_new("test_thread"); 18 ASSERT_TRUE(thread != NULL); 19 thread_free(thread); 20 } 21 22 TEST_F(ThreadTest, test_free_simple) { 23 thread_t *thread = thread_new("test_thread"); 24 thread_free(thread); 25 } 26 27 TEST_F(ThreadTest, test_name) { 28 thread_t *thread = thread_new("test_name"); 29 ASSERT_STREQ(thread_name(thread), "test_name"); 30 thread_free(thread); 31 } 32 33 TEST_F(ThreadTest, test_long_name) { 34 thread_t *thread = thread_new("0123456789abcdef"); 35 ASSERT_STREQ("0123456789abcdef", thread_name(thread)); 36 thread_free(thread); 37 } 38 39 TEST_F(ThreadTest, test_very_long_name) { 40 thread_t *thread = thread_new("0123456789abcdefg"); 41 ASSERT_STREQ("0123456789abcdef", thread_name(thread)); 42 thread_free(thread); 43 } 44 45 static void thread_is_self_fn(void *context) { 46 thread_t *thread = (thread_t *)context; 47 EXPECT_TRUE(thread_is_self(thread)); 48 } 49 50 TEST_F(ThreadTest, test_thread_is_self) { 51 thread_t *thread = thread_new("test_thread"); 52 thread_post(thread, thread_is_self_fn, thread); 53 thread_free(thread); 54 } 55 56 TEST_F(ThreadTest, test_thread_is_not_self) { 57 thread_t *thread = thread_new("test_thread"); 58 EXPECT_FALSE(thread_is_self(thread)); 59 thread_free(thread); 60 } 61