1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
/*
* Copyright (C) 2018-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/helpers/ptr_math.h"
#include "opencl/source/command_queue/command_queue.h"
#include "opencl/test/unit_test/mocks/mock_buffer.h"
#include "cl_api_tests.h"
using namespace NEO;
using ClEnqueueWriteBufferTests = ApiTests;
namespace ULT {
TEST_F(ClEnqueueWriteBufferTests, GivenCorrectArgumentsWhenWritingBufferThenSuccessIsReturned) {
MockContext context{};
MockGraphicsAllocation allocation{};
MockBuffer buffer{&context, allocation};
MockCommandQueue commandQueue{context};
auto data = 1;
auto retVal = clEnqueueWriteBuffer(
&commandQueue,
&buffer,
false,
0,
sizeof(data),
&data,
0,
nullptr,
nullptr);
EXPECT_EQ(CL_SUCCESS, retVal);
}
TEST_F(ClEnqueueWriteBufferTests, GivenQueueIncapableArgumentsWhenWritingBufferThenInvalidOperationIsReturned) {
MockBuffer buffer{};
auto data = 1;
this->disableQueueCapabilities(CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_INTEL);
auto retVal = clEnqueueWriteBuffer(
pCommandQueue,
&buffer,
false,
0,
sizeof(data),
&data,
0,
nullptr,
nullptr);
EXPECT_EQ(CL_INVALID_OPERATION, retVal);
}
TEST_F(ClEnqueueWriteBufferTests, GivenNullCommandQueueWhenWritingBufferThenInvalidCommandQueueErrorIsReturned) {
auto buffer = (cl_mem)ptrGarbage;
retVal = clEnqueueWriteBuffer(
nullptr,
buffer,
CL_FALSE, // blocking write
0, // offset
0, // sb
nullptr,
0, // numEventsInWaitList
nullptr,
nullptr);
EXPECT_EQ(CL_INVALID_COMMAND_QUEUE, retVal);
}
TEST_F(ClEnqueueWriteBufferTests, GivenNullBufferWhenWritingBufferThenInvalidMemObjectErrorIsReturned) {
void *ptr = nullptr;
retVal = clEnqueueWriteBuffer(
pCommandQueue,
nullptr,
CL_FALSE, // blocking write
0, // offset
0, // cb
ptr,
0,
nullptr,
nullptr);
EXPECT_EQ(CL_INVALID_MEM_OBJECT, retVal);
}
} // namespace ULT
|