@@ -135,6 +135,69 @@ TEST_F (SchedulerUnitTest, SchedulerSanitizeDelayTest)
135
135
ASSERT_NEAR (result, 1000 , margin);
136
136
}
137
137
138
+ TEST_F (SchedulerUnitTest, SchedulerIsTimeBeforeTest)
139
+ {
140
+ /* Validate that the test case is compiled with enough timeouts */
141
+ ASSERT_GE (PF_MAX_TIMEOUTS, 6 );
142
+
143
+ volatile pf_scheduler_data_t scheduler_data;
144
+ scheduler_data.mutex = NULL ;
145
+
146
+ pf_scheduler_init (&scheduler_data, TEST_TICK_INTERVAL_US);
147
+
148
+ scheduler_data.timeouts [0 ].in_use = true ;
149
+ scheduler_data.timeouts [0 ].name = " No_0" ;
150
+ scheduler_data.timeouts [0 ].when = 100 ;
151
+ scheduler_data.timeouts [0 ].prev = PF_MAX_TIMEOUTS;
152
+ scheduler_data.timeouts [0 ].next = 1 ;
153
+
154
+ scheduler_data.timeouts [1 ].in_use = true ;
155
+ scheduler_data.timeouts [1 ].name = " No_1" ;
156
+ scheduler_data.timeouts [1 ].when = 200 ;
157
+ scheduler_data.timeouts [1 ].prev = 0 ;
158
+ scheduler_data.timeouts [1 ].next = 2 ;
159
+
160
+ scheduler_data.timeouts [2 ].in_use = true ;
161
+ scheduler_data.timeouts [2 ].name = " No_2" ;
162
+ scheduler_data.timeouts [2 ].when = 300 ;
163
+ scheduler_data.timeouts [2 ].prev = 1 ;
164
+ scheduler_data.timeouts [2 ].next = 3 ;
165
+
166
+ scheduler_data.timeouts [3 ].in_use = true ;
167
+ scheduler_data.timeouts [3 ].name = " No_3" ;
168
+ scheduler_data.timeouts [3 ].when = 300 ;
169
+ scheduler_data.timeouts [3 ].prev = 2 ;
170
+ scheduler_data.timeouts [3 ].next = 4 ;
171
+
172
+ scheduler_data.timeouts [4 ].in_use = true ;
173
+ scheduler_data.timeouts [4 ].name = " No_4" ;
174
+ scheduler_data.timeouts [4 ].when = 400 ;
175
+ scheduler_data.timeouts [4 ].prev = 3 ;
176
+ scheduler_data.timeouts [4 ].next = 5 ;
177
+
178
+ scheduler_data.timeouts [5 ].in_use = true ;
179
+ scheduler_data.timeouts [5 ].name = " No_5" ;
180
+ scheduler_data.timeouts [5 ].when = 500 ;
181
+ scheduler_data.timeouts [5 ].prev = 4 ;
182
+ scheduler_data.timeouts [5 ].next = PF_MAX_TIMEOUTS;
183
+
184
+ scheduler_data.busylist_head = 0 ;
185
+ scheduler_data.freelist_head = 6 ;
186
+
187
+ pf_scheduler_show (&scheduler_data, 50 );
188
+
189
+ ASSERT_TRUE (pf_scheduler_is_time_before (&scheduler_data, 0 , 1 ));
190
+ ASSERT_TRUE (pf_scheduler_is_time_before (&scheduler_data, 1 , 2 ));
191
+ ASSERT_TRUE (pf_scheduler_is_time_before (&scheduler_data, 2 , 3 ));
192
+ ASSERT_TRUE (pf_scheduler_is_time_before (&scheduler_data, 3 , 4 ));
193
+ ASSERT_TRUE (pf_scheduler_is_time_before (&scheduler_data, 4 , 5 ));
194
+
195
+ ASSERT_TRUE (pf_scheduler_is_time_before (&scheduler_data, 0 , 0 ));
196
+
197
+ ASSERT_FALSE (pf_scheduler_is_time_before (&scheduler_data, 1 , 0 ));
198
+ ASSERT_FALSE (pf_scheduler_is_time_before (&scheduler_data, 2 , 1 ));
199
+ }
200
+
138
201
TEST_F (SchedulerTest, SchedulerAddRemoveInStack)
139
202
{
140
203
int ret;
0 commit comments