xquery/XQuery__XQueryUpdateFacilityTests.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 25 Jan 2016 16:35:43 +0000
changeset 298 9696f76605bd
parent 296 ea3dbc023c80
permissions -rw-r--r--
Added C:\MINGW\MSYS\1.0\bin to PATH when building expat. Some systems have it installed there (such as SWING Jenkins servers)

"{ Package: 'stx:goodies/xmlsuite/xquery' }"

"{ NameSpace: XQuery }"

TestCase subclass:#XQueryUpdateFacilityTests
	instanceVariableNames:'bookstoreDOM namespaceDOM interpreter'
	classVariableNames:''
	poolDictionaries:''
	category:'XQuery-Tests-UpdateFacility'
!

!XQueryUpdateFacilityTests class methodsFor:'documentation'!

documentation
"
    Update facility does not work at all...

    [author:]

    [instance variables:]

    [class variables:]

    [see also:]

"
! !

!XQueryUpdateFacilityTests class methodsFor:'accessing'!

resources

    ^Array 
        with:XQueryDocumentProviderTestResource
! !

!XQueryUpdateFacilityTests methodsFor:'document provider mimicry'!

documentAdaptorsFor: aStringOrURI

    aStringOrURI = 'file:///bookstore.xml'
        ifTrue:
            [^Array with:(XQuery::XDMAdaptorFactory documentAdaptorFor: bookstoreDOM)].

    aStringOrURI = 'file:///namespaces.xml'
        ifTrue:
            [^Array with:(XQuery::XDMAdaptorFactory documentAdaptorFor: namespaceDOM)].

   self error:'Unknown document URI'.

    "Modified: / 28-01-2010 / 10:50:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!XQueryUpdateFacilityTests methodsFor:'initialization & release'!

setUp
    interpreter := (XQueryInterpreter 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"
    "Modified: / 18-09-2008 / 17:18:16 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

tearDown

    interpreter := bookstoreDOM := namespaceDOM := nil.

    "Created: / 25-10-2006 / 09:08:15 / ked"
    "Modified: / 18-09-2008 / 17:18:06 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!XQueryUpdateFacilityTests methodsFor:'tests - fn:put'!

test_function_fn_put_01
    |file document|

    file := Filename newTemporary.
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
            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"
    "Modified: / 18-09-2008 / 17:18:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!XQueryUpdateFacilityTests methodsFor:'tests - misc'!

test_comma_01
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        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"
    "Modified: / 18-09-2008 / 17:18:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!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 := interpreter 
                evaluate:'
        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"
    "Modified: / 18-09-2008 / 17:18:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!XQueryUpdateFacilityTests methodsFor:'tests - upd:delete'!

test_upd_delete_01
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        do delete doc(''file:///bookstore.xml'')/bookstore/book[2]
    '.
    self assert:(bookstoreDOM documentElement childNodes size = 2).

    "Modified: / 18-09-2008 / 17:18:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_upd_delete_02
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        do delete doc(''file:///bookstore.xml'')/bookstore/book
    '.
    self assert:(bookstoreDOM documentElement childNodes size = 0).

    "Modified: / 18-09-2008 / 17:18:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_upd_delete_03
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        do delete doc(''file:///bookstore.xml'')/bookstore
    '.
    self assert:(bookstoreDOM documentElement size = 0).

    "Modified: / 18-09-2008 / 17:18:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_upd_delete_04
    self 
        assert:((bookstoreDOM documentElement childNodes at:1) childNodes first 
                hasAttribute:'withPictures').
    interpreter 
        evaluate:'
        do delete doc(''file:///bookstore.xml'')/bookstore/book[1]/title/@withPictures
    '.
    self 
        assert:((bookstoreDOM documentElement childNodes at:1) childNodes first 
                hasAttribute:'withPictures') not.

    "Modified: / 18-09-2008 / 17:18:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!XQueryUpdateFacilityTests methodsFor:'tests - upd:insert'!

test_insertAfter_01
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        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"
    "Modified: / 18-09-2008 / 17:18:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_insertBefore_01
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        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"
    "Modified: / 18-09-2008 / 17:18:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_insertIntoAsFirst_01
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        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"
    "Modified: / 18-09-2008 / 17:18:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_insertIntoAsFirst_02
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        do insert attribute withPictures { ''yes'' }
        as first into doc(''file:///bookstore.xml'')/bookstore/book[2]
    '.
    self assert:((bookstoreDOM documentElement childNodes second) 
                hasAttribute:'withPictures')

    "Modified: / 18-09-2008 / 17:18:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_insertIntoAsLast_01
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        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"
    "Modified: / 18-09-2008 / 17:18:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_insertIntoAsLast_02
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        do insert attribute withPictures { ''yes'' }
        as last into doc(''file:///bookstore.xml'')/bookstore/book[2]
    '.
    self assert:((bookstoreDOM documentElement childNodes second) 
                hasAttribute:'withPictures')

    "Modified: / 18-09-2008 / 17:18:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_insertInto_01
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        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"
    "Modified: / 18-09-2008 / 17:18:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_insertInto_02
    self assert:(bookstoreDOM documentElement childNodes size = 3).
    interpreter 
        evaluate:'
        do insert attribute withPictures { ''yes'' }
        into doc(''file:///bookstore.xml'')/bookstore/book[2]
    '.
    self assert:((bookstoreDOM documentElement childNodes second) 
                hasAttribute:'withPictures')

    "Modified: / 18-09-2008 / 17:18:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!XQueryUpdateFacilityTests methodsFor:'tests - upd:rename'!

test_upd_rename_01
    self assert:(bookstoreDOM documentElement nodeName = 'bookstore').
    interpreter 
        evaluate:'
        do rename doc(''file:///bookstore.xml'')/bookstore as ''knihovna''
    '.
    self assert:(bookstoreDOM documentElement nodeName = 'knihovna').

    "Modified: / 18-09-2008 / 17:18:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_upd_rename_02
    self 
        assert:((bookstoreDOM documentElement childNodes at:1) childNodes first 
                hasAttribute:'lang').
    interpreter 
        evaluate:'
        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'.

    "Modified: / 18-09-2008 / 17:18:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!XQueryUpdateFacilityTests methodsFor:'tests - upd:replace'!

test_upd_replace_01
    self assert:(bookstoreDOM documentElement nodeName = 'bookstore').
    interpreter 
        evaluate:'
        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"
    "Modified: / 18-09-2008 / 17:18:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_upd_replace_02
    self assert:(bookstoreDOM documentElement nodeName = 'bookstore').
    interpreter 
        evaluate:'
        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"
    "Modified: / 18-09-2008 / 17:18:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!XQueryUpdateFacilityTests methodsFor:'tests - upd:replaceValueOf'!

test_upd_replace_value_of_01
    self assert:(bookstoreDOM documentElement nodeName = 'bookstore').
    interpreter 
        evaluate:'
        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"
    "Modified: / 18-09-2008 / 17:18:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
!

test_upd_replace_value_of_02
    self assert:(bookstoreDOM documentElement nodeName = 'bookstore').
    interpreter 
        evaluate:'
        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"
    "Modified: / 18-09-2008 / 17:18:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
! !

!XQueryUpdateFacilityTests class methodsFor:'documentation'!

version_SVN
    ^ '$Id$'
! !