mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-25 16:29:03 +00:00
Implement Negative Test for Platform Layer Functions (#1076)
* Implement Negative Tests for clPlatform Functions This change introduces negative tests for clPlatform functions as well as changes to the Harness to help with other negative tests. Signed-off-by: Chetankumar Mistry <chetan.mistry@arm.com> * [SQUASH] Remove magic macro from Negative Platform Tests This change removes the negative-testing macro and all other changes related to its usage. Signed-off-by: Chetankumar Mistry <chetan.mistry@arm.com>
This commit is contained in:
@@ -68,6 +68,7 @@ const char *IGetErrorString(int clErrorCode)
|
|||||||
case CL_INVALID_SAMPLER: return "CL_INVALID_SAMPLER";
|
case CL_INVALID_SAMPLER: return "CL_INVALID_SAMPLER";
|
||||||
case CL_INVALID_BINARY: return "CL_INVALID_BINARY";
|
case CL_INVALID_BINARY: return "CL_INVALID_BINARY";
|
||||||
case CL_INVALID_BUILD_OPTIONS: return "CL_INVALID_BUILD_OPTIONS";
|
case CL_INVALID_BUILD_OPTIONS: return "CL_INVALID_BUILD_OPTIONS";
|
||||||
|
case CL_INVALID_PLATFORM: return "CL_INVALID_PLATFORM";
|
||||||
case CL_INVALID_PROGRAM: return "CL_INVALID_PROGRAM";
|
case CL_INVALID_PROGRAM: return "CL_INVALID_PROGRAM";
|
||||||
case CL_INVALID_PROGRAM_EXECUTABLE:
|
case CL_INVALID_PROGRAM_EXECUTABLE:
|
||||||
return "CL_INVALID_PROGRAM_EXECUTABLE";
|
return "CL_INVALID_PROGRAM_EXECUTABLE";
|
||||||
|
|||||||
@@ -1161,6 +1161,15 @@ test_status check_spirv_compilation_readiness(cl_device_id device)
|
|||||||
return TEST_PASS;
|
return TEST_PASS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cl_platform_id getPlatformFromDevice(cl_device_id deviceID)
|
||||||
|
{
|
||||||
|
cl_platform_id platform = nullptr;
|
||||||
|
cl_int err = clGetDeviceInfo(deviceID, CL_DEVICE_PLATFORM, sizeof(platform),
|
||||||
|
&platform, nullptr);
|
||||||
|
ASSERT_SUCCESS(err, "clGetDeviceInfo");
|
||||||
|
return platform;
|
||||||
|
}
|
||||||
|
|
||||||
void PrintArch(void)
|
void PrintArch(void)
|
||||||
{
|
{
|
||||||
vlog("sizeof( void*) = %ld\n", sizeof(void *));
|
vlog("sizeof( void*) = %ld\n", sizeof(void *));
|
||||||
|
|||||||
@@ -178,6 +178,8 @@ extern int gHasLong; // This is set to 1 if the device suppots long and ulong
|
|||||||
// types in OpenCL C.
|
// types in OpenCL C.
|
||||||
extern bool gCoreILProgram;
|
extern bool gCoreILProgram;
|
||||||
|
|
||||||
|
extern cl_platform_id getPlatformFromDevice(cl_device_id deviceID);
|
||||||
|
|
||||||
#if !defined(__APPLE__)
|
#if !defined(__APPLE__)
|
||||||
void memset_pattern4(void *, const void *, size_t);
|
void memset_pattern4(void *, const void *, size_t);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ set(MODULE_NAME API)
|
|||||||
|
|
||||||
set(${MODULE_NAME}_SOURCES
|
set(${MODULE_NAME}_SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
|
negative_platform.cpp
|
||||||
test_api_consistency.cpp
|
test_api_consistency.cpp
|
||||||
test_bool.cpp
|
test_bool.cpp
|
||||||
test_retain.cpp
|
test_retain.cpp
|
||||||
|
|||||||
@@ -146,6 +146,8 @@ test_definition test_list[] = {
|
|||||||
ADD_TEST_VERSION(consistency_3d_image_writes, Version(3, 0)),
|
ADD_TEST_VERSION(consistency_3d_image_writes, Version(3, 0)),
|
||||||
|
|
||||||
ADD_TEST(min_image_formats),
|
ADD_TEST(min_image_formats),
|
||||||
|
ADD_TEST(negative_get_platform_info),
|
||||||
|
ADD_TEST(negative_get_platform_ids),
|
||||||
};
|
};
|
||||||
|
|
||||||
const int test_num = ARRAY_SIZE(test_list);
|
const int test_num = ARRAY_SIZE(test_list);
|
||||||
|
|||||||
82
test_conformance/api/negative_platform.cpp
Normal file
82
test_conformance/api/negative_platform.cpp
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
//
|
||||||
|
// Copyright (c) 2021 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "testBase.h"
|
||||||
|
|
||||||
|
int test_negative_get_platform_ids(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements)
|
||||||
|
{
|
||||||
|
cl_platform_id platform;
|
||||||
|
cl_int err = clGetPlatformIDs(0, &platform, nullptr);
|
||||||
|
test_failure_error_ret(
|
||||||
|
err, CL_INVALID_VALUE,
|
||||||
|
"clGetPlatformIDs should return CL_INVALID_VALUE when: \"num_entries "
|
||||||
|
"is equal to zero and platforms is not NULL\"",
|
||||||
|
TEST_FAIL);
|
||||||
|
|
||||||
|
err = clGetPlatformIDs(1, nullptr, nullptr);
|
||||||
|
test_failure_error_ret(
|
||||||
|
err, CL_INVALID_VALUE,
|
||||||
|
"clGetPlatformIDs should return CL_INVALID_VALUE when: \"both "
|
||||||
|
"num_platforms and platforms are NULL\"",
|
||||||
|
TEST_FAIL);
|
||||||
|
|
||||||
|
return TEST_PASS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int test_negative_get_platform_info(cl_device_id deviceID, cl_context context,
|
||||||
|
cl_command_queue queue, int num_elements)
|
||||||
|
{
|
||||||
|
cl_platform_id platform = getPlatformFromDevice(deviceID);
|
||||||
|
|
||||||
|
cl_int err = clGetPlatformInfo(nullptr, CL_PLATFORM_VERSION, sizeof(char*),
|
||||||
|
nullptr, nullptr);
|
||||||
|
test_failure_error_ret(
|
||||||
|
err, CL_INVALID_PLATFORM,
|
||||||
|
"clGetPlatformInfo should return CL_INVALID_PLATFORM when: \"platform "
|
||||||
|
"is not a valid platform\" using a nullptr",
|
||||||
|
TEST_FAIL);
|
||||||
|
|
||||||
|
err =
|
||||||
|
clGetPlatformInfo(reinterpret_cast<cl_platform_id>(deviceID),
|
||||||
|
CL_PLATFORM_VERSION, sizeof(char*), nullptr, nullptr);
|
||||||
|
test_failure_error_ret(
|
||||||
|
err, CL_INVALID_PLATFORM,
|
||||||
|
"clGetPlatformInfo should return CL_INVALID_PLATFORM when: \"platform "
|
||||||
|
"is not a valid platform\" using a valid object which is NOT a "
|
||||||
|
"platform",
|
||||||
|
TEST_FAIL);
|
||||||
|
|
||||||
|
constexpr cl_platform_info INVALID_PARAM_VALUE = 0;
|
||||||
|
err = clGetPlatformInfo(platform, INVALID_PARAM_VALUE, 0, nullptr, nullptr);
|
||||||
|
test_failure_error_ret(
|
||||||
|
err, CL_INVALID_VALUE,
|
||||||
|
"clGetPlatformInfo should return CL_INVALID_VALUE when: \"param_name "
|
||||||
|
"is not one of the supported values\"",
|
||||||
|
TEST_FAIL);
|
||||||
|
|
||||||
|
char* version;
|
||||||
|
err =
|
||||||
|
clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, &version, nullptr);
|
||||||
|
test_failure_error_ret(
|
||||||
|
err, CL_INVALID_VALUE,
|
||||||
|
"clGetPlatformInfo should return CL_INVALID_VALUE when: \"size in "
|
||||||
|
"bytes specified by param_value_size is < size of return type and "
|
||||||
|
"param_value is not a NULL value\"",
|
||||||
|
TEST_FAIL);
|
||||||
|
|
||||||
|
return TEST_PASS;
|
||||||
|
}
|
||||||
@@ -195,3 +195,11 @@ extern int test_consistency_3d_image_writes(cl_device_id deviceID,
|
|||||||
|
|
||||||
extern int test_min_image_formats(cl_device_id deviceID, cl_context context,
|
extern int test_min_image_formats(cl_device_id deviceID, cl_context context,
|
||||||
cl_command_queue queue, int num_elements);
|
cl_command_queue queue, int num_elements);
|
||||||
|
extern int test_negative_get_platform_info(cl_device_id deviceID,
|
||||||
|
cl_context context,
|
||||||
|
cl_command_queue queue,
|
||||||
|
int num_elements);
|
||||||
|
extern int test_negative_get_platform_ids(cl_device_id deviceID,
|
||||||
|
cl_context context,
|
||||||
|
cl_command_queue queue,
|
||||||
|
int num_elements);
|
||||||
|
|||||||
Reference in New Issue
Block a user