@@ -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