[isidorus-cvs] r137 - trunk/src/unit_tests
Lukas Giessmann
lgiessmann at common-lisp.net
Tue Sep 8 10:54:19 UTC 2009
Author: lgiessmann
Date: Tue Sep 8 06:54:19 2009
New Revision: 137
Log:
rdf-importer: added some unit-tests
Modified:
trunk/src/unit_tests/full_mapping.rdf
trunk/src/unit_tests/rdf_importer_test.lisp
trunk/src/unit_tests/unittests-constants.lisp
Modified: trunk/src/unit_tests/full_mapping.rdf
==============================================================================
--- trunk/src/unit_tests/full_mapping.rdf (original)
+++ trunk/src/unit_tests/full_mapping.rdf Tue Sep 8 06:54:19 2009
@@ -31,7 +31,7 @@
</rdf:Description>
- <rdf:Description rdf:nodeID="id_285">
+ <rdf:Description rdf:nodeID="id_283">
<isi:variant rdf:parseType="Resource">
<rdf:type rdf:resource="http://isidorus/tm2rdf_mapping/types/Variant"/>
<isi:scope rdf:resource="http://simpsons/display"/>
@@ -121,13 +121,13 @@
<isi:itemIdentity rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://simpsons/role-wife/ii</isi:itemIdentity>
</rdf:Description>
- <rdf:Description>
+ <rdf:Description rdf:nodeID="id_291">
<rdf:type rdf:resource="http://isidorus/tm2rdf_mapping/types/Association"/>
<isi:itemIdentity rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://simpsons/married/ii-1</isi:itemIdentity>
<isi:itemIdentity rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://simpsons/married/ii-2</isi:itemIdentity>
<isi:associationtype rdf:resource="http://simpsons/married"/>
<isi:role>
- <rdf:Description>
+ <rdf:Description rdf:nodeID="id_295">
<isi:itemIdentity rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://simpsons/role-wife/ii</isi:itemIdentity>
<rdf:type rdf:resource="http://isidorus/tm2rdf_mapping/types/Role"/>
<isi:roletype rdf:resource="http://simpsons/wife"/>
@@ -135,7 +135,7 @@
</rdf:Description>
</isi:role>
<isi:role>
- <rdf:Description>
+ <rdf:Description rdf:nodeID="id_292">
<rdf:type rdf:resource="http://isidorus/tm2rdf_mapping/types/Role"/>
<isi:roletype rdf:resource="http://simpsons/husband"/>
<isi:player rdf:resource="http://simpsons/homer"/>
Modified: trunk/src/unit_tests/rdf_importer_test.lisp
==============================================================================
--- trunk/src/unit_tests/rdf_importer_test.lisp (original)
+++ trunk/src/unit_tests/rdf_importer_test.lisp Tue Sep 8 06:54:19 2009
@@ -66,7 +66,10 @@
:test-poems-rdf-topics
:test-empty-collection
:test-collection
- :test-xml-base))
+ :test-xml-base
+ :test-full-mapping-marge
+ :test-full-mapping-homer
+ :test-full-mapping-association))
(declaim (optimize (debug 3) (speed 0) (safety 3) (space 0) (compilation-speed 0)))
@@ -79,6 +82,14 @@
(in-suite rdf-importer-test)
+(defun empty-p (top)
+ (declare (TopicC top))
+ (and (not (d:item-identifiers top))
+ (not (d:locators top))
+ (not (d:names top))
+ (not (d:occurrences top))))
+
+
(test test-get-literals-of-node
"Tests the helper function get-literals-of-node."
(let ((doc-1
@@ -3060,6 +3071,306 @@
"/test")
"http://base-3/test")))))))
+
+(test test-full-mapping-marge
+ "Tests the entire importer module."
+ (let ((dir "data_base")
+ (rdf-file unittests-constants:*full_mapping.rdf*)
+ (tm-id "http://full-mapping/")
+ (document-id "http://full_mapping.rdf"))
+ (when elephant:*store-controller*
+ (elephant:close-store))
+ (fixtures::clean-out-db dir)
+ (rdf-importer:rdf-importer rdf-file dir
+ :tm-id tm-id
+ :document-id document-id)
+ (elephant:open-store (xml-importer:get-store-spec dir))
+ (is (= (length (elephant:get-instances-by-class 'd:TopicC)) 15))
+ (is (= (length (elephant:get-instances-by-class 'd:AssociationC)) 1))
+ (is (= (length (elephant:get-instances-by-class 'd:NameC)) 4))
+ (is (= (length (elephant:get-instances-by-class 'd:RoleC)) 2))
+ (is (= (length (elephant:get-instances-by-class 'd:OccurrenceC)) 2))
+ (is (= (length (elephant:get-instances-by-class 'd:VariantC)) 2))
+ (setf d:*current-xtm* document-id)
+ (let ((firstName (get-item-by-id "http://simpsons/firstName"))
+ (lastName (get-item-by-id "http://simpsons/lastName"))
+ (display (get-item-by-id "http://simpsons/display"))
+ (profession (get-item-by-id "http://simpsons/profession"))
+ (married (get-item-by-id "http://simpsons/married"))
+ (husband (get-item-by-id "http://simpsons/husband"))
+ (wife (get-item-by-id "http://simpsons/wife"))
+ (en (get-item-by-id "http://simpsons/en"))
+ (type (get-item-by-psi *type-psi*))
+ (instance (get-item-by-psi *instance-psi*))
+ (type-instance (get-item-by-psi *type-instance-psi*))
+ (isi-object (get-item-by-psi *rdf2tm-object*))
+ (isi-subject (get-item-by-psi *rdf2tm-subject*))
+ (marge (get-item-by-id "http://simpsons/marge"))
+ (homer (get-item-by-id "http://simpsons/homer"))
+ (role-husband
+ (find-if #'(lambda(x)
+ (let ((iis (d:item-identifiers x)))
+ (when (= (length iis) 1)
+ (string= (d:uri (first iis))
+ "http://simpsons/role-husband/ii"))))
+ (elephant:get-instances-by-class 'd:RoleC)))
+ (role-wife
+ (find-if #'(lambda(x)
+ (let ((iis (d:item-identifiers x)))
+ (when (= (length iis) 1)
+ (string= (d:uri (first iis))
+ "http://simpsons/role-wife/ii"))))
+ (elephant:get-instances-by-class 'd:RoleC))))
+ (is-true firstName)
+ (is-true (empty-p firstName))
+ (is-true lastName)
+ (is-true (empty-p lastName))
+ (is-true display)
+ (is-true (empty-p display))
+ (is-true profession)
+ (is-true (empty-p profession))
+ (is-true married)
+ (is-true (empty-p married))
+ (is-true husband)
+ (is-true (empty-p husband))
+ (is-true wife)
+ (is-true (empty-p wife))
+ (is-true en)
+ (is-true (empty-p en))
+ (is-true type)
+ (is-true (empty-p type))
+ (is-true instance)
+ (is-true (empty-p instance))
+ (is-true type-instance)
+ (is-true (empty-p type-instance))
+ (is-true isi-object)
+ (is-true (empty-p isi-object))
+ (is-true isi-subject)
+ (is-true (empty-p isi-subject))
+ (is-true role-husband)
+ (is-true role-wife)
+ (is-true homer)
+ (is (= (length (d:psis marge)) 2))
+ (is-true (find-if #'(lambda(x)
+ (string= (d:uri x) "http://simpsons/marjorie"))
+ (d:psis marge)))
+ (is (= (length (d:names marge)) 2))
+ (let ((marge-fn (find-if #'(lambda(x)
+ (eql (instance-of x) firstName))
+ (d:names marge)))
+ (marge-ln (find-if #'(lambda(x)
+ (eql (instance-of x) lastName))
+ (d:names marge)))
+ (marge-occ (find-if #'(lambda(x)
+ (eql (instance-of x) profession))
+ (d:occurrences marge))))
+ (is-true marge-fn)
+ (is-true marge-ln)
+ (is (string= (d:charvalue marge-fn) "Marjorie"))
+ (is (string= (d:charvalue marge-ln) "Simpson"))
+ (is (= (length (d:variants marge-fn)) 1))
+ (is (= (length (d:themes (first (d:variants marge-fn)))) 1))
+ (is (eql (first (d:themes (first (d:variants marge-fn)))) display))
+ (is (string= (d:charvalue (first (d:variants marge-fn))) "Marge"))
+ (is (string= (d:datatype (first (d:variants marge-fn))) *xml-string*))
+ (is-true marge-occ)
+ (is (string= (d:charvalue marge-occ) "Housewife"))
+ (is (string= (d:datatype marge-occ) *xml-string*))
+ (is (= (length (d:themes marge-occ)) 0))
+ (is (= (length (d:psis marge)) 2))))))
+
+
+(test test-full-mapping-homer
+ "Tests the entire importer module."
+ (let ((dir "data_base")
+ (rdf-file unittests-constants:*full_mapping.rdf*)
+ (tm-id "http://full-mapping/")
+ (document-id "http://full_mapping.rdf"))
+ (when elephant:*store-controller*
+ (elephant:close-store))
+ (fixtures::clean-out-db dir)
+ (rdf-importer:rdf-importer rdf-file dir
+ :tm-id tm-id
+ :document-id document-id)
+ (elephant:open-store (xml-importer:get-store-spec dir))
+ (is (= (length (elephant:get-instances-by-class 'd:TopicC)) 15))
+ (is (= (length (elephant:get-instances-by-class 'd:AssociationC)) 1))
+ (is (= (length (elephant:get-instances-by-class 'd:NameC)) 4))
+ (is (= (length (elephant:get-instances-by-class 'd:RoleC)) 2))
+ (is (= (length (elephant:get-instances-by-class 'd:OccurrenceC)) 2))
+ (is (= (length (elephant:get-instances-by-class 'd:VariantC)) 2))
+ (setf d:*current-xtm* document-id)
+ (let ((firstName (get-item-by-id "http://simpsons/firstName"))
+ (lastName (get-item-by-id "http://simpsons/lastName"))
+ (display (get-item-by-id "http://simpsons/display"))
+ (profession (get-item-by-id "http://simpsons/profession"))
+ (married (get-item-by-id "http://simpsons/married"))
+ (husband (get-item-by-id "http://simpsons/husband"))
+ (wife (get-item-by-id "http://simpsons/wife"))
+ (en (get-item-by-id "http://simpsons/en"))
+ (type (get-item-by-psi *type-psi*))
+ (instance (get-item-by-psi *instance-psi*))
+ (type-instance (get-item-by-psi *type-instance-psi*))
+ (isi-object (get-item-by-psi *rdf2tm-object*))
+ (isi-subject (get-item-by-psi *rdf2tm-subject*))
+ (marge (get-item-by-id "http://simpsons/marge"))
+ (homer (get-item-by-id "http://simpsons/homer"))
+ (role-husband
+ (find-if #'(lambda(x)
+ (let ((iis (d:item-identifiers x)))
+ (when (= (length iis) 1)
+ (string= (d:uri (first iis))
+ "http://simpsons/role-husband/ii"))))
+ (elephant:get-instances-by-class 'd:RoleC)))
+ (role-wife
+ (find-if #'(lambda(x)
+ (let ((iis (d:item-identifiers x)))
+ (when (= (length iis) 1)
+ (string= (d:uri (first iis))
+ "http://simpsons/role-wife/ii"))))
+ (elephant:get-instances-by-class 'd:RoleC))))
+ (is-true firstName)
+ (is-true (empty-p firstName))
+ (is-true lastName)
+ (is-true (empty-p lastName))
+ (is-true display)
+ (is-true (empty-p display))
+ (is-true profession)
+ (is-true (empty-p profession))
+ (is-true married)
+ (is-true (empty-p married))
+ (is-true husband)
+ (is-true (empty-p husband))
+ (is-true wife)
+ (is-true (empty-p wife))
+ (is-true en)
+ (is-true (empty-p en))
+ (is-true type)
+ (is-true (empty-p type))
+ (is-true instance)
+ (is-true (empty-p instance))
+ (is-true type-instance)
+ (is-true (empty-p type-instance))
+ (is-true isi-object)
+ (is-true (empty-p isi-object))
+ (is-true isi-subject)
+ (is-true (empty-p isi-subject))
+ (is-true role-husband)
+ (is-true role-wife)
+ (is-true marge)
+ (is-true (find-if #'(lambda(x)
+ (string= (d:uri x) "http://simpsons/homer_simpson"))
+ (d:psis homer)))
+ (is (= (length (d:locators homer)) 1))
+ (is-true (find-if #'(lambda(x)
+ (string= (d:uri x) "http://some.where/resource"))
+ (d:locators homer)))
+ (is (= (length (d:item-identifiers homer)) 1))
+ (is-true (find-if #'(lambda(x)
+ (string= (d:uri x) "http://simpsons/ii/homer"))
+ (d:item-identifiers homer)))
+ (is (= (length (d:names homer)) 2))
+ (let ((homer-fn (find-if #'(lambda(x)
+ (eql (instance-of x) firstName))
+ (d:names homer)))
+ (homer-ln (find-if #'(lambda(x)
+ (eql (instance-of x) lastName))
+ (d:names homer)))
+ (homer-occ (find-if #'(lambda(x)
+ (eql (instance-of x) profession))
+ (d:occurrences homer))))
+ (is-true homer-fn)
+ (is-true homer-ln)
+ (is (string= (d:charvalue homer-fn) "Homer J."))
+ (is (string= (d:charvalue homer-ln) "Simpson"))
+ (is (= (length (d:variants homer-fn)) 1))
+ (is (= (length (d:themes (first (d:variants homer-fn)))) 1))
+ (is (eql (first (d:themes (first (d:variants homer-fn)))) display))
+ (is (string= (d:charvalue (first (d:variants homer-fn))) "Homer"))
+ (is (string= (d:datatype (first (d:variants homer-fn))) *xml-string*))
+ (is-true homer-occ)
+ (is (string= (d:charvalue homer-occ) "Safety Inspector"))
+ (is (string= (d:datatype homer-occ) *xml-string*))
+ (is (= (length (d:themes homer-occ)) 1))
+ (is (eql (first (d:themes homer-occ)) en))))))
+
+
+(test test-full-mapping-association
+ "Tests the entire importer module."
+ (let ((dir "data_base")
+ (rdf-file unittests-constants:*full_mapping.rdf*)
+ (tm-id "http://full-mapping/")
+ (document-id "http://full_mapping.rdf"))
+ (when elephant:*store-controller*
+ (elephant:close-store))
+ (fixtures::clean-out-db dir)
+ (rdf-importer:rdf-importer rdf-file dir
+ :tm-id tm-id
+ :document-id document-id)
+ (elephant:open-store (xml-importer:get-store-spec dir))
+ (is (= (length (elephant:get-instances-by-class 'd:TopicC)) 15))
+ (is (= (length (elephant:get-instances-by-class 'd:AssociationC)) 1))
+ (is (= (length (elephant:get-instances-by-class 'd:NameC)) 4))
+ (is (= (length (elephant:get-instances-by-class 'd:RoleC)) 2))
+ (is (= (length (elephant:get-instances-by-class 'd:OccurrenceC)) 2))
+ (is (= (length (elephant:get-instances-by-class 'd:VariantC)) 2))
+ (setf d:*current-xtm* document-id)
+ (let ((married (get-item-by-id "http://simpsons/married"))
+ (husband (get-item-by-id "http://simpsons/husband"))
+ (wife (get-item-by-id "http://simpsons/wife"))
+ (marge (get-item-by-id "http://simpsons/marge"))
+ (homer (get-item-by-id "http://simpsons/homer"))
+ (assoc (first (elephant:get-instances-by-class 'd:AssociationC)))
+ (role-husband
+ (find-if #'(lambda(x)
+ (let ((iis (d:item-identifiers x)))
+ (when (= (length iis) 1)
+ (string= (d:uri (first iis))
+ "http://simpsons/role-husband/ii"))))
+ (elephant:get-instances-by-class 'd:RoleC)))
+ (role-wife
+ (find-if #'(lambda(x)
+ (let ((iis (d:item-identifiers x)))
+ (when (= (length iis) 1)
+ (string= (d:uri (first iis))
+ "http://simpsons/role-wife/ii"))))
+ (elephant:get-instances-by-class 'd:RoleC))))
+ (is-true married)
+ (is-true (empty-p married))
+ (is-true husband)
+ (is-true (empty-p husband))
+ (is-true wife)
+ (is-true (empty-p wife))
+ (is-true role-husband)
+ (is-true role-wife)
+ (is-true marge)
+ (is-true homer)
+ (is (= (length (intersection (list role-husband role-wife)
+ (d:roles assoc)))
+ 2))
+ (is (eql (d:instance-of assoc) married))
+ (is (= (length (d:item-identifiers assoc)) 2))
+ (is (= (length
+ (intersection
+ (list
+ (elephant:get-instance-by-value
+ 'd:ItemIdentifierC 'd:uri "http://simpsons/married/ii-1")
+ (elephant:get-instance-by-value
+ 'd:ItemIdentifierC 'd:uri "http://simpsons/married/ii-2"))
+ (d:item-identifiers assoc)))
+ 2))
+ (is (eql (d:instance-of role-husband) husband))
+ (is (eql (d:instance-of role-wife) wife))
+ (is (eql (d:player role-husband) homer))
+ (is (eql (d:player role-wife) marge))
+ (is (= (length (d:item-identifiers role-husband)) 1))
+ (is (= (length (d:item-identifiers role-wife)) 1))
+ (is (string= (d:uri (first (d:item-identifiers role-husband)))
+ "http://simpsons/role-husband/ii"))
+ (is (string= (d:uri (first (d:item-identifiers role-wife)))
+ "http://simpsons/role-wife/ii")))))
+
+
(defun run-rdf-importer-tests()
"Runs all defined tests."
(when elephant:*store-controller*
@@ -3082,4 +3393,7 @@
(it.bese.fiveam:run! 'test-poems-rdf-topics)
(it.bese.fiveam:run! 'test-empty-collection)
(it.bese.fiveam:run! 'test-collection)
- (it.bese.fiveam:run! 'test-xml-base))
\ No newline at end of file
+ (it.bese.fiveam:run! 'test-xml-base)
+ (it.bese.fiveam:run! 'test-full-mapping-marge)
+ (it.bese.fiveam:run! 'test-full-mapping-homer)
+ (it.bese.fiveam:run! 'test-full-mapping-association))
\ No newline at end of file
Modified: trunk/src/unit_tests/unittests-constants.lisp
==============================================================================
--- trunk/src/unit_tests/unittests-constants.lisp (original)
+++ trunk/src/unit_tests/unittests-constants.lisp Tue Sep 8 06:54:19 2009
@@ -30,7 +30,8 @@
:*atom_test.xtm*
:*atom-conf.lisp*
:*poems_light.rdf*
- :*poems_light.xtm*))
+ :*poems_light.xtm*
+ :*full_mapping.rdf*))
(in-package :unittests-constants)
@@ -99,3 +100,7 @@
(defparameter *poems_light.xtm*
(asdf:component-pathname
(asdf:find-component *unit-tests-component* "poems_light.xtm")))
+
+(defparameter *full_mapping.rdf*
+ (asdf:component-pathname
+ (asdf:find-component *unit-tests-component* "full_mapping.rdf")))
\ No newline at end of file
More information about the Isidorus-cvs
mailing list