xref: /libCEED/tests/t120-vector.c (revision b0976d5a9cd61a1a55d5329148196ea026561ed6)
19560d06aSjeremylt /// @file
25fb68f37SKaren (Ren) Stengel /// Test creation, reference copying, and destroying of a vector
35fb68f37SKaren (Ren) Stengel /// \test Test creation, reference copying, and destroying of a vector
4*b0976d5aSZach Atkins 
5*b0976d5aSZach Atkins //TESTARGS(name="length 10") {ceed_resource} 10
6*b0976d5aSZach Atkins //TESTARGS(name="length 0") {ceed_resource} 0
79560d06aSjeremylt #include <ceed.h>
849aac155SJeremy L Thompson #include <stdio.h>
9*b0976d5aSZach Atkins #include <stdlib.h>
109560d06aSjeremylt 
main(int argc,char ** argv)119560d06aSjeremylt int main(int argc, char **argv) {
129560d06aSjeremylt   Ceed       ceed;
139560d06aSjeremylt   CeedVector x, x_2;
144fee36f0SJeremy L Thompson   CeedInt    len = 10;
159560d06aSjeremylt 
169560d06aSjeremylt   CeedInit(argv[1], &ceed);
17*b0976d5aSZach Atkins   len = argc > 2 ? atoi(argv[2]) : len;
189560d06aSjeremylt 
194fee36f0SJeremy L Thompson   CeedVectorCreate(ceed, len, &x);
204fee36f0SJeremy L Thompson   CeedVectorCreate(ceed, len + 1, &x_2);
219560d06aSjeremylt 
229560d06aSjeremylt   CeedVectorReferenceCopy(x, &x_2);  // This destroys the previous x_2
239560d06aSjeremylt   CeedVectorDestroy(&x);
249560d06aSjeremylt 
254fee36f0SJeremy L Thompson   {
264fee36f0SJeremy L Thompson     CeedSize len_2;
274fee36f0SJeremy L Thompson 
284fee36f0SJeremy L Thompson     CeedVectorGetLength(x_2, &len_2);  // Second reference still valid
294fee36f0SJeremy L Thompson     if (len_2 != len) printf("Error copying CeedVector reference\n");
304fee36f0SJeremy L Thompson   }
319560d06aSjeremylt 
329560d06aSjeremylt   CeedVectorDestroy(&x_2);
339560d06aSjeremylt   CeedDestroy(&ceed);
349560d06aSjeremylt   return 0;
359560d06aSjeremylt }
36