@@ -192,19 +192,21 @@ TEST(Event, givenCommandQueueWhenEventIsCreatedWithoutCommandQueueThenCommandQue
192192 EXPECT_EQ (intitialRefCount, finalRefCount);
193193}
194194
195+ class MockCommandQueueWithFlushCheck : public MockCommandQueue {
196+ public:
197+ MockCommandQueueWithFlushCheck () = delete ;
198+ MockCommandQueueWithFlushCheck (MockCommandQueueWithFlushCheck &) = delete ;
199+ MockCommandQueueWithFlushCheck (Context &context, ClDevice *device) : MockCommandQueue(&context, device, nullptr , false ) {
200+ }
201+ cl_int flush () override {
202+ flushCounter++;
203+ return flushReturnStatus;
204+ }
205+ cl_int flushReturnStatus = CL_SUCCESS;
206+ uint32_t flushCounter = 0 ;
207+ };
208+
195209TEST (Event, WhenWaitingForEventsThenAllQueuesAreFlushed) {
196- class MockCommandQueueWithFlushCheck : public MockCommandQueue {
197- public:
198- MockCommandQueueWithFlushCheck () = delete ;
199- MockCommandQueueWithFlushCheck (MockCommandQueueWithFlushCheck &) = delete ;
200- MockCommandQueueWithFlushCheck (Context &context, ClDevice *device) : MockCommandQueue(&context, device, nullptr , false ) {
201- }
202- cl_int flush () override {
203- flushCounter++;
204- return CL_SUCCESS;
205- }
206- uint32_t flushCounter = 0 ;
207- };
208210
209211 auto device = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr ));
210212 MockContext context;
@@ -224,19 +226,6 @@ TEST(Event, WhenWaitingForEventsThenAllQueuesAreFlushed) {
224226}
225227
226228TEST (Event, GivenNotReadyEventWhenWaitingForEventsThenQueueIsNotFlushed) {
227- class MockCommandQueueWithFlushCheck : public MockCommandQueue {
228- public:
229- MockCommandQueueWithFlushCheck () = delete ;
230- MockCommandQueueWithFlushCheck (MockCommandQueueWithFlushCheck &) = delete ;
231- MockCommandQueueWithFlushCheck (Context &context, ClDevice *device) : MockCommandQueue(&context, device, nullptr , false ) {
232- }
233- cl_int flush () override {
234- flushCounter++;
235- return CL_SUCCESS;
236- }
237- uint32_t flushCounter = 0 ;
238- };
239-
240229 auto device = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr ));
241230 MockContext context;
242231
@@ -249,6 +238,34 @@ TEST(Event, GivenNotReadyEventWhenWaitingForEventsThenQueueIsNotFlushed) {
249238 EXPECT_EQ (0u , cmdQ1->flushCounter );
250239}
251240
241+ TEST (Event, GivenEventWhenFlushReturnSuccessThenSuccessReturnedFromWaitForEvents) {
242+
243+ auto device = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr ));
244+ MockContext context;
245+
246+ std::unique_ptr<MockCommandQueueWithFlushCheck> cmdQ1 (new MockCommandQueueWithFlushCheck (context, device.get ()));
247+ cmdQ1->flushReturnStatus = CL_SUCCESS;
248+ std::unique_ptr<Event> event1 (new Event (cmdQ1.get (), CL_COMMAND_NDRANGE_KERNEL, 4 , 10 ));
249+
250+ cl_event eventWaitlist[] = {event1.get ()};
251+
252+ EXPECT_EQ (Event::waitForEvents (1 , eventWaitlist), CL_SUCCESS);
253+ }
254+
255+ TEST (Event, GivenEventWhenFlushReturnErrorThenErrorReturnedFromWaitForEvents) {
256+
257+ auto device = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr ));
258+ MockContext context;
259+
260+ std::unique_ptr<MockCommandQueueWithFlushCheck> cmdQ1 (new MockCommandQueueWithFlushCheck (context, device.get ()));
261+ cmdQ1->flushReturnStatus = CL_OUT_OF_RESOURCES;
262+ std::unique_ptr<Event> event1 (new Event (cmdQ1.get (), CL_COMMAND_NDRANGE_KERNEL, 4 , 10 ));
263+
264+ cl_event eventWaitlist[] = {event1.get ()};
265+
266+ EXPECT_EQ (Event::waitForEvents (1 , eventWaitlist), CL_OUT_OF_RESOURCES);
267+ }
268+
252269TEST (Event, givenNotReadyEventOnWaitlistWhenCheckingUserEventDependeciesThenTrueIsReturned) {
253270 auto event1 = std::make_unique<Event>(nullptr , CL_COMMAND_NDRANGE_KERNEL, CompletionStamp::notReady, 0 );
254271 cl_event eventWaitlist[] = {event1.get ()};
0 commit comments