#include "lsup/namespace.h" #include "test.h" static int test_namespace() { // Use nonconventional prefix names to avoid clashes with default // namespace prefixes already registered. ASSERT (LSUP_default_nsm != NULL, "Error creating namespace map on init!"); EXPECT_PASS ( LSUP_nsmap_add ("tdc", "http://purl.org/dc/elements/1.1/")); EXPECT_PASS (LSUP_nsmap_add ("tdcterms", "http://purl.org/dc/terms/")); EXPECT_PASS (LSUP_nsmap_add ("ns1", "urn:ns1:")); EXPECT_PASS (LSUP_nsmap_add ("ns2", "urn:ns2:")); // Look up prefix. EXPECT_STR_EQ ( LSUP_nsmap_get_ns ("tdc"), "http://purl.org/dc/elements/1.1/"); EXPECT_STR_EQ ( LSUP_nsmap_get_ns ("tdcterms"), "http://purl.org/dc/terms/"); // Prefixes longer than 7 chars are truncated. EXPECT_STR_EQ ( LSUP_nsmap_get_ns ("dctermsxx"), "http://purl.org/dc/terms/"); ASSERT (LSUP_nsmap_get_ns ("none") == NULL, "Non-existent NS found!"); // Lookup NS. EXPECT_STR_EQ (LSUP_nsmap_get_pfx ("urn:ns1:"), "ns1"); EXPECT_STR_EQ (LSUP_nsmap_get_pfx ("urn:ns2:"), "ns2"); // Cannot test tdc and tdcterms reverse lookup because dc and dcterms are // also mapped to the same ns, and either one can come up. // Normalize and denormalize URIs. char *fq_uri, *pfx_uri; fq_uri = "urn:ns1:res1"; EXPECT_PASS (LSUP_nsmap_denormalize_uri (fq_uri, &pfx_uri)); EXPECT_STR_EQ (pfx_uri, "ns1:res1"); fq_uri = NULL; EXPECT_PASS (LSUP_nsmap_normalize_uri (pfx_uri, &fq_uri)); EXPECT_STR_EQ (fq_uri, "urn:ns1:res1"); free (fq_uri); free (pfx_uri); ASSERT ( LSUP_nsmap_normalize_uri ("dctermsxxtitle", &fq_uri) == LSUP_NORESULT, "Wrong RC for normalizing long ns!"); ASSERT (!fq_uri, "Faulty normalization output should be NULL!"); free (fq_uri); ASSERT ( LSUP_nsmap_normalize_uri ("bogus:ns:123", &fq_uri) == LSUP_NORESULT, "Wrong RC for normalizing non-existent ns!"); ASSERT (!fq_uri, "Faulty normalization output should be NULL!"); free (fq_uri); ASSERT ( LSUP_nsmap_normalize_uri ("bogus", &fq_uri) == LSUP_NORESULT, "Wrong RC for normalizing non-prefixed URI!"); ASSERT (!fq_uri, "Faulty normalization output should be NULL!"); free (fq_uri); EXPECT_PASS (LSUP_nsmap_remove ("tdc")); ASSERT (LSUP_nsmap_get_ns ("tdc") == NULL, "Deleted NS found!"); ASSERT ( LSUP_nsmap_remove ("none") == LSUP_NOACTION, "Wrong result for removal of non-existent prefix!"); // Test normalization after removal. ASSERT ( LSUP_nsmap_normalize_uri ("tdc:title", &fq_uri) == LSUP_NORESULT, "Wrong RC for normalizing non-prefixed URI!"); ASSERT (!fq_uri, "Faulty normalization output should be NULL!"); free (fq_uri); return 0; } int namespace_tests() { RUN (test_namespace); return 0; }