128bfd0b7SJeremy L Thompson /// @file
228bfd0b7SJeremy L Thompson /// Test read access for QFunctionContext data
328bfd0b7SJeremy L Thompson /// \test Test read access for QFunctionContext data
428bfd0b7SJeremy L Thompson #include <ceed.h>
528bfd0b7SJeremy L Thompson #include <math.h>
649aac155SJeremy L Thompson #include <stdio.h>
728bfd0b7SJeremy L Thompson
main(int argc,char ** argv)828bfd0b7SJeremy L Thompson int main(int argc, char **argv) {
928bfd0b7SJeremy L Thompson Ceed ceed;
1028bfd0b7SJeremy L Thompson CeedQFunctionContext ctx;
114fee36f0SJeremy L Thompson CeedScalar ctx_data[5] = {1, 2, 3, 4, 5}, *ctx_data_copy;
1228bfd0b7SJeremy L Thompson
1328bfd0b7SJeremy L Thompson CeedInit(argv[1], &ceed);
1428bfd0b7SJeremy L Thompson
1528bfd0b7SJeremy L Thompson CeedQFunctionContextCreate(ceed, &ctx);
164fee36f0SJeremy L Thompson CeedQFunctionContextSetData(ctx, CEED_MEM_HOST, CEED_COPY_VALUES, sizeof(ctx_data), &ctx_data);
1728bfd0b7SJeremy L Thompson
1828bfd0b7SJeremy L Thompson // Get data access
194fee36f0SJeremy L Thompson CeedQFunctionContextGetDataRead(ctx, CEED_MEM_HOST, &ctx_data_copy);
20f85e4a7bSJeremy L Thompson if (ctx_data_copy[4] != 5) {
2128bfd0b7SJeremy L Thompson // LCOV_EXCL_START
224fee36f0SJeremy L Thompson printf("error reading data: %f != 5.0\n", ctx_data_copy[4]);
2328bfd0b7SJeremy L Thompson // LCOV_EXCL_STOP
24f85e4a7bSJeremy L Thompson }
254fee36f0SJeremy L Thompson CeedQFunctionContextRestoreDataRead(ctx, &ctx_data_copy);
2628bfd0b7SJeremy L Thompson
2728bfd0b7SJeremy L Thompson // Check access protection - should error
284fee36f0SJeremy L Thompson CeedQFunctionContextGetDataRead(ctx, CEED_MEM_HOST, &ctx_data_copy);
294fee36f0SJeremy L Thompson CeedQFunctionContextGetData(ctx, CEED_MEM_HOST, &ctx_data_copy);
30*2b62239cSJeremy L Thompson // LCOV_EXCL_START
314fee36f0SJeremy L Thompson CeedQFunctionContextRestoreData(ctx, &ctx_data_copy);
324fee36f0SJeremy L Thompson CeedQFunctionContextRestoreDataRead(ctx, &ctx_data_copy);
3328bfd0b7SJeremy L Thompson
3428bfd0b7SJeremy L Thompson CeedQFunctionContextDestroy(&ctx);
3528bfd0b7SJeremy L Thompson CeedDestroy(&ceed);
3628bfd0b7SJeremy L Thompson return 0;
37*2b62239cSJeremy L Thompson // LCOV_EXCL_STOP
3828bfd0b7SJeremy L Thompson }
39