xref: /libCEED/tests/t130-vector.c (revision 73501bfef0b51f07a8a68767e825f66e6042112c) !
1 /// @file
2 /// Test getting and restoring work vectors
3 /// \test Test getting and restoring work vectors
4 
5 #include <ceed.h>
6 #include <ceed/backend.h>
7 #include <stdio.h>
8 
9 int main(int argc, char **argv) {
10   Ceed ceed;
11 
12   CeedInit(argv[1], &ceed);
13 
14   // Check for getting the same work vector back
15   {
16     CeedVector x, y;
17 
18     CeedGetWorkVector(ceed, 20, &x);
19     // Do not do this!
20     CeedVector x_copy = x;
21 
22     CeedRestoreWorkVector(ceed, &x);
23     CeedGetWorkVector(ceed, 20, &y);
24     if (y != x_copy) printf("failed to return same work vector");
25     CeedRestoreWorkVector(ceed, &y);
26   }
27 
28   // Check for getting a new work vector back
29   {
30     CeedVector x, y;
31 
32     CeedGetWorkVector(ceed, 20, &x);
33     // Do not do this!
34     CeedVector x_copy = x;
35 
36     CeedRestoreWorkVector(ceed, &x);
37     CeedGetWorkVector(ceed, 30, &y);
38     if (y == x_copy) printf("failed to return new work vector");
39     CeedRestoreWorkVector(ceed, &y);
40   }
41 
42   CeedDestroy(&ceed);
43   return 0;
44 }
45