1 /// @file 2 /// Test creation, setting, and taking data for QFunctionContext 3 /// \test Test creation, setting, and taking data for QFunctionContext 4 #include <ceed.h> 5 #include <math.h> 6 7 int main(int argc, char **argv) { 8 Ceed ceed; 9 CeedQFunctionContext ctx; 10 CeedScalar ctxData[5] = {1, 2, 3, 4, 5}, *ctxDataCopy; 11 12 CeedInit(argv[1], &ceed); 13 14 // Set borrowed pointer 15 CeedQFunctionContextCreate(ceed, &ctx); 16 CeedQFunctionContextSetData(ctx, CEED_MEM_HOST, CEED_USE_POINTER, 17 sizeof(ctxData), &ctxData); 18 19 // Update borrowed pointer 20 CeedQFunctionContextGetData(ctx, CEED_MEM_HOST, &ctxDataCopy); 21 ctxDataCopy[4] = 6; 22 CeedQFunctionContextRestoreData(ctx, &ctxDataCopy); 23 if (ctxData[4] != 6) 24 // LCOV_EXCL_START 25 printf("error modifying data: %f != 6.0\n", ctxData[4]); 26 // LCOV_EXCL_STOP 27 28 // Take back borrowed pointer 29 CeedQFunctionContextTakeData(ctx, CEED_MEM_HOST, &ctxDataCopy); 30 if (ctxDataCopy[4] != 6) 31 // LCOV_EXCL_START 32 printf("error accessing borrowed data: %f != 6.0\n", ctxDataCopy[4]); 33 // LCOV_EXCL_STOP 34 35 // Set copied data 36 ctxData[4] = 6; 37 CeedQFunctionContextSetData(ctx, CEED_MEM_HOST, CEED_COPY_VALUES, 38 sizeof(ctxData), &ctxData); 39 40 // Check copied data 41 CeedQFunctionContextGetData(ctx, CEED_MEM_HOST, &ctxDataCopy); 42 if (ctxDataCopy[4] != 6) 43 // LCOV_EXCL_START 44 printf("error accessing copied data: %f != 6.0\n", ctxDataCopy[4]); 45 // LCOV_EXCL_STOP 46 CeedQFunctionContextRestoreData(ctx, &ctxDataCopy); 47 48 CeedQFunctionContextDestroy(&ctx); 49 CeedDestroy(&ceed); 50 return 0; 51 } 52