Author: lgiessmann Date: Thu Aug 27 10:34:22 2009 New Revision: 124
Log: json: updated isidorus, so it is possibiel to use the current cl-json module; fixed some unit tests for the json module which caused problems with the sbcl-slime-connection; updated some unit tests to the corresponding cl-json version
Modified: trunk/src/unit_tests/json_test.lisp
Modified: trunk/src/unit_tests/json_test.lisp ============================================================================== --- trunk/src/unit_tests/json_test.lisp (original) +++ trunk/src/unit_tests/json_test.lisp Thu Aug 27 10:34:22 2009 @@ -20,10 +20,23 @@ (:export :test-to-json-string-topics :test-to-json-string-associations :test-to-json-string-fragments - :test-get-fragment-values-from-json-list + :test-get-fragment-values-from-json-list-general + :test-get-fragment-values-from-json-list-names + :test-get-fragment-values-from-json-list-occurrences + :test-get-fragment-values-from-json-list-topicStubs + :test-get-fragment-values-from-json-list-associations :run-json-tests - :test-json-importer - :test-json-importer-merge + :test-json-importer-general-1 + :test-json-importer-general-2 + :test-json-importer-general-3 + :test-json-importer-topics-1 + :test-json-importer-topics-2 + :test-json-importer-topics-3 + :test-json-importer-topics-4 + :test-json-importer-associations + :test-json-importer-merge-1 + :test-json-importer-merge-2 + :test-json-importer-merge-3 :test-get-all-topic-psis))
@@ -36,6 +49,15 @@ (in-suite json-tests)
+(defvar *t100-1* "{"topic":{"id":"t970","itemIdentities":["http://www.egovpt.org/itemIdentifiers#t100%5C%22%5D,%5C%22subjectLocators%5C... Lisp","variants":[{"itemIdentities":["http://www.egovpt.org/itemIdentifiers#t100_n_v1%5C%22%5D,%5C%22scopes%5C%22:...") + +(defvar *t100-2* "{"topic":{"id":"t945","itemIdentities":["http://www.egovpt.org/itemIdentifiers#t100%5C%22,%5C%22http://www.egovpt.org... Lisp","variants":[{"itemIdentities":["http://www.egovpt.org/itemIdentifiers#t100_n_v1%5C%22%5D,%5C%22scopes%5C%22:...") + +(defvar *t100-3* "{"topic":{"id":"t404","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100%5C%22%5D,%5C%22subjectLocators%5C... 19115","variants":[{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_n1_v1%5C%22%5D,%5C%22scopes%5C%22... Information - Metadata"}},{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_n1_v2%5C%22%5D,%5C%22scopes%5C%22... ISO 19115 standard ..."}},{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_o3%5C%22%5D,%5C%22type%5C%22:%5B%...") + +(defvar *t64* "{"topic":{"id":"t396","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t64%5C%22%5D,%5C%22subjectLocators%5C%... uses standard","variants":null}],"occurrences":null},"topicStubs":[{"id":"t260","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t7%5C%22%5D,%5C%22subjectLocators%5C%2...") + + (test test-to-json-string-topics (let ((dir "data_base")) @@ -48,31 +70,30 @@ (let ((t50a (get-item-by-id "t50a"))) (let ((t50a-string (to-json-string t50a)) (json-string - (concatenate 'string "{"id":"" (topicid t50a) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t50a%5C%22%5D,%5C%22subjectLocators%5C... version of a name","variants":[{"itemIdentities":null,"scopes":[["http://www.topicmaps.org/xtm/1.0/core.xtm#sort%5C%22%5D%5D,%5C%22resourceRef..." ))) + (concatenate 'string "{"id":"" (topicid t50a) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t50a"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/types\/long-name"],"instanceOfs":[["http:\/\/www.networkedplanet.com\/psi\/npcl\/meta-types\/occurrence-type"]],"names":[{"itemIdentities":null,"type":null,"scopes":null,"value":"long version of a name","variants":[{"itemIdentities":null,"scopes":[["http:\/\/www.topicmaps.org\/xtm\/1.0\/core.xtm#sort"]],"resourceRef":null,"resourceData":{"datatype":"http:\/\/www.w3.org\/2001\/XMLSchema#string","value":"Long-Version"}}]}],"occurrences":null}" ))) (is (string= t50a-string json-string))) (let ((t8 (get-item-by-id "t8"))) (let ((t8-string (to-json-string t8)) (json-string - (concatenate 'string "{"id":"" (topicid t8) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t8%5C%22%5D,%5C%22subjectLocators%5C%2... Role Type","variants":null}],"occurrences":null}"))) + (concatenate 'string "{"id":"" (topicid t8) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t8"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/www.networkedplanet.com\/psi\/npcl\/meta-types\/association-role-type"],"instanceOfs":[["http:\/\/www.networkedplanet.com\/psi\/npcl\/meta-types\/topic-type"]],"names":[{"itemIdentities":null,"type":null,"scopes":null,"value":"Association Role Type","variants":null}],"occurrences":null}"))) (is (string= t8-string json-string)))) (let ((t-topic (get-item-by-id "topic" :xtm-id "core.xtm"))) (let ((t-topic-string (to-json-string t-topic)) (json-string - (concatenate 'string "{"id":"" (topicid t-topic) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#topic%5C%22%5D,%5C%22instanceOfs%5..."))) + (concatenate 'string "{"id":"" (topicid t-topic) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http:\/\/www.topicmaps.org\/xtm\/1.0\/core.xtm#topic"],"instanceOfs":null,"names":null,"occurrences":null}"))) (is (string= t-topic-string json-string)))) (let ((t301 (get-item-by-id "t301"))) (let ((t301-string (to-json-string t301)) (json-string - (concatenate 'string "{"id":"" (topicid t301) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http://psi.egovpt.org/service/Google+Maps%5C%22,%5C%22http://maps.google.com... Maps","variants":null},{"itemIdentities":null,"type":null,"scopes":[["http://psi.egovpt.org/types/long-name%5C%22%5D%5D,%5C%22value%5C%22:%5C%22Go... Maps Application","variants":null}],"occurrences":[{"itemIdentities":null,"type":["http://psi.egovpt.org/types/description%5C%22%5D,%5C%22scopes%5C%22:null,%5C... popular geodata service that is widely used for mashups with geodataProbably not really conformant to ISO 19115, but who cares in this context."}},{"itemIdentities":null,"type":["http://psi.egovpt.org/types/links%5C%22%5D,%5C%22scopes%5C%22:null,%5C%22res..."))) + (concatenate 'string "{"id":"" (topicid t301) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/service\/Google+Maps","http:\/\/maps.google.com"],"instanceOfs":[["http:\/\/psi.egovpt.org\/types\/service"]],"names":[{"itemIdentities":["http:\/\/psi.egovpt.org\/topic\/t301a_n1"],"type":null,"scopes":[["http:\/\/psi.egovpt.org\/types\/long-name"]],"value":"Google Maps","variants":null},{"itemIdentities":null,"type":null,"scopes":[["http:\/\/psi.egovpt.org\/types\/long-name"]],"value":"Google Maps Application","variants":null}],"occurrences":[{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/description"],"scopes":null,"resourceRef":null,"resourceData":{"datatype":"http:\/\/www.w3.org\/2001\/XMLSchema#string","value":"a popular geodata service that is widely used for mashups with geodataProbably not really conformant to ISO 19115, but who cares in this context."}},{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/links"],"scopes":null,"resourceRef":"http:\/\/maps.google.com","resourceData":null},{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/links"],"scopes":null,"resourceRef":"http:\/\/maps.google.de","resourceData":null}]}"))) (is (string= t301-string json-string)))) (let ((t100 (get-item-by-id "t100"))) (let ((t100-string (to-json-string t100)) (json-string - (concatenate 'string "{"id":"" (topicid t100) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100%5C%22%5D,%5C%22subjectLocators%5C... 19115","variants":[{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_n1_v1%5C%22%5D,%5C%22scopes%5C%22... Information - Metadata"}},{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_n1_v2%5C%22%5D,%5C%22scopes%5C%22... ISO 19115 standard ..."}},{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_o3%5C%22%5D,%5C%22type%5C%22:%5B%..."))) + (concatenate 'string "{"id":"" (topicid t100) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/standard\/ISO+19115%3A+Geographic+Information+-+Metadata"],"instanceOfs":[["http:\/\/psi.egovpt.org\/types\/semanticstandard"]],"names":[{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_n1"],"type":null,"scopes":null,"value":"ISO 19115","variants":[{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_n1_v1"],"scopes":[["http:\/\/www.topicmaps.org\/xtm\/1.0\/core.xtm#display"]],"resourceRef":null,"resourceData":{"datatype":"http:\/\/www.w3.org\/2001\/XMLSchema#string","value":"Geographic Information - Metadata"}},{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_n1_v2"],"scopes":[["http:\/\/www.topicmaps.org\/xtm\/1.0\/core.xtm#sort"]],"resourceRef":null,"resourceData":{"datatype":"http:\/\/www.w3.org\/2001\/XMLSchema#string","value":"ISO-19115"}}]}],"occurrences":[{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_o1"],"type":["http:\/\/psi.egovpt.org\/types\/standardHasStatus"],"scopes":null,"resourceRef":"http:\/\/www.budabe.de\/","resourceData":null},{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_o2"],"type":["http:\/\/psi.egovpt.org\/types\/description"],"scopes":null,"resourceRef":null,"resourceData":{"datatype":"http:\/\/www.w3.org\/2001\/XMLSchema#string","value":"The ISO 19115 standard ..."}},{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_o3"],"type":["http:\/\/psi.egovpt.org\/types\/standardValidFromDate"],"scopes":null,"resourceRef":null,"resourceData":{"datatype":"http:\/\/www.w3.org\/2001\/XMLSchema#date","value":"2003-01-01"}},{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_o4"],"type":["http:\/\/psi.egovpt.org\/types\/links"],"scopes":null,"resourceRef":"http:\/\/www.editeur.org\/standards\/ISO19115.pdf","resourceData":null}]}"))) (is (string= t100-string json-string))))))))
- (test test-to-json-string-associations (let ((dir "data_base")) @@ -103,11 +124,11 @@ "http://psi.egovpt.org/itemIdentifiers#assoc_7")))) (let ((association-1-string (to-json-string association-1)) (json-string - (concatenate 'string "{"itemIdentities":null,"type":["http://psi.egovpt.org/types/isNarrowerSubject%5C%22%5D,%5C%22scopes%5C%22:nu..."))) + (concatenate 'string "{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/isNarrowerSubject"],"scopes":null,"roles":[{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/broaderSubject"],"topicRef":["http:\/\/psi.egovpt.org\/subject\/Data"]},{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/narrowerSubject"],"topicRef":["http:\/\/psi.egovpt.org\/subject\/GeoData"]}]}"))) (is (string= association-1-string json-string))) (let ((association-7-string (to-json-string association-7)) (json-string - (concatenate 'string "{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#assoc_7%5C%22%5D,%5C%22type%5C%22:%5B%..."))) + (concatenate 'string "{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#assoc_7"],"type":["http:\/\/psi.egovpt.org\/types\/serviceUsesStandard"],"scopes":null,"roles":[{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/ServiceRoleType"],"topicRef":["http:\/\/psi.egovpt.org\/service\/Google+Maps","http:\/\/maps.google.com"]},{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/StandardRoleType"],"topicRef":["http:\/\/psi.egovpt.org\/standard\/ISO+19115%3A+Geographic+Information+-+Metadata"]}]}"))) (is (string= association-7-string json-string))) (elephant:remove-association association-7 'roles (first (roles association-7))) (elephant:remove-association association-7 'roles (first (roles association-7))) @@ -116,11 +137,10 @@ (elephant:add-association association-7 'themes t62) (let ((association-7-string (to-json-string association-7)) (json-string - (concatenate 'string "{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#assoc_7%5C%22%5D,%5C%22type%5C%22:null..."))) + (concatenate 'string "{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#assoc_7"],"type":null,"scopes":[["http:\/\/psi.egovpt.org\/types\/StandardRoleType"],["http:\/\/psi.egovpt.org\/types\/serviceUsesStandard"]],"roles":null}"))) (is (string= association-7-string json-string))))))))
- (test test-to-json-string-fragments (let ((dir "data_base")) @@ -136,21 +156,20 @@ (frag-topic (create-latest-fragment-of-topic "http://www.topicmaps.org/xtm/1.0/core.xtm#topic"))) (let ((frag-t100-string - (concatenate 'string "{"topic":{"id":"" (d:topicid (d:topic frag-t100)) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100%5C%22%5D,%5C%22subjectLocators%5C... 19115","variants":[{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_n1_v1%5C%22%5D,%5C%22scopes%5C%22... Information - Metadata"}},{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_n1_v2%5C%22%5D,%5C%22scopes%5C%22... ISO 19115 standard ..."}},{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_o3%5C%22%5D,%5C%22type%5C%22:%5B%..."" (topicid (elt (referenced-topics frag-t100) 0)) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t3a%5C%22%5D,%5C%22subjectLocators%5C%..."" (topicid (elt (referenced-topics frag-t100) 1)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#display%5C%22%5D%7D,%7B%5C%22id%5C..."" (topicid (elt (referenced-topics frag-t100) 2)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#sort%5C%22%5D%7D,%7B%5C%22id%5C%22..."" (topicid (elt (referenced-topics frag-t100) 3)) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t51%5C%22%5D,%5C%22subjectLocators%5C%..."" (topicid (elt (referenced-topics frag-t100) 4)) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t53%5C%22%5D,%5C%22subjectLocators%5C%..."" (topicid (elt (referenced-topics frag-t100) 5)) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t54%5C%22%5D,%5C%22subjectLocators%5C%..."" (topicid (elt (referenced-topics frag-t100) 6)) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t55%5C%22%5D,%5C%22subjectLocators%5C%..."" (topicid (elt (referenced-topics frag-t100) 7)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http://psi.egovpt.org/subject/GeoData%5C%22%5D%7D,%7B%5C%22id%5C%22:%5C"" (topicid (elt (referenced-topics frag-t100) 8)) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t60%5C%22%5D,%5C%22subjectLocators%5C%..."" (topicid (elt (referenced-topics frag-t100) 9)) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t61%5C%22%5D,%5C%22subjectLocators%5C%..."" (topicid (elt (referenced-topics frag-t100) 10)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http://psi.egovpt.org/subject/Semantic+Description%5C%22%5D%7D,%7B%5C%22id%5..."" (topicid (elt (referenced-topics frag-t100) 11)) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t64%5C%22%5D,%5C%22subjectLocators%5C%..."" (topicid (elt (referenced-topics frag-t100) 12)) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t63%5C%22%5D,%5C%22subjectLocators%5C%..."" (topicid (elt (referenced-topics frag-t100) 13)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http://psi.egovpt.org/service/Google+Maps%5C%22,%5C%22http://maps.google.com..."" (topicid (elt (referenced-topics frag-t100) 14)) "","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t62%5C%22%5D,%5C%22subjectLocators%5C%...")) + (concatenate 'string "{"topic":{"id":"" (d:topicid (d:topic frag-t100)) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/standard\/ISO+19115%3A+Geographic+Information+-+Metadata"],"instanceOfs":[["http:\/\/psi.egovpt.org\/types\/semanticstandard"]],"names":[{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_n1"],"type":null,"scopes":null,"value":"ISO 19115","variants":[{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_n1_v1"],"scopes":[["http:\/\/www.topicmaps.org\/xtm\/1.0\/core.xtm#display"]],"resourceRef":null,"resourceData":{"datatype":"http:\/\/www.w3.org\/2001\/XMLSchema#string","value":"Geographic Information - Metadata"}},{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_n1_v2"],"scopes":[["http:\/\/www.topicmaps.org\/xtm\/1.0\/core.xtm#sort"]],"resourceRef":null,"resourceData":{"datatype":"http:\/\/www.w3.org\/2001\/XMLSchema#string","value":"ISO-19115"}}]}],"occurrences":[{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_o1"],"type":["http:\/\/psi.egovpt.org\/types\/standardHasStatus"],"scopes":null,"resourceRef":"http:\/\/www.budabe.de\/","resourceData":null},{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_o2"],"type":["http:\/\/psi.egovpt.org\/types\/description"],"scopes":null,"resourceRef":null,"resourceData":{"datatype":"http:\/\/www.w3.org\/2001\/XMLSchema#string","value":"The ISO 19115 standard ..."}},{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_o3"],"type":["http:\/\/psi.egovpt.org\/types\/standardValidFromDate"],"scopes":null,"resourceRef":null,"resourceData":{"datatype":"http:\/\/www.w3.org\/2001\/XMLSchema#date","value":"2003-01-01"}},{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t100_o4"],"type":["http:\/\/psi.egovpt.org\/types\/links"],"scopes":null,"resourceRef":"http:\/\/www.editeur.org\/standards\/ISO19115.pdf","resourceData":null}]},"topicStubs":[{"id":"" (topicid (elt (referenced-topics frag-t100) 0)) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t3a"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/types\/semanticstandard"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 1)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http:\/\/www.topicmaps.org\/xtm\/1.0\/core.xtm#display"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 2)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http:\/\/www.topicmaps.org\/xtm\/1.0\/core.xtm#sort"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 3)) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t51"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/types\/standardHasStatus"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 4)) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t53"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/types\/description"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 5)) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t54"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/types\/standardValidFromDate"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 6)) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t55"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/types\/links"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 7)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/subject\/GeoData"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 8)) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t60"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/types\/standardIsAboutSubject"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 9)) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t61"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/types\/SubjectRoleType"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 10)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/subject\/Semantic+Description"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 11)) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t64"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/types\/serviceUsesStandard"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 12)) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t63"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/types\/ServiceRoleType"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 13)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/service\/Google+Maps","http:\/\/maps.google.com"]},{"id":"" (topicid (elt (referenced-topics frag-t100) 14)) "","itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#t62"],"subjectLocators":null,"subjectIdentifiers":["http:\/\/psi.egovpt.org\/types\/StandardRoleType"]}],"associations":[{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/standardIsAboutSubject"],"scopes":null,"roles":[{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/StandardRoleType"],"topicRef":["http:\/\/psi.egovpt.org\/standard\/ISO+19115%3A+Geographic+Information+-+Metadata"]},{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/SubjectRoleType"],"topicRef":["http:\/\/psi.egovpt.org\/subject\/GeoData"]}]},{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/standardIsAboutSubject"],"scopes":null,"roles":[{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/StandardRoleType"],"topicRef":["http:\/\/psi.egovpt.org\/standard\/ISO+19115%3A+Geographic+Information+-+Metadata"]},{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/SubjectRoleType"],"topicRef":["http:\/\/psi.egovpt.org\/subject\/Semantic+Description"]}]},{"itemIdentities":["http:\/\/psi.egovpt.org\/itemIdentifiers#assoc_7"],"type":["http:\/\/psi.egovpt.org\/types\/serviceUsesStandard"],"scopes":null,"roles":[{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/ServiceRoleType"],"topicRef":["http:\/\/psi.egovpt.org\/service\/Google+Maps","http:\/\/maps.google.com"]},{"itemIdentities":null,"type":["http:\/\/psi.egovpt.org\/types\/StandardRoleType"],"topicRef":["http:\/\/psi.egovpt.org\/standard\/ISO+19115%3A+Geographic+Information+-+Metadata"]}]}],"tmIds":["http:\/\/www.isidor.us\/unittests\/testtm"]}")) (frag-topic-string - (concatenate 'string "{"topic":{"id":"" (topicid (topic frag-topic)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#topic%5C%22%5D,%5C%22instanceOfs%5..."))) + (concatenate 'string "{"topic":{"id":"" (topicid (topic frag-topic)) "","itemIdentities":null,"subjectLocators":null,"subjectIdentifiers":["http:\/\/www.topicmaps.org\/xtm\/1.0\/core.xtm#topic"],"instanceOfs":null,"names":null,"occurrences":null},"topicStubs":null,"associations":null,"tmIds":["http:\/\/www.topicmaps.org\/xtm\/1.0\/core.xtm"]}"))) (is (string= frag-t100-string (to-json-string frag-t100))) (is (string= frag-topic-string (to-json-string frag-topic))))))))
- -(test test-get-fragment-values-from-json-list +(test test-get-fragment-values-from-json-list-general (let ((dir "data_base")) (with-fixture initialize-destination-db (dir) (xml-importer:setup-repository *notificationbase.xtm* dir :tm-id "http://www.isidor.us/unittests/testtm" - :xtm-id *TEST-TM*) + :xtm-id *TEST-TM*)
(elephant:open-store (xml-importer:get-store-spec dir)) (let ((json-fragment @@ -160,22 +179,39 @@ (let ((fragment-list (json-importer::get-fragment-values-from-json-list (json:decode-json-from-string json-fragment)))) - (let ((topic (getf fragment-list :topic)) - (topicStubs (getf fragment-list :topicStubs)) - (f-associations (getf fragment-list :associations))) + (let ((topic (getf fragment-list :topic))) (is (string= (getf topic :ID) (d:topicid (d:identified-construct (elephant:get-instance-by-value 'd:PersistentIdC 'd:uri - "http://psi.egovpt.org/standard/Topic+Maps+2002"))))) + "http://psi.egovpt.org/standard/Topic+Maps+2002"))))) (is-false (getf topic :itemIdentities)) (is-false (getf topic :subjectLocators)) (is (= (length (getf topic :subjectIdentifiers)) 1)) - (is (string= (first (getf topic :subjectIdentifiers)) + (is (string= (first (getf topic :subjectIdentifiers)) "http://psi.egovpt.org/standard/Topic+Maps+2002")) - (is (= (length (getf topic :instanceOfs)) 1)) - (is (= (length (first (getf topic :instanceOfs))) 1)) - (is (string= (first (first (getf topic :instanceOfs))) - "http://psi.egovpt.org/types/semanticstandard")) + (is (= (length (getf topic :instanceOfs)) 1)) + (is (= (length (first (getf topic :instanceOfs))) 1)) + (is (string= (first (first (getf topic :instanceOfs))) + "http://psi.egovpt.org/types/semanticstandard")))))))) + + +(test test-get-fragment-values-from-json-list-names + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (xml-importer:setup-repository + *notificationbase.xtm* dir :tm-id "http://www.isidor.us/unittests/testtm" + :xtm-id *TEST-TM*) + + (elephant:open-store (xml-importer:get-store-spec dir)) + (let ((json-fragment + (let ((fragment-obj + (create-latest-fragment-of-topic "http://psi.egovpt.org/standard/Topic+Maps+2002"))) + (to-json-string fragment-obj)))) + (let ((fragment-list + (json-importer::get-fragment-values-from-json-list + (json:decode-json-from-string json-fragment)))) + (let ((topic (getf fragment-list :topic))) (is (= (length (getf topic :names)) 2)) (let ((name-1 (first (getf topic :names))) (name-2 (second (getf topic :names)))) @@ -223,8 +259,27 @@ (is (string= (getf (getf variant :resourceData) :datatype) "http://www.w3.org/2001/XMLSchema#string")) (is (string= (getf (getf variant :resourceData) :value) - "ISO/IEC-13250:2002")) - (is (= (length (getf topic :occurrences)) 4)))) + "ISO/IEC-13250:2002")))))))))) + + +(test test-get-fragment-values-from-json-list-occurrences + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (xml-importer:setup-repository + *notificationbase.xtm* dir :tm-id "http://www.isidor.us/unittests/testtm" + :xtm-id *TEST-TM*) + + (elephant:open-store (xml-importer:get-store-spec dir)) + (let ((json-fragment + (let ((fragment-obj + (create-latest-fragment-of-topic "http://psi.egovpt.org/standard/Topic+Maps+2002"))) + (to-json-string fragment-obj)))) + (let ((fragment-list + (json-importer::get-fragment-values-from-json-list + (json:decode-json-from-string json-fragment)))) + (let ((topic (getf fragment-list :topic))) + (is (= (length (getf topic :occurrences)) 4)) (let ((occurrence-1 (first (getf topic :occurrences))) (occurrence-2 (second (getf topic :occurrences))) (occurrence-3 (third (getf topic :occurrences))) @@ -267,7 +322,26 @@ (is-false (getf occurrence-4 :scopes)) (is (string= (getf occurrence-4 :resourceRef) "http://www1.y12.doe.gov/capabilities/sgml/sc34/document/0322_files/iso13250-...")) - (is-false (getf occurrence-4 :resourceData))) + (is-false (getf occurrence-4 :resourceData))))))))) + + +(test test-get-fragment-values-from-json-list-topicStubs + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (xml-importer:setup-repository + *notificationbase.xtm* dir :tm-id "http://www.isidor.us/unittests/testtm" + :xtm-id *TEST-TM*) + + (elephant:open-store (xml-importer:get-store-spec dir)) + (let ((json-fragment + (let ((fragment-obj + (create-latest-fragment-of-topic "http://psi.egovpt.org/standard/Topic+Maps+2002"))) + (to-json-string fragment-obj)))) + (let ((fragment-list + (json-importer::get-fragment-values-from-json-list + (json:decode-json-from-string json-fragment)))) + (let ((topicStubs (getf fragment-list :topicStubs))) (is (= (length topicStubs) 15)) (loop for topicStub in topicStubs do (let ((id (getf topicStub :ID)) @@ -340,7 +414,27 @@ (is (string= (first itemIdentities) "http://psi.egovpt.org/itemIdentifiers#t52"))) (t - (is-true (format t "bad subjectIdentifier found in topicStubs")))))))) + (is-true (format t "bad subjectIdentifier found in topicStubs")))))))))))))) + + + +(test test-get-fragment-values-from-json-list-associations + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (xml-importer:setup-repository + *notificationbase.xtm* dir :tm-id "http://www.isidor.us/unittests/testtm" + :xtm-id *TEST-TM*) + + (elephant:open-store (xml-importer:get-store-spec dir)) + (let ((json-fragment + (let ((fragment-obj + (create-latest-fragment-of-topic "http://psi.egovpt.org/standard/Topic+Maps+2002"))) + (to-json-string fragment-obj)))) + (let ((fragment-list + (json-importer::get-fragment-values-from-json-list + (json:decode-json-from-string json-fragment)))) + (let ((f-associations (getf fragment-list :associations))) (is (= (length f-associations) 2)) (is (= (length (getf (first f-associations) :type)) 1)) (is (= (length (getf (second f-associations) :type)) 1)) @@ -396,147 +490,192 @@ "http://psi.egovpt.org/standard/Topic+Maps+2002"))))))))))
-(test test-json-importer +(test test-json-importer-general-1 (let ((dir "data_base")) (with-fixture initialize-destination-db (dir) (elephant:open-store (xml-importer:get-store-spec dir)) (xml-importer:init-isidorus) (elephant:open-store (xml-importer:get-store-spec dir)) ; init-isiodurs closes the store - - (let ((json-fragment-t64 - "{"topic":{"id":"t396","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t64%5C%22%5D,%5C%22subjectLocators%5C%... uses standard","variants":null}],"occurrences":null},"topicStubs":[{"id":"t260","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t7%5C%22%5D,%5C%22subjectLocators%5C%2...") - (json-fragment-t100 - "{"topic":{"id":"t404","itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100%5C%22%5D,%5C%22subjectLocators%5C... 19115","variants":[{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_n1_v1%5C%22%5D,%5C%22scopes%5C%22... Information - Metadata"}},{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_n1_v2%5C%22%5D,%5C%22scopes%5C%22... ISO 19115 standard ..."}},{"itemIdentities":["http://psi.egovpt.org/itemIdentifiers#t100_o3%5C%22%5D,%5C%22type%5C%22:%5B%...")) - (is (= (length (elephant:get-instances-by-class 'TopicC)) 13)) - (is (= (length (elephant:get-instances-by-class 'AssociationC)) 0)) - (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 1)) - (json-importer:json-to-elem json-fragment-t64) - (is (= (length (elephant:get-instances-by-class 'TopicC)) 15)) - (is (= (length (elephant:get-instances-by-class 'AssociationC)) 1)) - (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 2)) - (let ((core-tm - (loop for tm in (elephant:get-instances-by-class 'TopicMapC) - when (string= (uri (first (item-identifiers tm))) - "http://www.topicmaps.org/xtm/1.0/core.xtm") - return tm)) - (test-tm - (loop for tm in (elephant:get-instances-by-class 'TopicMapC) - when (string= (uri (first (item-identifiers tm))) - "http://www.isidor.us/unittests/testtm") - return tm))) - (is-true (and core-tm test-tm)) - (is (= (length (topics core-tm)) 13)) - (is (= (length (associations core-tm)) 0)) - (is (= (length (topics test-tm)) 2)) - (is (= (length (associations test-tm)) 1)) - (let ((main-topic - (loop for topic in (topics test-tm) - when (string= (uri (first (psis topic))) - "http://psi.egovpt.org/types/serviceUsesStandard") - return topic)) - (sub-topic - (loop for topic in (topics test-tm) - when (string= (uri (first (psis topic))) - "http://www.networkedplanet.com/psi/npcl/meta-types/association-type") - return topic))) - (is-true (and main-topic sub-topic)) - (let ((instanceOf-assoc - (first (associations test-tm)))) - (is (string= (uri (first (psis (instance-of instanceOf-assoc)))) - constants::*type-instance-psi*)) - (is-false (d:themes instanceOf-assoc)) - (is (string= (d:uri (first (d:item-identifiers (first (d:in-topicmaps instanceOf-assoc))))) - "http://www.isidor.us/unittests/testtm")) - (is-false (d:item-identifiers instanceOf-assoc)) - (let ((super-type-role - (loop for role in (roles instanceOf-assoc) - when (string= (uri (first (psis (instance-of role)))) - constants:*type-psi*) - return role)) - (sub-type-role - (loop for role in (roles instanceOf-assoc) - when (string= (uri (first (psis (instance-of role)))) - constants:*instance-psi*) - return role))) - (is-true (and super-type-role sub-type-role)) - (is (string= (uri (first (psis (player super-type-role)))) - "http://www.networkedplanet.com/psi/npcl/meta-types/association-type")) - (is (string= (uri (first (psis (player sub-type-role)))) - "http://psi.egovpt.org/types/serviceUsesStandard")))) - (is-true (= (length (item-identifiers main-topic)) 1)) - (is-true (= (length (item-identifiers sub-topic)) 1)) - (is-true (string= (uri (first (item-identifiers main-topic))) - "http://psi.egovpt.org/itemIdentifiers#t64")) - (is-true (string= (uri (first (item-identifiers sub-topic))) - "http://psi.egovpt.org/itemIdentifiers#t7")) - (is-true (= (length (names main-topic)) 1)) - (is-true (string= (charvalue (first (names main-topic))) - "service uses standard")))) - (json-importer:json-to-elem json-fragment-t100) - (is (= (length (elephant:get-instances-by-class 'TopicC)) 28)) ;13 new topics - (is (= (length (elephant:get-instances-by-class 'AssociationC)) 5)) ;4 new associations - (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 2)) - (let ((core-tm - (loop for tm in (elephant:get-instances-by-class 'TopicMapC) - when (string= (uri (first (item-identifiers tm))) - "http://www.topicmaps.org/xtm/1.0/core.xtm") - return tm)) - (test-tm + (is (= (length (elephant:get-instances-by-class 'TopicC)) 13)) + (is (= (length (elephant:get-instances-by-class 'AssociationC)) 0)) + (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 1)) + (json-importer:json-to-elem *t64*) + (is (= (length (elephant:get-instances-by-class 'TopicC)) 15)) + (is (= (length (elephant:get-instances-by-class 'AssociationC)) 1)) + (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 2)) + (let ((core-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.topicmaps.org/xtm/1.0/core.xtm") + return tm)) + (test-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.isidor.us/unittests/testtm") + return tm))) + (is-true (and core-tm test-tm)) + (is (= (length (topics core-tm)) 13)) + (is (= (length (associations core-tm)) 0)) + (is (= (length (topics test-tm)) 2)) + (is (= (length (associations test-tm)) 1)))))) + + +(test test-json-importer-general-2 + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (elephant:open-store (xml-importer:get-store-spec dir)) + (xml-importer:init-isidorus) + (elephant:open-store (xml-importer:get-store-spec dir)) ; init-isiodurs closes the store + (json-importer:json-to-elem *t64*) + (let ((test-tm (loop for tm in (elephant:get-instances-by-class 'TopicMapC) when (string= (uri (first (item-identifiers tm))) "http://www.isidor.us/unittests/testtm") return tm))) - (is-true (and core-tm test-tm)) - (is (= (length (topics core-tm)) 13)) - (is (= (length (associations core-tm)) 0)) - (is (= (length (topics test-tm)) 17)) - (is (= (length (associations test-tm)) 5)) - (let ((topics (elephant:get-instances-by-class 'TopicC))) - (loop for topic in topics - do (let ((psi (uri (first (psis topic))))) - (cond - ((string= psi "http://psi.egovpt.org/types/semanticstandard") ;t3a - (is-false (names topic)) - (is-false (occurrences topic)) - (is-false (locators topic)) - (is (= (length (psis topic)) 1)) - (is (= (length (item-identifiers topic)) 1)) - (is (string= (uri (first (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t3a"))) - ((string= psi "http://www.networkedplanet.com/psi/npcl/meta-types/association-type") ;t7 - (is-false (names topic)) - (is-false (occurrences topic)) - (is-false (locators topic)) - (is (= (length (psis topic)) 1)) - (is (= (length (item-identifiers topic)) 1)) - (is (string= (uri (first (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t7"))) - ((string= psi "http://psi.egovpt.org/types/standardHasStatus") ;t51 - (is-false (names topic)) - (is-false (occurrences topic)) - (is-false (locators topic)) - (is (= (length (psis topic)) 1)) - (is (= (length (item-identifiers topic)) 1)) - (is (string= (uri (first (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t51"))) - ((string= psi "http://psi.egovpt.org/types/description") ;t53 - (is-false (names topic)) - (is-false (occurrences topic)) - (is-false (locators topic)) - (is (= (length (psis topic)) 1)) - (is (= (length (item-identifiers topic)) 1)) - (is (string= (uri (first (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t53"))) - ((string= psi "http://psi.egovpt.org/types/standardValidFromDate") ;t54 + (let ((main-topic + (loop for topic in (topics test-tm) + when (string= (uri (first (psis topic))) + "http://psi.egovpt.org/types/serviceUsesStandard") + return topic)) + (sub-topic + (loop for topic in (topics test-tm) + when (string= (uri (first (psis topic))) + "http://www.networkedplanet.com/psi/npcl/meta-types/association-type") + return topic))) + (is-true (and main-topic sub-topic)) + (let ((instanceOf-assoc + (first (associations test-tm)))) + (is (string= (uri (first (psis (instance-of instanceOf-assoc)))) + constants::*type-instance-psi*)) + (is-false (d:themes instanceOf-assoc)) + (is (string= (d:uri (first (d:item-identifiers (first (d:in-topicmaps instanceOf-assoc))))) + "http://www.isidor.us/unittests/testtm")) + (is-false (d:item-identifiers instanceOf-assoc)) + (let ((super-type-role + (loop for role in (roles instanceOf-assoc) + when (string= (uri (first (psis (instance-of role)))) + constants:*type-psi*) + return role)) + (sub-type-role + (loop for role in (roles instanceOf-assoc) + when (string= (uri (first (psis (instance-of role)))) + constants:*instance-psi*) + return role))) + (is-true (and super-type-role sub-type-role)) + (is (string= (uri (first (psis (player super-type-role)))) + "http://www.networkedplanet.com/psi/npcl/meta-types/association-type")) + (is (string= (uri (first (psis (player sub-type-role)))) + "http://psi.egovpt.org/types/serviceUsesStandard")))) + (is-true (= (length (item-identifiers main-topic)) 1)) + (is-true (= (length (item-identifiers sub-topic)) 1)) + (is-true (string= (uri (first (item-identifiers main-topic))) + "http://psi.egovpt.org/itemIdentifiers#t64")) + (is-true (string= (uri (first (item-identifiers sub-topic))) + "http://psi.egovpt.org/itemIdentifiers#t7")) + (is-true (= (length (names main-topic)) 1)) + (is-true (string= (charvalue (first (names main-topic))) + "service uses standard"))))))) + + +(test test-json-importer-general-3 + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (elephant:open-store (xml-importer:get-store-spec dir)) + (xml-importer:init-isidorus) + (elephant:open-store (xml-importer:get-store-spec dir)) ; init-isiodurs closes the store + (json-importer:json-to-elem *t64*) + (json-importer:json-to-elem *t100-3*) + (is (= (length (elephant:get-instances-by-class 'TopicC)) 28)) ;13 new topics + (is (= (length (elephant:get-instances-by-class 'AssociationC)) 5)) ;4 new associations + (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 2)) + (let ((core-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.topicmaps.org/xtm/1.0/core.xtm") + return tm)) + (test-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.isidor.us/unittests/testtm") + return tm))) + (is-true (and core-tm test-tm)) + (is (= (length (topics core-tm)) 13)) + (is (= (length (associations core-tm)) 0)) + (is (= (length (topics test-tm)) 17)) + (is (= (length (associations test-tm)) 5)))))) + + +(test test-json-importer-topics-1 + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (elephant:open-store (xml-importer:get-store-spec dir)) + (xml-importer:init-isidorus) + (elephant:open-store (xml-importer:get-store-spec dir)) ; init-isiodurs closes the store + (json-importer:json-to-elem *t64*) + (json-importer:json-to-elem *t100-3*) + (let ((topics (elephant:get-instances-by-class 'TopicC))) + (loop for topic in topics + do (let ((psi (uri (first (psis topic))))) + (cond + ((string= psi "http://psi.egovpt.org/types/semanticstandard") ;t3a + (is-false (names topic)) + (is-false (occurrences topic)) + (is-false (locators topic)) + (is (= (length (psis topic)) 1)) + (is (= (length (item-identifiers topic)) 1)) + (is (string= (uri (first (item-identifiers topic))) + "http://psi.egovpt.org/itemIdentifiers#t3a"))) + ((string= psi "http://www.networkedplanet.com/psi/npcl/meta-types/association-type") ;t7 + (is-false (names topic)) + (is-false (occurrences topic)) + (is-false (locators topic)) + (is (= (length (psis topic)) 1)) + (is (= (length (item-identifiers topic)) 1)) + (is (string= (uri (first (item-identifiers topic))) + "http://psi.egovpt.org/itemIdentifiers#t7"))) + ((string= psi "http://psi.egovpt.org/types/standardHasStatus") ;t51 + (is-false (names topic)) + (is-false (occurrences topic)) + (is-false (locators topic)) + (is (= (length (psis topic)) 1)) + (is (= (length (item-identifiers topic)) 1)) + (is (string= (uri (first (item-identifiers topic))) + "http://psi.egovpt.org/itemIdentifiers#t51"))) + ((string= psi "http://psi.egovpt.org/types/description") ;t53 + (is-false (names topic)) + (is-false (occurrences topic)) + (is-false (locators topic)) + (is (= (length (psis topic)) 1)) + (is (= (length (item-identifiers topic)) 1)) + (is (string= (uri (first (item-identifiers topic))) + "http://psi.egovpt.org/itemIdentifiers#t53"))) + ((string= psi "http://psi.egovpt.org/types/standardValidFromDate") ;t54 (is-false (names topic)) (is-false (occurrences topic)) (is-false (locators topic)) (is (= (length (psis topic)) 1)) (is (= (length (item-identifiers topic)) 1)) (is (string= (uri (first (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t54"))) - ((string= psi "http://psi.egovpt.org/types/links") ;t55 + "http://psi.egovpt.org/itemIdentifiers#t54")))))))))) + + +(test test-json-importer-topics-2 + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (elephant:open-store (xml-importer:get-store-spec dir)) + (xml-importer:init-isidorus) + (elephant:open-store (xml-importer:get-store-spec dir)) ; init-isiodurs closes the store + (json-importer:json-to-elem *t64*) + (json-importer:json-to-elem *t100-3*) + (let ((topics (elephant:get-instances-by-class 'TopicC))) + (loop for topic in topics + do (let ((psi (uri (first (psis topic))))) + (cond ((string= psi "http://psi.egovpt.org/types/links") ;t55 (is-false (names topic)) (is-false (occurrences topic)) (is-false (locators topic)) @@ -585,8 +724,22 @@ (is (= (length (psis topic)) 1)) (is (= (length (item-identifiers topic)) 1)) (is (string= (uri (first (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t64"))) - ((string= psi "http://psi.egovpt.org/standard/ISO+19115%3A+Geographic+Information+-+Metadat...") ;t100 + "http://psi.egovpt.org/itemIdentifiers#t64")))))))))) + + +(test test-json-importer-topics-3 + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (elephant:open-store (xml-importer:get-store-spec dir)) + (xml-importer:init-isidorus) + (elephant:open-store (xml-importer:get-store-spec dir)) ; init-isiodurs closes the store + (json-importer:json-to-elem *t64*) + (json-importer:json-to-elem *t100-3*) + (let ((topics (elephant:get-instances-by-class 'TopicC))) + (loop for topic in topics + do (let ((psi (uri (first (psis topic))))) + (cond ((string= psi "http://psi.egovpt.org/standard/ISO+19115%3A+Geographic+Information+-+Metadat...") ;t100 (is (= (length (psis topic)) 1)) (is (= (length (item-identifiers topic)) 1)) (is (string= (uri (first (item-identifiers topic))) @@ -660,8 +813,22 @@ (is (string= (datatype occ-4) "http://www.w3.org/2001/XMLSchema#anyURI")) (is (string= (charvalue occ-4) - "http://www.editeur.org/standards/ISO19115.pdf")))) - ((string= psi "http://psi.egovpt.org/subject/Semantic+Description") ;t201 + "http://www.editeur.org/standards/ISO19115.pdf"))))))))))) + + +(test test-json-importer-topics-4 + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (elephant:open-store (xml-importer:get-store-spec dir)) + (xml-importer:init-isidorus) + (elephant:open-store (xml-importer:get-store-spec dir)) ; init-isiodurs closes the store + (json-importer:json-to-elem *t64*) + (json-importer:json-to-elem *t100-3*) + (let ((topics (elephant:get-instances-by-class 'TopicC))) + (loop for topic in topics + do (let ((psi (uri (first (psis topic))))) + (cond ((string= psi "http://psi.egovpt.org/subject/Semantic+Description") ;t201 (is-false (names topic)) (is-false (occurrences topic)) (is-false (locators topic)) @@ -687,256 +854,299 @@ "http://psi.egovpt.org/service/Google+Maps") (string= (uri (second (psis topic))) "http://maps.google.com"))) - (is-false (item-identifiers topic))) - (t - (if (or (string= psi "http://www.topicmaps.org/xtm/1.0/core.xtm#sort") - (string= psi "http://www.topicmaps.org/xtm/1.0/core.xtm#display")) - (progn - (is (= (length (in-topicmaps topic)) 2)) - (is (or (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) - "http://www.topicmaps.org/xtm/1.0/core.xtm") - (string= (uri (first (item-identifiers (second (in-topicmaps topic))))) - "http://www.topicmaps.org/xtm/1.0/core.xtm"))) - (is (or (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) - "http://www.isidor.us/unittests/testtm") - (string= (uri (first (item-identifiers (second (in-topicmaps topic))))) - "http://www.isidor.us/unittests/testtm")))) - (progn - (is (= (length (in-topicmaps topic)) 1)) - (is (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) - "http://www.topicmaps.org/xtm/1.0/core.xtm"))))))))); - (let ((assoc-7 - (identified-construct - (elephant:get-instance-by-value 'ItemidentifierC 'uri - "http://psi.egovpt.org/itemIdentifiers#assoc_7")))) - (is (= (length (item-identifiers assoc-7)))) - (is (string= (uri (first (item-identifiers assoc-7))) - "http://psi.egovpt.org/itemIdentifiers#assoc_7")) - (is (= (length (roles assoc-7)) 2)) - (is (string= (uri (first (psis (instance-of assoc-7)))) - "http://psi.egovpt.org/types/serviceUsesStandard")) - (let ((role-1 (first (roles assoc-7))) - (role-2 (second (roles assoc-7)))) - (is (string= (uri (first (psis (instance-of role-1)))) - "http://psi.egovpt.org/types/ServiceRoleType")) - (is (or (string= (uri (first (psis (player role-1)))) - "http://psi.egovpt.org/service/Google+Maps") - (string= (uri (first (psis (player role-1)))) - "http://maps.google.com"))) - (is (string= (uri (first (psis (instance-of role-2)))) - "http://psi.egovpt.org/types/StandardRoleType")) - (is (string= (uri (first (psis (player role-2)))) - "http://psi.egovpt.org/standard/ISO+19115%3A+Geographic+Information+-+Metadat..."))))))))) + (is-false (item-identifiers topic)))))))))) +
- -(test test-json-importer-merge +(test test-json-importer-associations (let ((dir "data_base")) (with-fixture initialize-destination-db (dir) (elephant:open-store (xml-importer:get-store-spec dir)) (xml-importer:init-isidorus) (elephant:open-store (xml-importer:get-store-spec dir)) ; init-isiodurs closes the store - (let ((t100-1 "{"topic":{"id":"t970","itemIdentities":["http://www.egovpt.org/itemIdentifiers#t100%5C%22%5D,%5C%22subjectLocators%5C... Lisp","variants":[{"itemIdentities":["http://www.egovpt.org/itemIdentifiers#t100_n_v1%5C%22%5D,%5C%22scopes%5C%22:...") - (t100-2 "{"topic":{"id":"t945","itemIdentities":["http://www.egovpt.org/itemIdentifiers#t100%5C%22,%5C%22http://www.egovpt.org... Lisp","variants":[{"itemIdentities":["http://www.egovpt.org/itemIdentifiers#t100_n_v1%5C%22%5D,%5C%22scopes%5C%22:...")) - (is (= (length (elephant:get-instances-by-class 'TopicC)) 13)) - (is (= (length (elephant:get-instances-by-class 'AssociationC)) 0)) - (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 1)) - (json-importer:json-to-elem t100-1) - (is (= (length (elephant:get-instances-by-class 'TopicC)) 17)) - (is (= (length (elephant:get-instances-by-class 'AssociationC)) 1)) - (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 2)) - (let ((core-tm - (loop for tm in (elephant:get-instances-by-class 'TopicMapC) - when (string= (uri (first (item-identifiers tm))) - "http://www.topicmaps.org/xtm/1.0/core.xtm") - return tm)) - (test-tm - (loop for tm in (elephant:get-instances-by-class 'TopicMapC) - when (string= (uri (first (item-identifiers tm))) - "http://www.isidor.us/unittests/testtm") - return tm))) - (is-true (and core-tm test-tm))) - (json-importer:json-to-elem t100-2) - (is (= (length (elephant:get-instances-by-class 'TopicC)) 17)) - (is (= (length (elephant:get-instances-by-class 'AssociationC)) 1)) - (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 2)) - (let ((core-tm - (loop for tm in (elephant:get-instances-by-class 'TopicMapC) - when (string= (uri (first (item-identifiers tm))) - "http://www.topicmaps.org/xtm/1.0/core.xtm") - return tm)) - (test-tm - (loop for tm in (elephant:get-instances-by-class 'TopicMapC) - when (string= (uri (first (item-identifiers tm))) - "http://www.isidor.us/unittests/testtm") - return tm))) - (is-true (and core-tm test-tm))) - (let ((topics (elephant:get-instances-by-class 'TopicC))) - (loop for topic in topics - do (let ((psi (uri (first (psis topic))))) - (cond - ((string= psi "http://psi.egovpt.org/types/standard") ;t3 - (is (= (length (in-topicmaps topic)) 1)) - (is (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) - "http://www.isidor.us/unittests/testtm")) - (is-false (names topic)) - (is-false (occurrences topic)) - (is-false (locators topic)) - (is (= (length (psis topic)) 1)) - (is (= (length (item-identifiers topic)) 2)) - (is (or (string= (uri (first (item-identifiers topic))) - "http://www.egovpt.org/itemIdentifiers#t3") - (string= (uri (second (item-identifiers topic))) - "http://www.egovpt.org/itemIdentifiers#t3"))) - (is (or (string= (uri (first (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t3") - (string= (uri (second (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t3")))) - ((string= psi "http://psi.egovpt.org/types/long-name") ;t50a - (is (= (length (in-topicmaps topic)) 1)) - (is (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) - "http://www.isidor.us/unittests/testtm")) - (is-false (names topic)) - (is-false (occurrences topic)) - (is-false (locators topic)) - (is (= (length (psis topic)) 1)) - (is (= (length (item-identifiers topic)) 1)) - (is (string= (uri (first (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t50a"))) - ((string= psi "http://psi.egovpt.org/types/links") ;t50 - (is (= (length (in-topicmaps topic)) 1)) - (is (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) - "http://www.isidor.us/unittests/testtm")) - (is-false (names topic)) - (is-false (occurrences topic)) - (is-false (locators topic)) - (is (= (length (psis topic)) 1)) - (is (= (length (item-identifiers topic)) 2)) - (is (or (string= (uri (first (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t55") - (string= (uri (second (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t55"))) - (is (or (string= (uri (first (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t55_1") - (string= (uri (second (item-identifiers topic))) - "http://psi.egovpt.org/itemIdentifiers#t55_1")))) - ((string= psi "http://psi.egovpt.org/standard/Common+Lisp") ;t100 - (is (= (length (in-topicmaps topic)) 1)) - (is (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) - "http://www.isidor.us/unittests/testtm")) - (is (= (length (psis topic)) 1)) - (is (= (length (item-identifiers topic)) 2)) - (is (or (string= (uri (first (item-identifiers topic))) - "http://www.egovpt.org/itemIdentifiers#t100") - (string= (uri (second (item-identifiers topic))) - "http://www.egovpt.org/itemIdentifiers#t100"))) - (is (or (string= (uri (first (item-identifiers topic))) - "http://www.egovpt.org/itemIdentifiers#t100_new") - (string= (uri (second (item-identifiers topic))) - "http://www.egovpt.org/itemIdentifiers#t100_new"))) - (is (= (length (names topic)))) - (let ((name (first (names topic)))) - (is (= (length (item-identifiers name)) 2)) - (is (or (string= (uri (first (item-identifiers name))) - "http://www.egovpt.org/itemIdentifiers#t100_n1") - (string= (uri (second (item-identifiers name))) - "http://www.egovpt.org/itemIdentifiers#t100_n1"))) - (is (or (string= (uri (first (item-identifiers name))) - "http://www.egovpt.org/itemIdentifiers#t100_n1a") - (string= (uri (second (item-identifiers name))) - "http://www.egovpt.org/itemIdentifiers#t100_n1a"))) - (is (string= (charvalue name) - "Common Lisp")) - (is (= (length (variants name)) 2)) - (let ((variant-1 (first (variants name))) - (variant-2 (second (variants name)))) - (is (= (length (item-identifiers variant-1)) 1)) - (is (string= (uri (first (item-identifiers variant-1))) - "http://www.egovpt.org/itemIdentifiers#t100_n_v1")) - (is (= (length (item-identifiers variant-2)) 1)) - (is (string= (uri (first (item-identifiers variant-2))) - "http://www.egovpt.org/itemIdentifiers#t100_n_v2")) - (is (= (length (themes variant-1)) 2)) - (is (or (string= (uri (first (psis (first (themes variant-1))))) - "http://www.topicmaps.org/xtm/1.0/core.xtm#sort") - (string= (uri (first (psis (second (themes variant-1))))) - "http://www.topicmaps.org/xtm/1.0/core.xtm#sort"))) - (is (or (string= (uri (first (psis (first (themes variant-1))))) - "http://psi.egovpt.org/types/long-name") - (string= (uri (first (psis (second (themes variant-1))))) - "http://psi.egovpt.org/types/long-name"))) - (is (= (length (themes variant-2)) 1)) - (is (string= (uri (first (psis (first (themes variant-2))))) - "http://www.topicmaps.org/xtm/1.0/core.xtm#display")) - (is (string= (datatype variant-1) - "http://www.w3.org/2001/XMLSchema#string")) - (is (string= (charvalue variant-1) - "Common-Lisp")) - (is (string= (datatype variant-2) - "http://www.w3.org/2001/XMLSchema#string")) - (is (string= (charvalue variant-2) - "CL")))) - (is (= (length (occurrences topic)) 2)) - (let ((occ-1 (first (occurrences topic))) - (occ-2 (second (occurrences topic)))) - (is (= (length (item-identifiers occ-1)) 1)) - (is (string= (uri (first (item-identifiers occ-1))) - "http://www.egovpt.org/itemIdentifiers#t100_o1")) - (is (= (length (item-identifiers occ-2)) 1)) - (is (string= (uri (first (item-identifiers occ-2))) - "http://www.egovpt.org/itemIdentifiers#t100_o2")) - (is (string= (uri (first (psis (instance-of occ-1)))) - "http://psi.egovpt.org/types/links")) - (is (string= (uri (first (psis (instance-of occ-2)))) - "http://psi.egovpt.org/types/links")) - (is (string= (datatype occ-1) - "http://www.w3.org/2001/XMLSchema#anyURI")) - (is (string= (charvalue occ-1) - "http://www.common-lisp.net/")) - (is (string= (datatype occ-2) - "http://www.w3.org/2001/XMLSchema#anyURI")) - (is (string= (charvalue occ-2) - "http://www.cliki.net/")))) - (t - (if (or (string= psi "http://www.topicmaps.org/xtm/1.0/core.xtm#sort") - (string= psi "http://www.topicmaps.org/xtm/1.0/core.xtm#display")) - (progn - (is (= (length (in-topicmaps topic)) 2)) - (is (or (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) - "http://www.topicmaps.org/xtm/1.0/core.xtm") - (string= (uri (first (item-identifiers (second (in-topicmaps topic))))) - "http://www.topicmaps.org/xtm/1.0/core.xtm"))) - (is (or (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) - "http://www.isidor.us/unittests/testtm") - (string= (uri (first (item-identifiers (second (in-topicmaps topic))))) - "http://www.isidor.us/unittests/testtm")))) - (progn - (is (= (length (in-topicmaps topic)) 1)) - (is (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) - "http://www.topicmaps.org/xtm/1.0/core.xtm"))))))))) - (let ((instanceOf-assoc - (first (elephant:get-instances-by-class 'AssociationC)))) - (is (string= (uri (first (psis (instance-of instanceOf-assoc)))) - constants::*type-instance-psi*)) - (is-false (d:themes instanceOf-assoc)) - (is (string= (d:uri (first (d:item-identifiers (first (d:in-topicmaps instanceOf-assoc))))) - "http://www.isidor.us/unittests/testtm")) - (is-false (d:item-identifiers instanceOf-assoc)) - (let ((super-type-role - (loop for role in (roles instanceOf-assoc) - when (string= (uri (first (psis (instance-of role)))) - constants:*type-psi*) - return role)) - (sub-type-role - (loop for role in (roles instanceOf-assoc) - when (string= (uri (first (psis (instance-of role)))) - constants:*instance-psi*) - return role))) - (is-true (and super-type-role sub-type-role)) - (is (string= (uri (first (psis (player super-type-role)))) - "http://psi.egovpt.org/types/standard")) - (is (string= (uri (first (psis (player sub-type-role)))) - "http://psi.egovpt.org/standard/Common+Lisp")))))))) + (json-importer:json-to-elem *t64*) + (json-importer:json-to-elem *t100-3*) + (let ((assoc-7 + (identified-construct + (elephant:get-instance-by-value 'ItemidentifierC 'uri + "http://psi.egovpt.org/itemIdentifiers#assoc_7")))) + (is (= (length (item-identifiers assoc-7)))) + (is (string= (uri (first (item-identifiers assoc-7))) + "http://psi.egovpt.org/itemIdentifiers#assoc_7")) + (is (= (length (roles assoc-7)) 2)) + (is (string= (uri (first (psis (instance-of assoc-7)))) + "http://psi.egovpt.org/types/serviceUsesStandard")) + (let ((role-1 (first (roles assoc-7))) + (role-2 (second (roles assoc-7)))) + (is (string= (uri (first (psis (instance-of role-1)))) + "http://psi.egovpt.org/types/ServiceRoleType")) + (is (or (string= (uri (first (psis (player role-1)))) + "http://psi.egovpt.org/service/Google+Maps") + (string= (uri (first (psis (player role-1)))) + "http://maps.google.com"))) + (is (string= (uri (first (psis (instance-of role-2)))) + "http://psi.egovpt.org/types/StandardRoleType")) + (is (string= (uri (first (psis (player role-2)))) + "http://psi.egovpt.org/standard/ISO+19115%3A+Geographic+Information+-+Metadat..."))))))) + + +(test test-json-importer-merge-1 + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (elephant:open-store (xml-importer:get-store-spec dir)) + (xml-importer:init-isidorus) + (elephant:open-store (xml-importer:get-store-spec dir)) ; init-isidorus closes the store + (is (= (length (elephant:get-instances-by-class 'TopicC)) 13)) + (is (= (length (elephant:get-instances-by-class 'AssociationC)) 0)) + (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 1)) + (json-importer:json-to-elem *t100-1*) + (is (= (length (elephant:get-instances-by-class 'TopicC)) 17)) + (is (= (length (elephant:get-instances-by-class 'AssociationC)) 1)) + (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 2)) + (let ((core-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.topicmaps.org/xtm/1.0/core.xtm") + return tm)) + (test-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.isidor.us/unittests/testtm") + return tm))) + (is-true (and core-tm test-tm))) + (json-importer:json-to-elem *t100-2*) + (is (= (length (elephant:get-instances-by-class 'TopicC)) 17)) + (is (= (length (elephant:get-instances-by-class 'AssociationC)) 1)) + (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 2)) + (let ((core-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.topicmaps.org/xtm/1.0/core.xtm") + return tm)) + (test-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.isidor.us/unittests/testtm") + return tm))) + (is-true (and core-tm test-tm))) + (let ((topics (elephant:get-instances-by-class 'TopicC))) + (loop for topic in topics + do (let ((psi (uri (first (psis topic))))) + (cond + ((string= psi "http://psi.egovpt.org/types/standard") ;t3 + (is (= (length (in-topicmaps topic)) 1)) + (is (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) + "http://www.isidor.us/unittests/testtm")) + (is-false (names topic)) + (is-false (occurrences topic)) + (is-false (locators topic)) + (is (= (length (psis topic)) 1)) + (is (= (length (item-identifiers topic)) 2)) + (is (or (string= (uri (first (item-identifiers topic))) + "http://www.egovpt.org/itemIdentifiers#t3") + (string= (uri (second (item-identifiers topic))) + "http://www.egovpt.org/itemIdentifiers#t3"))) + (is (or (string= (uri (first (item-identifiers topic))) + "http://psi.egovpt.org/itemIdentifiers#t3") + (string= (uri (second (item-identifiers topic))) + "http://psi.egovpt.org/itemIdentifiers#t3")))) + ((string= psi "http://psi.egovpt.org/types/long-name") ;t50a + (is (= (length (in-topicmaps topic)) 1)) + (is (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) + "http://www.isidor.us/unittests/testtm")) + (is-false (names topic)) + (is-false (occurrences topic)) + (is-false (locators topic)) + (is (= (length (psis topic)) 1)) + (is (= (length (item-identifiers topic)) 1)) + (is (string= (uri (first (item-identifiers topic))) + "http://psi.egovpt.org/itemIdentifiers#t50a"))) + ((string= psi "http://psi.egovpt.org/types/links") ;t50 + (is (= (length (in-topicmaps topic)) 1)) + (is (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) + "http://www.isidor.us/unittests/testtm")) + (is-false (names topic)) + (is-false (occurrences topic)) + (is-false (locators topic)) + (is (= (length (psis topic)) 1)) + (is (= (length (item-identifiers topic)) 2)) + (is (or (string= (uri (first (item-identifiers topic))) + "http://psi.egovpt.org/itemIdentifiers#t55") + (string= (uri (second (item-identifiers topic))) + "http://psi.egovpt.org/itemIdentifiers#t55"))) + (is (or (string= (uri (first (item-identifiers topic))) + "http://psi.egovpt.org/itemIdentifiers#t55_1") + (string= (uri (second (item-identifiers topic))) + "http://psi.egovpt.org/itemIdentifiers#t55_1"))))))))))) + + +(test test-json-importer-merge-2 + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (elephant:open-store (xml-importer:get-store-spec dir)) + (xml-importer:init-isidorus) + (elephant:open-store (xml-importer:get-store-spec dir)) ; init-isidorus closes the store + (json-importer:json-to-elem *t100-1*) + (let ((core-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.topicmaps.org/xtm/1.0/core.xtm") + return tm)) + (test-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.isidor.us/unittests/testtm") + return tm))) + (is-true (and core-tm test-tm))) + (json-importer:json-to-elem *t100-2*) + (let ((topics (elephant:get-instances-by-class 'TopicC))) + (loop for topic in topics + do (let ((psi (uri (first (psis topic))))) + (cond + ((string= psi "http://psi.egovpt.org/types/standard") t) ;was already checked + ((string= psi "http://psi.egovpt.org/types/long-name") t) ;was already checked + ((string= psi "http://psi.egovpt.org/types/links") t) ;was already checked + ((string= psi "http://psi.egovpt.org/standard/Common+Lisp") ;t100 + (is (= (length (in-topicmaps topic)) 1)) + (is (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) + "http://www.isidor.us/unittests/testtm")) + (is (= (length (psis topic)) 1)) + (is (= (length (item-identifiers topic)) 2)) + (is (or (string= (uri (first (item-identifiers topic))) + "http://www.egovpt.org/itemIdentifiers#t100") + (string= (uri (second (item-identifiers topic))) + "http://www.egovpt.org/itemIdentifiers#t100"))) + (is (or (string= (uri (first (item-identifiers topic))) + "http://www.egovpt.org/itemIdentifiers#t100_new") + (string= (uri (second (item-identifiers topic))) + "http://www.egovpt.org/itemIdentifiers#t100_new"))) + (is (= (length (names topic)))) + (let ((name (first (names topic)))) + (is (= (length (item-identifiers name)) 2)) + (is (or (string= (uri (first (item-identifiers name))) + "http://www.egovpt.org/itemIdentifiers#t100_n1") + (string= (uri (second (item-identifiers name))) + "http://www.egovpt.org/itemIdentifiers#t100_n1"))) + (is (or (string= (uri (first (item-identifiers name))) + "http://www.egovpt.org/itemIdentifiers#t100_n1a") + (string= (uri (second (item-identifiers name))) + "http://www.egovpt.org/itemIdentifiers#t100_n1a"))) + (is (string= (charvalue name) + "Common Lisp")) + (is (= (length (variants name)) 2)) + (let ((variant-1 (first (variants name))) + (variant-2 (second (variants name)))) + (is (= (length (item-identifiers variant-1)) 1)) + (is (string= (uri (first (item-identifiers variant-1))) + "http://www.egovpt.org/itemIdentifiers#t100_n_v1")) + (is (= (length (item-identifiers variant-2)) 1)) + (is (string= (uri (first (item-identifiers variant-2))) + "http://www.egovpt.org/itemIdentifiers#t100_n_v2")) + (is (= (length (themes variant-1)) 2)) + (is (or (string= (uri (first (psis (first (themes variant-1))))) + "http://www.topicmaps.org/xtm/1.0/core.xtm#sort") + (string= (uri (first (psis (second (themes variant-1))))) + "http://www.topicmaps.org/xtm/1.0/core.xtm#sort"))) + (is (or (string= (uri (first (psis (first (themes variant-1))))) + "http://psi.egovpt.org/types/long-name") + (string= (uri (first (psis (second (themes variant-1))))) + "http://psi.egovpt.org/types/long-name"))) + (is (= (length (themes variant-2)) 1)) + (is (string= (uri (first (psis (first (themes variant-2))))) + "http://www.topicmaps.org/xtm/1.0/core.xtm#display")) + (is (string= (datatype variant-1) + "http://www.w3.org/2001/XMLSchema#string")) + (is (string= (charvalue variant-1) + "Common-Lisp")) + (is (string= (datatype variant-2) + "http://www.w3.org/2001/XMLSchema#string")) + (is (string= (charvalue variant-2) + "CL")))) + (is (= (length (occurrences topic)) 2)) + (let ((occ-1 (first (occurrences topic))) + (occ-2 (second (occurrences topic)))) + (is (= (length (item-identifiers occ-1)) 1)) + (is (string= (uri (first (item-identifiers occ-1))) + "http://www.egovpt.org/itemIdentifiers#t100_o1")) + (is (= (length (item-identifiers occ-2)) 1)) + (is (string= (uri (first (item-identifiers occ-2))) + "http://www.egovpt.org/itemIdentifiers#t100_o2")) + (is (string= (uri (first (psis (instance-of occ-1)))) + "http://psi.egovpt.org/types/links")) + (is (string= (uri (first (psis (instance-of occ-2)))) + "http://psi.egovpt.org/types/links")) + (is (string= (datatype occ-1) + "http://www.w3.org/2001/XMLSchema#anyURI")) + (is (string= (charvalue occ-1) + "http://www.common-lisp.net/")) + (is (string= (datatype occ-2) + "http://www.w3.org/2001/XMLSchema#anyURI")) + (is (string= (charvalue occ-2) + "http://www.cliki.net/")))) + (t + (if (or (string= psi "http://www.topicmaps.org/xtm/1.0/core.xtm#sort") + (string= psi "http://www.topicmaps.org/xtm/1.0/core.xtm#display")) + (progn + (is (= (length (in-topicmaps topic)) 2)) + (is (or (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) + "http://www.topicmaps.org/xtm/1.0/core.xtm") + (string= (uri (first (item-identifiers (second (in-topicmaps topic))))) + "http://www.topicmaps.org/xtm/1.0/core.xtm"))) + (is (or (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) + "http://www.isidor.us/unittests/testtm") + (string= (uri (first (item-identifiers (second (in-topicmaps topic))))) + "http://www.isidor.us/unittests/testtm")))) + (progn + (is (= (length (in-topicmaps topic)) 1)) + (is (string= (uri (first (item-identifiers (first (in-topicmaps topic))))) + "http://www.topicmaps.org/xtm/1.0/core.xtm")))))))))))) + + +(test test-json-importer-merge-3 + (let + ((dir "data_base")) + (with-fixture initialize-destination-db (dir) + (elephant:open-store (xml-importer:get-store-spec dir)) + (xml-importer:init-isidorus) + (elephant:open-store (xml-importer:get-store-spec dir)) ; init-isidorus closes the store + (json-importer:json-to-elem *t100-1*) + (let ((core-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.topicmaps.org/xtm/1.0/core.xtm") + return tm)) + (test-tm + (loop for tm in (elephant:get-instances-by-class 'TopicMapC) + when (string= (uri (first (item-identifiers tm))) + "http://www.isidor.us/unittests/testtm") + return tm))) + (is-true (and core-tm test-tm))) + (json-importer:json-to-elem *t100-2*) + (let ((instanceOf-assoc + (first (elephant:get-instances-by-class 'AssociationC)))) + (is (string= (uri (first (psis (instance-of instanceOf-assoc)))) + constants::*type-instance-psi*)) + (is-false (d:themes instanceOf-assoc)) + (is (string= (d:uri (first (d:item-identifiers (first (d:in-topicmaps instanceOf-assoc))))) + "http://www.isidor.us/unittests/testtm")) + (is-false (d:item-identifiers instanceOf-assoc)) + (let ((super-type-role + (loop for role in (roles instanceOf-assoc) + when (string= (uri (first (psis (instance-of role)))) + constants:*type-psi*) + return role)) + (sub-type-role + (loop for role in (roles instanceOf-assoc) + when (string= (uri (first (psis (instance-of role)))) + constants:*instance-psi*) + return role))) + (is-true (and super-type-role sub-type-role)) + (is (string= (uri (first (psis (player super-type-role)))) + "http://psi.egovpt.org/types/standard")) + (is (string= (uri (first (psis (player sub-type-role)))) + "http://psi.egovpt.org/standard/Common+Lisp")))))))
(test test-get-all-topic-psis @@ -1054,10 +1264,22 @@
(defun run-json-tests() (tear-down-test-db) - ;(run! 'json-tests)) - (it.bese.fiveam:run! 'test-get-fragment-values-from-json-list) - ;(it.bese.fiveam:run! 'test-json-importer) ;currently this unittest causes some problems - (it.bese.fiveam:run! 'test-json-importer-merge) + (it.bese.fiveam:run! 'test-get-fragment-values-from-json-list-general) + (it.bese.fiveam:run! 'test-get-fragment-values-from-json-list-names) + (it.bese.fiveam:run! 'test-get-fragment-values-from-json-list-occurrences) + (it.bese.fiveam:run! 'test-get-fragment-values-from-json-list-topicStubs) + (it.bese.fiveam:run! 'test-get-fragment-values-from-json-list-associations) + (it.bese.fiveam:run! 'test-json-importer-general-1) + (it.bese.fiveam:run! 'test-json-importer-general-2) + (it.bese.fiveam:run! 'test-json-importer-general-3) + (it.bese.fiveam:run! 'test-json-importer-topics-1) + (it.bese.fiveam:run! 'test-json-importer-topics-2) + (it.bese.fiveam:run! 'test-json-importer-topics-3) + (it.bese.fiveam:run! 'test-json-importer-topics-4) + (it.bese.fiveam:run! 'test-json-importer-associations) + (it.bese.fiveam:run! 'test-json-importer-merge-1) + (it.bese.fiveam:run! 'test-json-importer-merge-2) + (it.bese.fiveam:run! 'test-json-importer-merge-3) (it.bese.fiveam:run! 'test-to-json-string-associations) (it.bese.fiveam:run! 'test-to-json-string-fragments) (it.bese.fiveam:run! 'test-to-json-string-topics)