@@ -146,6 +146,39 @@ TEST_F(test, memoryProviderOpsNullAllocationSplitAllocationMergeFields) {
146146 umfMemoryProviderDestroy (hProvider);
147147}
148148
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+
149182// //////////////// Negative test cases /////////////////
150183
151184TEST_F (test, memoryProviderCreateNullOps) {
@@ -256,6 +289,37 @@ TEST_F(test, memoryProviderOpsNullCloseIpcHandle) {
256289 ASSERT_EQ (ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
257290}
258291
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+
259323struct providerInitializeTest : umf_test::test,
260324 ::testing::WithParamInterface<umf_result_t > {};
261325
0 commit comments