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