xquery/trunk/XQuery__XQueryUpdateFacilityTests.st
changeset 0 5057afe1ec87
child 18 3476eed46de5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xquery/trunk/XQuery__XQueryUpdateFacilityTests.st	Tue Apr 08 19:47:42 2008 +0000
@@ -0,0 +1,367 @@
+"{ Package: 'stx:goodies/xmlsuite/xquery' }"
+
+"{ NameSpace: XQuery }"
+
+TestCase subclass:#XQueryUpdateFacilityTests
+	instanceVariableNames:'xqueryExecutor bookstoreDOM namespaceDOM'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'XQuery-Tests'
+!
+
+
+!XQueryUpdateFacilityTests class methodsFor:'accessing'!
+
+resources
+
+    ^Array 
+        with:XQueryDocumentProviderTestResource
+! !
+
+!XQueryUpdateFacilityTests methodsFor:'document provider mimicry'!
+
+documentAdaptorsFor: aStringOrURI
+
+    aStringOrURI = 'file:///bookstore.xml'
+        ifTrue:
+            [^Array with:(XMLv2::XPathDocumentAdaptorFactory documentAdaptorFor: bookstoreDOM)].
+
+    aStringOrURI = 'file:///namespaces.xml'
+        ifTrue:
+            [^Array with:(XMLv2::XPathDocumentAdaptorFactory documentAdaptorFor: namespaceDOM)].
+
+   self error:'Unknown document URI'.
+! !
+
+!XQueryUpdateFacilityTests methodsFor:'initialization & release'!
+
+setUp
+    xqueryExecutor := (XQueryExecutor new)
+                setDocumentProvider:self;
+                yourself.
+    bookstoreDOM := XQueryDocumentProviderTestResource current bookstoreDOM.
+    namespaceDOM := XQueryDocumentProviderTestResource current namespacesDOM.
+
+    "Created: / 25-10-2006 / 09:08:14 / ked"
+    "Modified: / 06-04-2007 / 17:18:31 / janfrog"
+!
+
+tearDown
+
+    xqueryExecutor := bookstoreDOM := namespaceDOM := nil.
+
+    "Created: / 25-10-2006 / 09:08:15 / ked"
+! !
+
+!XQueryUpdateFacilityTests methodsFor:'tests - fn:put'!
+
+test_function_fn_put_01
+
+    | file document |
+    file:= Filename newTemporary.
+   self assert: (bookstoreDOM documentElement childNodes size = 3).
+       xqueryExecutor executeQuery:'
+            fn:put ( doc(''file:///bookstore.xml'')/bookstore/book[1] , ''file:///',file asString,''' )
+        '   .
+
+   self assert: file exists.
+   document := XMLv2::Parser forDOM3 processDocumentInFilename: file.
+   self assert: document documentElement localName = 'book'.
+   self assert: (document documentElement childNodes select:[:node|node isElement]) size = 4.
+
+
+    "Created: / 05-12-2007 / 10:45:18 / janfrog"
+! !
+
+!XQueryUpdateFacilityTests methodsFor:'tests - misc'!
+
+test_comma_01
+
+  self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do delete doc(''file:///bookstore.xml'')/bookstore/book[1] , do delete doc(''file:///bookstore.xml'')/bookstore/book[2]
+    '.
+    self assert: (bookstoreDOM documentElement childNodes size = 1).
+
+    "Modified: / 05-12-2007 / 10:32:31 / janfrog"
+! !
+
+!XQueryUpdateFacilityTests methodsFor:'tests - transform'!
+
+test_transform_01
+
+    |result|
+    self assert: (bookstoreDOM documentElement nodeName = 'bookstore').
+    self assert: ((bookstoreDOM documentElement childNodes at:1 ) childNodes size=4).
+    result:= xqueryExecutor executeQuery:'
+        transform
+        copy $jb := doc(''file:///bookstore.xml'')/bookstore/book[1]
+        modify do delete $jb/parentalAdvisory
+        return $jb
+    '.
+    self assert: ((bookstoreDOM documentElement childNodes at:1) childNodes size=4).
+    self assert: ((result first childNodes at:1) childNodes size=3).
+
+
+    "Created: / 05-12-2007 / 09:39:48 / janfrog"
+    "Modified: / 05-12-2007 / 12:09:33 / janfrog"
+! !
+
+!XQueryUpdateFacilityTests methodsFor:'tests - upd:delete'!
+
+test_upd_delete_01
+
+    |  |
+    self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do delete doc(''file:///bookstore.xml'')/bookstore/book[2]
+    '.
+    self assert: (bookstoreDOM documentElement childNodes size = 2).
+!
+
+test_upd_delete_02
+
+    |  |
+    self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do delete doc(''file:///bookstore.xml'')/bookstore/book
+    '.
+    self assert: (bookstoreDOM documentElement childNodes size = 0).
+!
+
+test_upd_delete_03
+
+    |  |
+    self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do delete doc(''file:///bookstore.xml'')/bookstore
+    '.
+    self assert: (bookstoreDOM documentElement  size = 0).
+!
+
+test_upd_delete_04
+
+    |  |
+    self assert: ((bookstoreDOM documentElement childNodes at:1) childNodes first
+            hasAttribute: 'withPictures').
+    xqueryExecutor executeQuery:'
+        do delete doc(''file:///bookstore.xml'')/bookstore/book[1]/title/@withPictures
+    '.
+    self assert: ((bookstoreDOM documentElement childNodes at:1) childNodes first
+             hasAttribute: 'withPictures') not.
+! !
+
+!XQueryUpdateFacilityTests methodsFor:'tests - upd:insert'!
+
+test_insertAfter_01
+
+
+    self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do insert doc(''file:///bookstore.xml'')/bookstore/book[3]
+       after doc(''file:///bookstore.xml'')/bookstore/book[1]
+    '.
+    self assert: (bookstoreDOM documentElement childNodes size = 4).
+
+    "Modified: / 21-11-2007 / 09:02:33 / janfrog"
+!
+
+test_insertBefore_01
+
+
+    self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do insert doc(''file:///bookstore.xml'')/bookstore/book[3]
+       before doc(''file:///bookstore.xml'')/bookstore/book[1]
+    '.
+    self assert: (bookstoreDOM documentElement childNodes size = 4).
+
+    "Created: / 21-11-2007 / 11:36:10 / janfrog"
+!
+
+test_insertIntoAsFirst_01
+
+
+    self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do insert doc(''file:///bookstore.xml'')/bookstore/book[3]
+        as first into doc(''file:///bookstore.xml'')/bookstore
+    '.
+
+    self assert: (bookstoreDOM documentElement childNodes size = 4).
+
+    "Modified: / 14-11-2007 / 13:45:39 / janfrog"
+!
+
+test_insertIntoAsFirst_02
+
+
+    self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do insert attribute withPictures { ''yes'' }
+        as first into doc(''file:///bookstore.xml'')/bookstore/book[2]
+    '.
+    self assert: ((bookstoreDOM documentElement childNodes second) 
+        hasAttribute: 'withPictures')
+
+    "Modified: / 14-11-2007 / 15:18:23 / janfrog"
+!
+
+test_insertIntoAsLast_01
+
+
+    self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do insert doc(''file:///bookstore.xml'')/bookstore/book[3]
+        as last into doc(''file:///bookstore.xml'')/bookstore
+    '.
+
+    self assert: (bookstoreDOM documentElement childNodes size = 4).
+
+    "Created: / 21-11-2007 / 11:36:31 / janfrog"
+!
+
+test_insertIntoAsLast_02
+
+
+    self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do insert attribute withPictures { ''yes'' }
+        as last into doc(''file:///bookstore.xml'')/bookstore/book[2]
+    '.
+    self assert: ((bookstoreDOM documentElement childNodes second) 
+        hasAttribute: 'withPictures')
+
+    "Created: / 21-11-2007 / 11:37:19 / janfrog"
+!
+
+test_insertInto_01
+
+
+    self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do insert doc(''file:///bookstore.xml'')/bookstore/book[3]
+         into doc(''file:///bookstore.xml'')/bookstore
+    '.
+
+    self assert: (bookstoreDOM documentElement childNodes size = 4).
+
+    "Created: / 21-11-2007 / 11:37:39 / janfrog"
+!
+
+test_insertInto_02
+
+
+    self assert: (bookstoreDOM documentElement childNodes size = 3).
+    xqueryExecutor executeQuery:'
+        do insert attribute withPictures { ''yes'' }
+        into doc(''file:///bookstore.xml'')/bookstore/book[2]
+    '.
+    self assert: ((bookstoreDOM documentElement childNodes second) 
+        hasAttribute: 'withPictures')
+
+    "Created: / 21-11-2007 / 11:37:53 / janfrog"
+! !
+
+!XQueryUpdateFacilityTests methodsFor:'tests - upd:rename'!
+
+test_upd_rename_01
+
+    |  |
+    self assert: (bookstoreDOM documentElement nodeName = 'bookstore').
+    xqueryExecutor executeQuery:'
+        do rename doc(''file:///bookstore.xml'')/bookstore as ''knihovna''
+    '.
+    self assert: (bookstoreDOM documentElement nodeName = 'knihovna').
+!
+
+test_upd_rename_02
+
+    |  |
+    self assert: ((bookstoreDOM documentElement childNodes at:1) childNodes first
+             hasAttribute: 'lang').
+    xqueryExecutor executeQuery:'
+        do rename doc(''file:///bookstore.xml'')/bookstore/book[1]/title/@lang as ''jazyk''
+    '.
+    self assert: ((bookstoreDOM documentElement childNodes at:1) childNodes first
+                 hasAttribute: 'lang') not.
+    self assert: ((bookstoreDOM documentElement childNodes at:1) childNodes first
+                 hasAttribute: 'jazyk').
+    self assert:(bookstoreDOM documentElement childNodes first childNodes first 
+                getAttribute:'jazyk') first nodeValue    
+                = 'eng'.
+
+! !
+
+!XQueryUpdateFacilityTests methodsFor:'tests - upd:replace'!
+
+test_upd_replace_01
+
+    self assert: (bookstoreDOM documentElement nodeName = 'bookstore').
+    xqueryExecutor executeQuery:'
+        do replace doc(''file:///bookstore.xml'')/bookstore/book[1] with element test {}
+    '.
+    self assert: (bookstoreDOM documentElement childNodes at:1 ) nodeName='test' .
+    self assert: (bookstoreDOM documentElement childNodes at:1 ) childNodes size = 0.
+
+    "Modified: / 14-11-2007 / 11:44:17 / janfrog"
+!
+
+test_upd_replace_02
+
+    self assert: (bookstoreDOM documentElement nodeName = 'bookstore').
+    xqueryExecutor executeQuery:'
+        do replace doc(''file:///bookstore.xml'')/bookstore/book[1]/title/@withPictures with attribute withPhotos { ''yes'' }
+    '.
+    self assert: (((bookstoreDOM documentElement childNodes first childNodes first) 
+                        hasAttribute: 'withPictures' ) not
+             and:[(bookstoreDOM documentElement childNodes first childNodes first) 
+                        hasAttribute: 'withPhotos'])  .
+
+    self assert:(bookstoreDOM documentElement childNodes first childNodes first 
+                getAttribute:'withPhotos') first value 
+                    = 'yes'.
+
+    "Modified: / 05-12-2007 / 21:56:58 / janfrog"
+! !
+
+!XQueryUpdateFacilityTests methodsFor:'tests - upd:replaceValueOf'!
+
+test_upd_replace_value_of_01
+    self assert:(bookstoreDOM documentElement nodeName = 'bookstore').
+    xqueryExecutor 
+        executeQuery:'
+        do replace value of doc(''file:///bookstore.xml'')/bookstore/book[1] with ''newcontent''
+    '.
+    self 
+        assert:(bookstoreDOM documentElement childNodes at:1) childNodes size = 1.
+    self 
+        assert:(bookstoreDOM documentElement childNodes at:1) childNodes first 
+                isText.
+    self 
+        assert:(bookstoreDOM documentElement childNodes at:1) childNodes first 
+                data = 'newcontent'.
+
+    "Created: / 21-11-2007 / 12:49:13 / janfrog"
+!
+
+test_upd_replace_value_of_02
+    self assert:(bookstoreDOM documentElement nodeName = 'bookstore').
+    xqueryExecutor 
+        executeQuery:'
+        do replace value of doc(''file:///bookstore.xml'')/bookstore/book[1]/title/@lang with ''cz''
+    '.
+    self 
+        assert:(bookstoreDOM documentElement childNodes first childNodes first 
+                getAttribute:'lang') first nodeValue    
+                = 'cz'.
+
+    "Created: / 21-11-2007 / 12:49:53 / janfrog"
+    "Modified: / 05-12-2007 / 13:50:22 / janfrog"
+! !
+
+!XQueryUpdateFacilityTests class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /opt/data/cvs/stx/goodies/xmlsuite/xquery/XQuery__XQueryUpdateFacilityTests.st,v 1.9 2008-01-09 14:07:23 wrobll1 Exp $'
+! !