test_namespace.c 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "lsup/namespace.h"
  2. #include "test.h"
  3. static int
  4. test_namespace()
  5. {
  6. // Use nonconventional prefix names to avoid clashes with default
  7. // namespace prefixes already registered.
  8. ASSERT (LSUP_default_nsm != NULL, "Error creating namespace map on init!");
  9. EXPECT_PASS (
  10. LSUP_nsmap_add ("tdc", "http://purl.org/dc/elements/1.1/"));
  11. EXPECT_PASS (LSUP_nsmap_add ("tdcterms", "http://purl.org/dc/terms/"));
  12. EXPECT_PASS (LSUP_nsmap_add ("ns1", "urn:ns1:"));
  13. EXPECT_PASS (LSUP_nsmap_add ("ns2", "urn:ns2:"));
  14. // Look up prefix.
  15. EXPECT_STR_EQ (
  16. LSUP_nsmap_get_ns ("tdc"), "http://purl.org/dc/elements/1.1/");
  17. EXPECT_STR_EQ (
  18. LSUP_nsmap_get_ns ("tdcterms"), "http://purl.org/dc/terms/");
  19. // Prefixes longer than 7 chars are truncated.
  20. EXPECT_STR_EQ (
  21. LSUP_nsmap_get_ns ("dctermsxx"), "http://purl.org/dc/terms/");
  22. ASSERT (LSUP_nsmap_get_ns ("none") == NULL, "Non-existent NS found!");
  23. // Lookup NS.
  24. EXPECT_STR_EQ (LSUP_nsmap_get_pfx ("urn:ns1:"), "ns1");
  25. EXPECT_STR_EQ (LSUP_nsmap_get_pfx ("urn:ns2:"), "ns2");
  26. // Cannot test tdc and tdcterms reverse lookup because dc and dcterms are
  27. // also mapped to the same ns, and either one can come up.
  28. // Normalize and denormalize URIs.
  29. char *fq_uri, *pfx_uri;
  30. fq_uri = "urn:ns1:res1";
  31. EXPECT_PASS (LSUP_nsmap_denormalize_uri (fq_uri, &pfx_uri));
  32. EXPECT_STR_EQ (pfx_uri, "ns1:res1");
  33. fq_uri = NULL;
  34. EXPECT_PASS (LSUP_nsmap_normalize_uri (pfx_uri, &fq_uri));
  35. EXPECT_STR_EQ (fq_uri, "urn:ns1:res1");
  36. free (fq_uri);
  37. free (pfx_uri);
  38. ASSERT (
  39. LSUP_nsmap_normalize_uri ("dctermsxxtitle", &fq_uri)
  40. == LSUP_NORESULT, "Wrong RC for normalizing long ns!");
  41. ASSERT (!fq_uri, "Faulty normalization output should be NULL!");
  42. free (fq_uri);
  43. ASSERT (
  44. LSUP_nsmap_normalize_uri ("bogus:ns:123", &fq_uri)
  45. == LSUP_NORESULT, "Wrong RC for normalizing non-existent ns!");
  46. ASSERT (!fq_uri, "Faulty normalization output should be NULL!");
  47. free (fq_uri);
  48. ASSERT (
  49. LSUP_nsmap_normalize_uri ("bogus", &fq_uri)
  50. == LSUP_NORESULT, "Wrong RC for normalizing non-prefixed URI!");
  51. ASSERT (!fq_uri, "Faulty normalization output should be NULL!");
  52. free (fq_uri);
  53. EXPECT_PASS (LSUP_nsmap_remove ("tdc"));
  54. ASSERT (LSUP_nsmap_get_ns ("tdc") == NULL, "Deleted NS found!");
  55. ASSERT (
  56. LSUP_nsmap_remove ("none") == LSUP_NOACTION,
  57. "Wrong result for removal of non-existent prefix!");
  58. // Test normalization after removal.
  59. ASSERT (
  60. LSUP_nsmap_normalize_uri ("tdc:title", &fq_uri)
  61. == LSUP_NORESULT, "Wrong RC for normalizing non-prefixed URI!");
  62. ASSERT (!fq_uri, "Faulty normalization output should be NULL!");
  63. free (fq_uri);
  64. return 0;
  65. }
  66. int namespace_tests()
  67. {
  68. RUN (test_namespace);
  69. return 0;
  70. }