1891038deSjeremylt /// @file 2891038deSjeremylt /// Test creation, setting, and taking data for QFunctionContext 3891038deSjeremylt /// \test Test creation, setting, and taking data for QFunctionContext 4891038deSjeremylt #include <ceed.h> 5891038deSjeremylt #include <math.h> 6891038deSjeremylt 7891038deSjeremylt int main(int argc, char **argv) { 8891038deSjeremylt Ceed ceed; 9891038deSjeremylt CeedQFunctionContext ctx; 10891038deSjeremylt CeedScalar ctxData[5] = {1, 2, 3, 4, 5}, *ctxDataCopy; 11891038deSjeremylt 12891038deSjeremylt CeedInit(argv[1], &ceed); 13891038deSjeremylt 14*0f58c348SJeremy L Thompson // Set borrowed pointer 15891038deSjeremylt CeedQFunctionContextCreate(ceed, &ctx); 16891038deSjeremylt CeedQFunctionContextSetData(ctx, CEED_MEM_HOST, CEED_USE_POINTER, 17891038deSjeremylt sizeof(ctxData), &ctxData); 18891038deSjeremylt 19*0f58c348SJeremy L Thompson // Update borrowed pointer 20891038deSjeremylt CeedQFunctionContextGetData(ctx, CEED_MEM_HOST, &ctxDataCopy); 21891038deSjeremylt ctxDataCopy[4] = 6; 22891038deSjeremylt CeedQFunctionContextRestoreData(ctx, &ctxDataCopy); 2328bfd0b7SJeremy L Thompson if (ctxData[4] != 6) 24891038deSjeremylt // LCOV_EXCL_START 25891038deSjeremylt printf("error modifying data: %f != 6.0\n", ctxData[4]); 26891038deSjeremylt // LCOV_EXCL_STOP 27891038deSjeremylt 28*0f58c348SJeremy L Thompson // Take back borrowed pointer 29891038deSjeremylt CeedQFunctionContextTakeData(ctx, CEED_MEM_HOST, &ctxDataCopy); 30*0f58c348SJeremy L Thompson if (ctxDataCopy[4] != 6) 31*0f58c348SJeremy L Thompson // LCOV_EXCL_START 32*0f58c348SJeremy L Thompson printf("error accessing borrowed data: %f != 6.0\n", ctxDataCopy[4]); 33*0f58c348SJeremy L Thompson // LCOV_EXCL_STOP 34*0f58c348SJeremy L Thompson 35*0f58c348SJeremy L Thompson // Set copied data 36*0f58c348SJeremy L Thompson ctxData[4] = 6; 37*0f58c348SJeremy L Thompson CeedQFunctionContextSetData(ctx, CEED_MEM_HOST, CEED_COPY_VALUES, 38*0f58c348SJeremy L Thompson sizeof(ctxData), &ctxData); 39*0f58c348SJeremy L Thompson 40*0f58c348SJeremy L Thompson // Check copied data 41*0f58c348SJeremy L Thompson CeedQFunctionContextGetData(ctx, CEED_MEM_HOST, &ctxDataCopy); 42*0f58c348SJeremy L Thompson if (ctxDataCopy[4] != 6) 43*0f58c348SJeremy L Thompson // LCOV_EXCL_START 44*0f58c348SJeremy L Thompson printf("error accessing copied data: %f != 6.0\n", ctxDataCopy[4]); 45*0f58c348SJeremy L Thompson // LCOV_EXCL_STOP 46*0f58c348SJeremy L Thompson CeedQFunctionContextRestoreData(ctx, &ctxDataCopy); 47*0f58c348SJeremy L Thompson 48891038deSjeremylt CeedQFunctionContextDestroy(&ctx); 49891038deSjeremylt CeedDestroy(&ceed); 50891038deSjeremylt return 0; 51891038deSjeremylt } 52