xref: /libCEED/tests/t002-ceed.c (revision 9647a07ed4cccf5520ee61cfc49faed91542e405)
1e07206deSjeremylt /// @file
2e07206deSjeremylt /// Test return of a CEED object full resource name
3e07206deSjeremylt /// \test Test return of a CEED object full resource name
4e07206deSjeremylt #include <string.h>
5e07206deSjeremylt #include <ceed.h>
6e07206deSjeremylt 
7e07206deSjeremylt int main(int argc, char **argv) {
8e07206deSjeremylt   Ceed ceed;
9*9647a07eSDavid Medina   const char *backend = argv[1];
10e07206deSjeremylt   const char *resource;
11e07206deSjeremylt 
12*9647a07eSDavid Medina   CeedInit(backend, &ceed);
13e07206deSjeremylt 
14e07206deSjeremylt   CeedGetResource(ceed, &resource);
15*9647a07eSDavid Medina 
16*9647a07eSDavid Medina   const size_t resourceLength = strlen(resource);
17*9647a07eSDavid Medina   const bool isExactMatch = strcmp(resource, backend) == 0;
18*9647a07eSDavid Medina   const bool isMatchWithQueryArguments = (
19*9647a07eSDavid Medina       !isExactMatch
20*9647a07eSDavid Medina       && memcmp(resource, backend, resourceLength) == 0
21*9647a07eSDavid Medina       && backend[resourceLength] == ':'
22*9647a07eSDavid Medina                                          );
23*9647a07eSDavid Medina 
24*9647a07eSDavid Medina   if (!isExactMatch && !isMatchWithQueryArguments) {
25e07206deSjeremylt     // LCOV_EXCL_START
26e07206deSjeremylt     return CeedError(ceed, 1, "Incorrect full resource name: %s != %s",
27*9647a07eSDavid Medina                      resource, backend);
28e07206deSjeremylt     // LCOV_EXCL_STOP
29*9647a07eSDavid Medina   }
30e07206deSjeremylt 
31e07206deSjeremylt   CeedDestroy(&ceed);
32e07206deSjeremylt   return 0;
33e07206deSjeremylt }
34