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