@@ -204,21 +204,49 @@ TEST_F(LevelZeroProviderInit, FailNonNullDevice) {
204204 umfLevelZeroMemoryProviderParamsDestroy (hParams);
205205}
206206
207- TEST_F (test, FailMismatchedResidentHandlesCount) {
207+ static void invalidResidentDevicesHandlesTestHelper (
208+ ze_device_handle_t *hDevices, uint32_t deviceCount,
209+ uint32_t *residentDevicesIndices, uint32_t residentDevicesCount) {
208210 const umf_memory_provider_ops_t *ops = umfLevelZeroMemoryProviderOps ();
209211 ASSERT_NE (ops, nullptr );
210212
211213 umf_level_zero_memory_provider_params_handle_t hParams = nullptr ;
212- umf_result_t result = umfLevelZeroMemoryProviderParamsCreate (&hParams);
213- ASSERT_EQ (result, UMF_RESULT_SUCCESS);
214+ const umf_result_t create_result =
215+ umfLevelZeroMemoryProviderParamsCreate (&hParams);
216+ ASSERT_EQ (create_result, UMF_RESULT_SUCCESS);
214217
215- result = umfLevelZeroMemoryProviderParamsSetResidentDevices (
216- hParams, nullptr , 99 , nullptr , 0 );
217- ASSERT_EQ (result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
218+ const umf_result_t set_resident_result =
219+ umfLevelZeroMemoryProviderParamsSetResidentDevices (
220+ hParams, hDevices, deviceCount, residentDevicesIndices,
221+ residentDevicesCount);
222+ ASSERT_EQ (set_resident_result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
218223
219224 umfLevelZeroMemoryProviderParamsDestroy (hParams);
220225}
221226
227+ TEST_F (test, FailMismatchedResidentHandlesCount) {
228+ invalidResidentDevicesHandlesTestHelper (nullptr , 99 , nullptr , 0 );
229+ }
230+
231+ TEST_F (test, FailMismatchedResidentDeviceIndicesCount) {
232+ std::vector<ze_device_handle_t > allDevices (23 );
233+ invalidResidentDevicesHandlesTestHelper (allDevices.data (), 23 , nullptr , 1 );
234+ }
235+
236+ TEST_F (test, FailRedundantResidentDeviceIndices) {
237+ std::vector<ze_device_handle_t > allDevices (23 );
238+ std::vector<uint32_t > residentDevicesIndices{3 , 5 , 1 , 5 }; // double 5
239+ invalidResidentDevicesHandlesTestHelper (allDevices.data (), 23 ,
240+ residentDevicesIndices.data (), 4 );
241+ }
242+
243+ TEST_F (test, FailTooLargeResidentDeviceIndex) {
244+ std::vector<ze_device_handle_t > allDevices (23 );
245+ std::vector<uint32_t > residentDevicesIndices{123 };
246+ invalidResidentDevicesHandlesTestHelper (allDevices.data (), 23 ,
247+ residentDevicesIndices.data (), 1 );
248+ }
249+
222250class LevelZeroMemoryAccessor : public MemoryAccessor {
223251 public:
224252 LevelZeroMemoryAccessor (ze_context_handle_t hContext,
0 commit comments