@@ -18,8 +18,9 @@ using namespace ipc;
1818
1919namespace {
2020
21- constexpr int LoopCount = 10000 ;
22- constexpr int MultiMax = 8 ;
21+ constexpr int LoopCount = 10000 ;
22+ constexpr int MultiMax = 8 ;
23+ constexpr int TestBuffMax = 65536 ;
2324
2425struct msg_head {
2526 int id_;
@@ -28,7 +29,7 @@ struct msg_head {
2829class rand_buf : public buffer {
2930public:
3031 rand_buf () {
31- int size = capo::random<>{sizeof (msg_head), 65536 }();
32+ int size = capo::random<>{sizeof (msg_head), TestBuffMax }();
3233 *this = buffer (new char [size], size, [](void * p, std::size_t ) {
3334 delete [] static_cast <char *>(p);
3435 });
@@ -98,6 +99,22 @@ class data_set {
9899 }
99100} const data_set__;
100101
102+ #define IPC_ASSERT_TRUE (condition ) \
103+ do { \
104+ bool check = !!(condition); \
105+ GTEST_TEST_BOOLEAN_ (check, #condition, false , true , \
106+ GTEST_NONFATAL_FAILURE_); \
107+ if (!check) return ; \
108+ } while (0 )
109+
110+ #define IPC_ASSERT_FALSE (condition ) \
111+ do { \
112+ bool check = !!(condition); \
113+ GTEST_TEST_BOOLEAN_ (!check, #condition, true , false , \
114+ GTEST_NONFATAL_FAILURE_); \
115+ if (check) return ; \
116+ } while (0 )
117+
101118template <relat Rp, relat Rc, trans Ts, typename Que = chan<Rp, Rc, Ts>>
102119void test_sr (char const * name, int s_cnt, int r_cnt) {
103120 ipc_ut::sender ().start (static_cast <std::size_t >(s_cnt));
@@ -109,10 +126,10 @@ void test_sr(char const * name, int s_cnt, int r_cnt) {
109126 for (int k = 0 ; k < s_cnt; ++k) {
110127 ipc_ut::sender () << [name, &sw, r_cnt, k] {
111128 Que que { name, ipc::sender };
112- EXPECT_TRUE (que.wait_for_recv (r_cnt));
129+ IPC_ASSERT_TRUE (que.wait_for_recv (r_cnt));
113130 sw.start ();
114131 for (int i = 0 ; i < (int )data_set__.get ().size (); ++i) {
115- EXPECT_TRUE (que.send (data_set__.get ()[i]));
132+ IPC_ASSERT_TRUE (que.send (data_set__.get ()[i]));
116133 }
117134 };
118135 }
@@ -122,25 +139,25 @@ void test_sr(char const * name, int s_cnt, int r_cnt) {
122139 Que que { name, ipc::receiver };
123140 for (;;) {
124141 rand_buf got { que.recv () };
125- ASSERT_FALSE (got.empty ());
142+ IPC_ASSERT_FALSE (got.empty ());
126143 int i = got.get_id ();
127144 if (i == -1 ) {
128145 return ;
129146 }
130- ASSERT_TRUE ((i >= 0 ) && (i < (int )data_set__.get ().size ()));
147+ IPC_ASSERT_TRUE ((i >= 0 ) && (i < (int )data_set__.get ().size ()));
131148 auto const &data_set = data_set__.get ()[i];
132149 if (data_set != got) {
133150 printf (" data_set__.get()[%d] != got, size = %zd/%zd\n " ,
134151 i, data_set.size (), got.size ());
135- EXPECT_TRUE (false );
152+ IPC_ASSERT_TRUE (false );
136153 }
137154 }
138155 };
139156 }
140157
141158 ipc_ut::sender ().wait_for_done ();
142159 Que que { name };
143- EXPECT_TRUE (que.wait_for_recv (r_cnt));
160+ IPC_ASSERT_TRUE (que.wait_for_recv (r_cnt));
144161 for (int k = 0 ; k < r_cnt; ++k) {
145162 que.send (rand_buf{msg_head{-1 }});
146163 }
0 commit comments