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