xref: /libCEED/tests/t005-ceed.c (revision 3446d1b5ce8d1a4e72ebab9baee4f1efd0361227)
1 /// @file
2 /// Test error storage for a CEED object
3 /// \test Test error storage for a CEED object
4 #include <ceed.h>
5 #include <string.h>
6 
7 int main(int argc, char **argv) {
8   Ceed ceed;
9 
10   CeedInit(argv[1], &ceed);
11 
12   // Check for standard message with default handler
13   const char *errmsg = NULL;
14   CeedGetErrorMessage(ceed, &errmsg);
15   if (strcmp(errmsg, "No error message stored"))
16     // LCOV_EXCL_START
17     printf("Unexpected error message received: \"%s\"\n", errmsg);
18   // LCOV_EXCL_STOP
19 
20   // Set error handler to store error message
21   CeedSetErrorHandler(ceed, CeedErrorStore);
22 
23   // Generate error
24   CeedVector vec;
25   CeedScalar *array;
26   CeedVectorCreate(ceed, 10, &vec);
27   CeedVectorGetArray(vec, CEED_MEM_HOST, &array);
28   CeedVectorGetArray(vec, CEED_MEM_HOST, &array);
29 
30   // Check error message
31   CeedGetErrorMessage(ceed, &errmsg);
32   if (!errmsg || !strcmp(errmsg, "No error message stored"))
33     // LCOV_EXCL_START
34     printf("Unexpected error message received: \"%s\"\n", errmsg);
35   // LCOV_EXCL_STOP
36   CeedResetErrorMessage(ceed, &errmsg);
37 
38   // Check error message reset
39   CeedGetErrorMessage(ceed, &errmsg);
40   if (strcmp(errmsg, "No error message stored"))
41     // LCOV_EXCL_START
42     printf("Unexpected error message received: \"%s\"\n", errmsg);
43   // LCOV_EXCL_STOP
44 
45   // Cleanup
46   CeedVectorRestoreArray(vec, &array);
47   CeedVectorDestroy(&vec);
48   CeedDestroy(&ceed);
49   return 0;
50 }
51