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