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