@@ -146,6 +146,39 @@ TEST_F(test, memoryProviderOpsNullAllocationSplitAllocationMergeFields) {
146
146
umfMemoryProviderDestroy (hProvider);
147
147
}
148
148
149
+ TEST_F (test, memoryProviderOpsNullAllIPCFields) {
150
+ umf_memory_provider_ops_t provider_ops = UMF_NULL_PROVIDER_OPS;
151
+ provider_ops.ipc .get_ipc_handle_size = nullptr ;
152
+ provider_ops.ipc .get_ipc_handle = nullptr ;
153
+ provider_ops.ipc .put_ipc_handle = nullptr ;
154
+ provider_ops.ipc .open_ipc_handle = nullptr ;
155
+ provider_ops.ipc .close_ipc_handle = nullptr ;
156
+
157
+ umf_memory_provider_handle_t hProvider;
158
+ auto ret = umfMemoryProviderCreate (&provider_ops, nullptr , &hProvider);
159
+ ASSERT_EQ (ret, UMF_RESULT_SUCCESS);
160
+
161
+ size_t size;
162
+ ret = umfMemoryProviderGetIPCHandleSize (hProvider, &size);
163
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_NOT_SUPPORTED);
164
+
165
+ void *ptr = nullptr ;
166
+ void *providerIpcData = nullptr ;
167
+ ret = umfMemoryProviderGetIPCHandle (hProvider, ptr, size, providerIpcData);
168
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_NOT_SUPPORTED);
169
+
170
+ ret = umfMemoryProviderPutIPCHandle (hProvider, providerIpcData);
171
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_NOT_SUPPORTED);
172
+
173
+ ret = umfMemoryProviderOpenIPCHandle (hProvider, providerIpcData, &ptr);
174
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_NOT_SUPPORTED);
175
+
176
+ ret = umfMemoryProviderCloseIPCHandle (hProvider, ptr, size);
177
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_NOT_SUPPORTED);
178
+
179
+ umfMemoryProviderDestroy (hProvider);
180
+ }
181
+
149
182
// //////////////// Negative test cases /////////////////
150
183
151
184
TEST_F (test, memoryProviderCreateNullOps) {
@@ -256,6 +289,37 @@ TEST_F(test, memoryProviderOpsNullCloseIpcHandle) {
256
289
ASSERT_EQ (ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
257
290
}
258
291
292
+ TEST_F (test, memoryProviderOpsNullAllocationSplitAllocationMergeNegative) {
293
+ umf_memory_provider_ops_t provider_ops = UMF_NULL_PROVIDER_OPS;
294
+ umf_memory_provider_handle_t hProvider;
295
+
296
+ auto ret = umfMemoryProviderCreate (&provider_ops, nullptr , &hProvider);
297
+ ASSERT_EQ (ret, UMF_RESULT_SUCCESS);
298
+
299
+ ret = umfMemoryProviderAllocationSplit (hProvider, nullptr , 2 * 4096 , 4096 );
300
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
301
+
302
+ ret =
303
+ umfMemoryProviderAllocationMerge (hProvider, nullptr , nullptr , 2 * 4096 );
304
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
305
+
306
+ void *lowPtr = (void *)0xBAD ;
307
+ void *highPtr = (void *)((uintptr_t )lowPtr + 4096 );
308
+ size_t totalSize = 0 ;
309
+ ret =
310
+ umfMemoryProviderAllocationMerge (hProvider, lowPtr, highPtr, totalSize);
311
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
312
+
313
+ totalSize = 4096 ;
314
+ lowPtr = (void *)0xBAD ;
315
+ highPtr = (void *)((uintptr_t )lowPtr + 2 * totalSize);
316
+ ret =
317
+ umfMemoryProviderAllocationMerge (hProvider, lowPtr, highPtr, totalSize);
318
+ ASSERT_EQ (ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
319
+
320
+ umfMemoryProviderDestroy (hProvider);
321
+ }
322
+
259
323
struct providerInitializeTest : umf_test::test,
260
324
::testing::WithParamInterface<umf_result_t > {};
261
325
0 commit comments