@@ -203,10 +203,62 @@ TEST_F(TransmissionScheduleTest, multiAddBoundary2)
203203 EXPECT_EQ ((*iter++)->transmissionId , 2 );
204204}
205205
206- class TransmissionSchedulePopTest : public TransmissionScheduleTest
206+ TEST_F (TransmissionScheduleTest, multiAddBoundary3)
207+ {
208+ uint8_t priority = 255 ;
209+ uint64_t txTime = 1 ;
210+ MaplePacket packet1 (0x11 , 0x01 , 0x99887766 );
211+ bool expectResponse = true ;
212+ uint32_t expectedResponseNumPayloadWords = 10 ;
213+ uint32_t autoRepeatUs = 0 ;
214+ uint32_t readTimeoutUs = 8675309 ;
215+ uint32_t id1 = scheduler.add (priority,
216+ txTime,
217+ packet1,
218+ expectResponse,
219+ expectedResponseNumPayloadWords,
220+ autoRepeatUs,
221+ readTimeoutUs);
222+ EXPECT_EQ (id1, 0 );
223+
224+ txTime = 2 ;
225+ expectedResponseNumPayloadWords = 3 ; // 267 us
226+ MaplePacket packet2 (0x22 , 0x02 , 0x99887766 );
227+ uint32_t id2 = scheduler.add (priority,
228+ txTime,
229+ packet2,
230+ expectResponse,
231+ expectedResponseNumPayloadWords,
232+ autoRepeatUs,
233+ readTimeoutUs);
234+ EXPECT_EQ (id2, 1 );
235+
236+ priority = 0 ;
237+ txTime = 2 + 300 ;
238+ expectedResponseNumPayloadWords = 0 ;
239+ MaplePacket packet3 (0x33 , 0x02 , 0x99887766 );
240+ uint32_t id3 = scheduler.add (priority,
241+ txTime,
242+ packet3,
243+ expectResponse,
244+ expectedResponseNumPayloadWords,
245+ autoRepeatUs,
246+ readTimeoutUs);
247+ EXPECT_EQ (id3, 2 );
248+
249+ const std::list<std::shared_ptr<TransmittionScheduler::Transmission>> schedule = scheduler.getSchedule ();
250+
251+ ASSERT_EQ (schedule.size (), 3 );
252+ std::list<std::shared_ptr<TransmittionScheduler::Transmission>>::const_iterator iter = schedule.cbegin ();
253+ EXPECT_EQ ((*iter++)->transmissionId , 2 );
254+ EXPECT_EQ ((*iter++)->transmissionId , 0 );
255+ EXPECT_EQ ((*iter++)->transmissionId , 1 );
256+ }
257+
258+ class TransmissionSchedulePopTestA : public TransmissionScheduleTest
207259{
208260 public:
209- TransmissionSchedulePopTest () {}
261+ TransmissionSchedulePopTestA () {}
210262
211263 protected:
212264 virtual void SetUp ()
@@ -247,7 +299,7 @@ class TransmissionSchedulePopTest : public TransmissionScheduleTest
247299 }
248300};
249301
250- TEST_F (TransmissionSchedulePopTest , popTestNull)
302+ TEST_F (TransmissionSchedulePopTestA , popTestNull)
251303{
252304 EXPECT_EQ (scheduler.popNext (0 ), nullptr );
253305
@@ -260,7 +312,7 @@ TEST_F(TransmissionSchedulePopTest, popTestNull)
260312 EXPECT_EQ ((*iter++)->transmissionId , 2 );
261313}
262314
263- TEST_F (TransmissionSchedulePopTest , popTestAutoReload1)
315+ TEST_F (TransmissionSchedulePopTestA , popTestAutoReload1)
264316{
265317 std::shared_ptr<const TransmittionScheduler::Transmission> item = scheduler.popNext (1 );
266318 ASSERT_NE (item, nullptr );
@@ -279,7 +331,7 @@ TEST_F(TransmissionSchedulePopTest, popTestAutoReload1)
279331 EXPECT_EQ ((*iter)->nextTxTimeUs , 16002 );
280332}
281333
282- TEST_F (TransmissionSchedulePopTest , popTestAutoReload2)
334+ TEST_F (TransmissionSchedulePopTestA , popTestAutoReload2)
283335{
284336 std::shared_ptr<const TransmittionScheduler::Transmission> item = scheduler.popNext (1 );
285337 ASSERT_NE (item, nullptr );
@@ -299,7 +351,62 @@ TEST_F(TransmissionSchedulePopTest, popTestAutoReload2)
299351 EXPECT_EQ ((*iter)->nextTxTimeUs , 32002 );
300352}
301353
302- class TransmissionScheduleCancelTest : public TransmissionSchedulePopTest
354+ class TransmissionSchedulePopTestB : public TransmissionScheduleTest
355+ {
356+ public:
357+ TransmissionSchedulePopTestB () {}
358+
359+ protected:
360+ virtual void SetUp ()
361+ {
362+ uint8_t priority = 255 ;
363+ uint64_t txTime = 1 ;
364+ MaplePacket packet1 (0x11 , 0x01 , 0x99887766 );
365+ bool expectResponse = true ;
366+ uint32_t expectedResponseNumPayloadWords = 10 ;
367+ uint32_t autoRepeatUs = 0 ;
368+ uint32_t readTimeoutUs = 8675309 ;
369+ scheduler.add (priority,
370+ txTime,
371+ packet1,
372+ expectResponse,
373+ expectedResponseNumPayloadWords,
374+ autoRepeatUs,
375+ readTimeoutUs);
376+ priority = 0 ;
377+ txTime = 2 + 300 ;
378+ expectedResponseNumPayloadWords = 0 ;
379+ MaplePacket packet3 (0x22 , 0x02 , 0x99887766 );
380+ scheduler.add (priority,
381+ txTime,
382+ packet3,
383+ expectResponse,
384+ expectedResponseNumPayloadWords,
385+ autoRepeatUs,
386+ readTimeoutUs);
387+ priority = 255 ;
388+ txTime = 2 ;
389+ expectedResponseNumPayloadWords = 3 ; // 267 us
390+ MaplePacket packet2 (0x33 , 0x02 , 0x99887766 );
391+ scheduler.add (priority,
392+ txTime,
393+ packet2,
394+ expectResponse,
395+ expectedResponseNumPayloadWords,
396+ autoRepeatUs,
397+ readTimeoutUs);
398+ }
399+ };
400+
401+ TEST_F (TransmissionSchedulePopTestB, popTestAutoReload2)
402+ {
403+ // Transmission 2 should be bumped up to be executed before 0 because 0 yeileded to 1
404+ std::shared_ptr<const TransmittionScheduler::Transmission> item = scheduler.popNext (2 );
405+ ASSERT_NE (item, nullptr );
406+ EXPECT_EQ (item->transmissionId , 2 );
407+ }
408+
409+ class TransmissionScheduleCancelTest : public TransmissionSchedulePopTestA
303410{
304411 public:
305412 TransmissionScheduleCancelTest () {}
0 commit comments