@@ -51,6 +51,19 @@ class SamplePtrTest : public ::testing::Test
5151 provider_event_data_control_local_.EventReady (slot.value (), timestamp);
5252 return slot.value ();
5353 }
54+
55+ SamplePtr<std::uint8_t > CreateSamplePtr (const EventSlotStatus::EventTimeStamp timestamp,
56+ const EventSlotStatus::EventTimeStamp last_search_time)
57+ {
58+ AllocateSlot (timestamp);
59+ auto slot_index = consumer_event_data_control_local_.ReferenceNextEvent (last_search_time);
60+ EXPECT_TRUE (slot_index.has_value ());
61+
62+ dummy_storage_.push_back (std::make_unique<std::uint8_t >(0U ));
63+ return SamplePtr<std::uint8_t >{
64+ dummy_storage_.back ().get (), consumer_event_data_control_local_, slot_index.value ()};
65+ }
66+ std::vector<std::unique_ptr<std::uint8_t >> dummy_storage_;
5467};
5568
5669// / \brief Templated test fixture for SamplePtr functionality that works for both void and non-void types
@@ -179,5 +192,148 @@ TEST_F(SamplePtrTest, StarOp)
179192 EXPECT_EQ (val1.member2_ , 44 );
180193}
181194
195+ TEST_F (SamplePtrTest, GreaterThanReturnsTrueWhenLeftSampleHasNewerTimestamp)
196+ {
197+ constexpr EventSlotStatus::EventTimeStamp kOlderTimestamp {10U };
198+ constexpr EventSlotStatus::EventTimeStamp kNewerTimestamp {42U };
199+
200+ auto older_sample = CreateSamplePtr (kOlderTimestamp , 0U );
201+ auto newer_sample = CreateSamplePtr (kNewerTimestamp , 1U );
202+
203+ const bool result = newer_sample > older_sample;
204+
205+ EXPECT_TRUE (result);
206+ }
207+
208+ TEST_F (SamplePtrTest, GreaterThanReturnsFalseWhenLeftSampleHasOlderTimestamp)
209+ {
210+ constexpr EventSlotStatus::EventTimeStamp kOlderTimestamp {10U };
211+ constexpr EventSlotStatus::EventTimeStamp kNewerTimestamp {42U };
212+
213+ auto older_sample = CreateSamplePtr (kOlderTimestamp , 0U );
214+ auto newer_sample = CreateSamplePtr (kNewerTimestamp , 1U );
215+
216+ const bool result = older_sample > newer_sample;
217+
218+ EXPECT_FALSE (result);
219+ }
220+
221+ TEST_F (SamplePtrTest, SortByTimestampOrdersSamplesFromNewestToOldest)
222+ {
223+ constexpr EventSlotStatus::EventTimeStamp kOldestTimestamp {10U };
224+ constexpr EventSlotStatus::EventTimeStamp kMiddleTimestamp {42U };
225+ constexpr EventSlotStatus::EventTimeStamp kNewestTimestamp {43U };
226+
227+ std::vector<SamplePtr<std::uint8_t >> samples{};
228+ samples.emplace_back (CreateSamplePtr (kOldestTimestamp , 0U ));
229+ samples.emplace_back (CreateSamplePtr (kMiddleTimestamp , 1U ));
230+ samples.emplace_back (CreateSamplePtr (kNewestTimestamp , 2U ));
231+
232+ std::sort (samples.begin (), samples.end (), [](const auto & lhs, const auto & rhs) {
233+ return lhs > rhs;
234+ });
235+
236+ EXPECT_TRUE (samples[0 ] > samples[1 ]);
237+ EXPECT_TRUE (samples[0 ] > samples[2 ]);
238+ EXPECT_TRUE (samples[1 ] > samples[2 ]);
239+ EXPECT_FALSE (samples[2 ] > samples[0 ]);
240+ EXPECT_FALSE (samples[2 ] > samples[1 ]);
241+ }
242+
243+ TEST_F (SamplePtrTest, LessThanReturnsTrueWhenLeftSampleHasOlderTimestamp)
244+ {
245+ constexpr EventSlotStatus::EventTimeStamp kOlderTimestamp {10U };
246+ constexpr EventSlotStatus::EventTimeStamp kNewerTimestamp {42U };
247+
248+ auto older_sample = CreateSamplePtr (kOlderTimestamp , 0U );
249+ auto newer_sample = CreateSamplePtr (kNewerTimestamp , 1U );
250+
251+ const bool result = older_sample < newer_sample;
252+
253+ EXPECT_TRUE (result);
254+ }
255+
256+ TEST_F (SamplePtrTest, LessThanReturnsFalseWhenLeftSampleHasNewerTimestamp)
257+ {
258+ constexpr EventSlotStatus::EventTimeStamp kOlderTimestamp {10U };
259+ constexpr EventSlotStatus::EventTimeStamp kNewerTimestamp {42U };
260+
261+ auto older_sample = CreateSamplePtr (kOlderTimestamp , 0U );
262+ auto newer_sample = CreateSamplePtr (kNewerTimestamp , 1U );
263+
264+ const bool result = newer_sample < older_sample;
265+
266+ EXPECT_FALSE (result);
267+ }
268+
269+ TEST_F (SamplePtrTest, SortByTimestampOrdersSamplesFromOldestToNewest)
270+ {
271+ constexpr EventSlotStatus::EventTimeStamp kOldestTimestamp {10U };
272+ constexpr EventSlotStatus::EventTimeStamp kMiddleTimestamp {42U };
273+ constexpr EventSlotStatus::EventTimeStamp kNewestTimestamp {43U };
274+
275+ std::vector<SamplePtr<std::uint8_t >> samples{};
276+ samples.emplace_back (CreateSamplePtr (kOldestTimestamp , 0U ));
277+ samples.emplace_back (CreateSamplePtr (kMiddleTimestamp , 1U ));
278+ samples.emplace_back (CreateSamplePtr (kNewestTimestamp , 2U ));
279+
280+ std::sort (samples.begin (), samples.end (), [](const auto & lhs, const auto & rhs) {
281+ return lhs < rhs;
282+ });
283+
284+ EXPECT_TRUE (samples[0 ] < samples[1 ]);
285+ EXPECT_TRUE (samples[0 ] < samples[2 ]);
286+ EXPECT_TRUE (samples[1 ] < samples[2 ]);
287+ EXPECT_FALSE (samples[2 ] < samples[0 ]);
288+ EXPECT_FALSE (samples[2 ] < samples[1 ]);
289+ }
290+
291+ TEST_F (SamplePtrTest, GreaterThanReturnsFalseWhenLeftSampleIsInvalid)
292+ {
293+ constexpr EventSlotStatus::EventTimeStamp kTimestamp {42U };
294+
295+ SamplePtr<std::uint8_t > invalid_sample{};
296+ auto valid_sample = CreateSamplePtr (kTimestamp , 0U );
297+
298+ const bool result = invalid_sample > valid_sample;
299+
300+ EXPECT_FALSE (result);
301+ }
302+
303+ TEST_F (SamplePtrTest, GreaterThanReturnsFalseWhenRightSampleIsInvalid)
304+ {
305+ constexpr EventSlotStatus::EventTimeStamp kTimestamp {42U };
306+
307+ auto valid_sample = CreateSamplePtr (kTimestamp , 0U );
308+ SamplePtr<std::uint8_t > invalid_sample{};
309+
310+ const bool result = valid_sample > invalid_sample;
311+
312+ EXPECT_FALSE (result);
313+ }
314+
315+ TEST_F (SamplePtrTest, LessThanReturnsFalseWhenLeftSampleIsInvalid)
316+ {
317+ constexpr EventSlotStatus::EventTimeStamp kTimestamp {42U };
318+
319+ SamplePtr<std::uint8_t > invalid_sample{};
320+ auto valid_sample = CreateSamplePtr (kTimestamp , 0U );
321+
322+ const bool result = invalid_sample < valid_sample;
323+
324+ EXPECT_FALSE (result);
325+ }
326+
327+ TEST_F (SamplePtrTest, LessThanReturnsFalseWhenRightSampleIsInvalid)
328+ {
329+ constexpr EventSlotStatus::EventTimeStamp kTimestamp {42U };
330+
331+ auto valid_sample = CreateSamplePtr (kTimestamp , 0U );
332+ SamplePtr<std::uint8_t > invalid_sample{};
333+
334+ const bool result = valid_sample < invalid_sample;
335+
336+ EXPECT_FALSE (result);
337+ }
182338} // namespace
183339} // namespace score::mw::com::impl::lola
0 commit comments