xref: /libCEED/tests/t408-qfunction.c (revision 2eb0be0b68ebb7cb25cc038250732c3239325ad2)
1 /// @file
2 /// Test read access for QFunctionContext data
3 /// \test Test read access for QFunctionContext data
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   CeedQFunctionContextCreate(ceed, &ctx);
15   CeedQFunctionContextSetData(ctx, CEED_MEM_HOST, CEED_COPY_VALUES, sizeof(ctxData), &ctxData);
16 
17   // Get data access
18   CeedQFunctionContextGetDataRead(ctx, CEED_MEM_HOST, &ctxDataCopy);
19   if (ctxDataCopy[4] != 5)
20     // LCOV_EXCL_START
21     printf("error reading data: %f != 5.0\n", ctxDataCopy[4]);
22   // LCOV_EXCL_STOP
23   CeedQFunctionContextRestoreDataRead(ctx, &ctxDataCopy);
24 
25   // Check access protection - should error
26   CeedQFunctionContextGetDataRead(ctx, CEED_MEM_HOST, &ctxDataCopy);
27   CeedQFunctionContextGetData(ctx, CEED_MEM_HOST, &ctxDataCopy);
28   CeedQFunctionContextRestoreData(ctx, &ctxDataCopy);
29   CeedQFunctionContextRestoreDataRead(ctx, &ctxDataCopy);
30 
31   CeedQFunctionContextDestroy(&ctx);
32   CeedDestroy(&ceed);
33   return 0;
34 }
35