#include "test.h" static int test_term_new() { char *data = "hello"; char *datatype = "urn:my:datatype"; LSUP_Term *term = LSUP_term_new (LSUP_TERM_LITERAL, data, datatype); EXPECT_STR_EQ (term->data, data); EXPECT_STR_EQ (LSUP_tcache_get (term->datatype)->data, datatype); char *lang = "en-US"; LSUP_term_init (term, LSUP_TERM_LT_LITERAL, data, lang); EXPECT_STR_EQ (term->data, data); EXPECT_STR_EQ (term->lang, lang); char *uri_data = "urn:id:2144564356"; LSUP_uri_init (term, uri_data); EXPECT_STR_EQ (term->data, uri_data); LSUP_term_free (term); return 0; } static int test_term_serialize_deserialize() { LSUP_Term *uri = LSUP_uri_new ("http://hello.org"); LSUP_Term *lit = LSUP_term_new (LSUP_TERM_LITERAL, "hello", NULL); LSUP_Term *tlit = LSUP_term_new (LSUP_TERM_LITERAL, "hello", "xsd:string"); LSUP_Term *tllit = LSUP_term_new (LSUP_TERM_LT_LITERAL, "hello", "en-US"); LSUP_Buffer *sterm; LSUP_Term *dsterm; sterm = LSUP_term_serialize (uri); ASSERT (sterm != NULL, "Error serializing term!"); //log_info ("%s", "Serialized URI: "); //LSUP_buffer_print (sterm); //log_info ("%s", "\n"); dsterm = LSUP_term_new_from_buffer (sterm); ASSERT (dsterm != NULL, "Error deserializing term!"); ASSERT (LSUP_term_equals (dsterm, uri), "URI serialization error!"); LSUP_term_free (uri); LSUP_buffer_free (sterm); LSUP_term_free (dsterm); sterm = LSUP_term_serialize (lit); ASSERT (sterm != NULL, "Error serializing term!"); //log_info ("%s", "Serialized literal: "); //LSUP_buffer_print (sterm); //log_info ("%s", "\n"); dsterm = LSUP_term_new_from_buffer (sterm); ASSERT (dsterm != NULL, "Error deserializing term!"); ASSERT (LSUP_term_equals (dsterm, lit), "lit serialization error!"); LSUP_term_free (lit); LSUP_buffer_free (sterm); LSUP_term_free (dsterm); sterm = LSUP_term_serialize (tlit); ASSERT (sterm != NULL, "Error serializing term!"); //log_info ("%s", "Serialized typed literal: "); //LSUP_buffer_print (sterm); //log_info ("%s", "\n"); dsterm = LSUP_term_new_from_buffer (sterm); ASSERT (dsterm != NULL, "Error deserializing term!"); ASSERT (LSUP_term_equals (dsterm, tlit), "tlit serialization error!"); LSUP_term_free (tlit); LSUP_buffer_free (sterm); LSUP_term_free (dsterm); sterm = LSUP_term_serialize (tllit); ASSERT (sterm != NULL, "Error serializing term!"); //log_info ("%s", "Serialized typed and language-tagged URI: "); //LSUP_buffer_print (sterm); //log_info ("%s", "\n"); dsterm = LSUP_term_new_from_buffer (sterm); ASSERT (dsterm != NULL, "Error deserializing term!"); ASSERT (LSUP_term_equals (dsterm, tllit), "URI serialization error!"); LSUP_term_free (tllit); LSUP_buffer_free (sterm); LSUP_term_free (dsterm); return 0; } static int test_term_to_key() { LSUP_Term *uri = LSUP_uri_new ("http://hello.org"); LSUP_Term *lit = LSUP_term_new (LSUP_TERM_LITERAL, "hello", NULL); LSUP_Term *tlit = LSUP_term_new(LSUP_TERM_LITERAL, "hello", DEFAULT_DTYPE); LSUP_Term *tllit1 = LSUP_term_new(LSUP_TERM_LT_LITERAL, "hello", "en-US"); LSUP_Term *tllit2 = LSUP_term_new(LSUP_TERM_LT_LITERAL, "hello", "en-GB"); LSUP_Key uri_key = LSUP_term_hash (uri); LSUP_Key lit_key = LSUP_term_hash (lit); LSUP_Key tlit_key = LSUP_term_hash (tlit); LSUP_Key tllit1_key = LSUP_term_hash (tllit1); LSUP_Key tllit2_key = LSUP_term_hash (tllit2); ASSERT (uri_key != lit_key, "URI key conflict!"); ASSERT (lit_key == tlit_key, "URI keys differ!"); ASSERT (lit_key != tllit1_key, "URI key conflict!"); ASSERT (tlit_key != tllit1_key, "URI key conflict!"); ASSERT (tllit1_key != tllit2_key, "URI key conflict!"); LSUP_term_free (uri); LSUP_term_free (lit); LSUP_term_free (tlit); LSUP_term_free (tllit1); LSUP_term_free (tllit2); return 0; } int term_tests() { RUN (test_term_new); RUN (test_term_serialize_deserialize); RUN (test_term_to_key); return 0; }