1//===------- Offload API tests - olGetSymbolInfo --------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include <OffloadAPI.h>
10
11#include "../common/Fixtures.hpp"
12
13using olGetSymbolInfoKernelTest = OffloadKernelTest;
14OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE(olGetSymbolInfoKernelTest);
15
16using olGetSymbolInfoGlobalTest = OffloadGlobalTest;
17OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE(olGetSymbolInfoGlobalTest);
18
19TEST_P(olGetSymbolInfoKernelTest, SuccessKind) {
20 ol_symbol_kind_t RetrievedKind;
21 ASSERT_SUCCESS(olGetSymbolInfo(Kernel, OL_SYMBOL_INFO_KIND,
22 sizeof(RetrievedKind), &RetrievedKind));
23 ASSERT_EQ(RetrievedKind, OL_SYMBOL_KIND_KERNEL);
24}
25
26TEST_P(olGetSymbolInfoGlobalTest, SuccessKind) {
27 ol_symbol_kind_t RetrievedKind;
28 ASSERT_SUCCESS(olGetSymbolInfo(Global, OL_SYMBOL_INFO_KIND,
29 sizeof(RetrievedKind), &RetrievedKind));
30 ASSERT_EQ(RetrievedKind, OL_SYMBOL_KIND_GLOBAL_VARIABLE);
31}
32
33TEST_P(olGetSymbolInfoKernelTest, InvalidAddress) {
34 void *RetrievedAddr;
35 ASSERT_ERROR(OL_ERRC_SYMBOL_KIND,
36 olGetSymbolInfo(Kernel, OL_SYMBOL_INFO_GLOBAL_VARIABLE_ADDRESS,
37 sizeof(RetrievedAddr), &RetrievedAddr));
38}
39
40TEST_P(olGetSymbolInfoGlobalTest, SuccessAddress) {
41 void *RetrievedAddr = nullptr;
42 ASSERT_SUCCESS(olGetSymbolInfo(Global, OL_SYMBOL_INFO_GLOBAL_VARIABLE_ADDRESS,
43 sizeof(RetrievedAddr), &RetrievedAddr));
44 ASSERT_NE(RetrievedAddr, nullptr);
45}
46
47TEST_P(olGetSymbolInfoKernelTest, InvalidSize) {
48 size_t RetrievedSize;
49 ASSERT_ERROR(OL_ERRC_SYMBOL_KIND,
50 olGetSymbolInfo(Kernel, OL_SYMBOL_INFO_GLOBAL_VARIABLE_SIZE,
51 sizeof(RetrievedSize), &RetrievedSize));
52}
53
54TEST_P(olGetSymbolInfoGlobalTest, SuccessSize) {
55 size_t RetrievedSize = 0;
56 ASSERT_SUCCESS(olGetSymbolInfo(Global, OL_SYMBOL_INFO_GLOBAL_VARIABLE_SIZE,
57 sizeof(RetrievedSize), &RetrievedSize));
58 ASSERT_EQ(RetrievedSize, 64 * sizeof(uint32_t));
59}
60
61TEST_P(olGetSymbolInfoKernelTest, InvalidNullHandle) {
62 ol_symbol_kind_t RetrievedKind;
63 ASSERT_ERROR(OL_ERRC_INVALID_NULL_HANDLE,
64 olGetSymbolInfo(nullptr, OL_SYMBOL_INFO_KIND,
65 sizeof(RetrievedKind), &RetrievedKind));
66}
67
68TEST_P(olGetSymbolInfoKernelTest, InvalidSymbolInfoEnumeration) {
69 ol_symbol_kind_t RetrievedKind;
70 ASSERT_ERROR(OL_ERRC_INVALID_ENUMERATION,
71 olGetSymbolInfo(Kernel, OL_SYMBOL_INFO_FORCE_UINT32,
72 sizeof(RetrievedKind), &RetrievedKind));
73}
74
75TEST_P(olGetSymbolInfoKernelTest, InvalidSizeZero) {
76 ol_symbol_kind_t RetrievedKind;
77 ASSERT_ERROR(OL_ERRC_INVALID_SIZE,
78 olGetSymbolInfo(Kernel, OL_SYMBOL_INFO_KIND, 0, &RetrievedKind));
79}
80
81TEST_P(olGetSymbolInfoKernelTest, InvalidSizeSmall) {
82 ol_symbol_kind_t RetrievedKind;
83 ASSERT_ERROR(OL_ERRC_INVALID_SIZE,
84 olGetSymbolInfo(Kernel, OL_SYMBOL_INFO_KIND,
85 sizeof(RetrievedKind) - 1, &RetrievedKind));
86}
87
88TEST_P(olGetSymbolInfoKernelTest, InvalidNullPointerPropValue) {
89 ol_symbol_kind_t RetrievedKind;
90 ASSERT_ERROR(OL_ERRC_INVALID_NULL_POINTER,
91 olGetSymbolInfo(Kernel, OL_SYMBOL_INFO_KIND,
92 sizeof(RetrievedKind), nullptr));
93}
94

source code of offload/unittests/OffloadAPI/symbol/olGetSymbolInfo.cpp