Index: Makefile.in =================================================================== diff -u -N -rf3b7952aabc9e4f9079febd1f5b7f5fb833fd50c -rb07223692b7ed8b9b1cfc81f202f73c066456c7c --- Makefile.in (.../Makefile.in) (revision f3b7952aabc9e4f9079febd1f5b7f5fb833fd50c) +++ Makefile.in (.../Makefile.in) (revision b07223692b7ed8b9b1cfc81f202f73c066456c7c) @@ -355,22 +355,22 @@ $(TCLSH) $(src_test_dir_native)/interceptor-slot.tcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) $(TCLSH) $(src_test_dir_native)/aliastest.tcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) $(TCLSH) $(src_test_dir_native)/protected.tcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) - $(TCLSH) $(src_lib_dir)/xotcl/tests/testx.xotcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) - $(TCLSH) $(src_lib_dir)/xotcl/tests/testo.xotcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) - $(TCLSH) $(src_test_dir_native)/speedtest.xotcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) - $(TCLSH) $(src_test_dir_native)/forwardtest.xotcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_test_dir_native)/forwardtest.tcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) $(TCLSH) $(src_test_dir_native)/mixinoftest.tcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) $(TCLSH) $(src_test_dir_native)/slottest.xotcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_lib_dir)/xotcl/tests/speedtest.xotcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_lib_dir)/xotcl/tests/testx.xotcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_lib_dir)/xotcl/tests/testo.xotcl -libdir $(PLATFORM_DIR) $(TESTFLAGS) test-http: $(TCLSH_PROG) $(TCLSH) $(src_lib_dir)/xotcl/tests/xocomm.test -libdir $(PLATFORM_DIR) $(TESTFLAGS) test-actiweb: $(TCLSH_PROG) - $(TCLSH) $(src_test_dir_native)/actiweb.test -libdir $(PLATFORM_DIR) $(TESTFLAGS) - $(TCLSH) $(src_test_dir_native)/persistence.test -libdir $(PLATFORM_DIR) $(TESTFLAGS) - $(TCLSH) $(src_test_dir_native)/UNIVERSAL.test -libdir $(PLATFORM_DIR) $(TESTFLAGS) - $(TCLSH) $(src_test_dir_native)/xoRDF.test -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_lib_dir)/xotcl/tests/actiweb.test -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_lib_dir)/xotcl/tests/persistence.test -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_lib_dir)/xotcl/tests/UNIVERSAL.test -libdir $(PLATFORM_DIR) $(TESTFLAGS) + $(TCLSH) $(src_lib_dir)/xotcl/tests/xoRDF.test -libdir $(PLATFORM_DIR) $(TESTFLAGS) @rm -rf receiver depend: Index: TODO =================================================================== diff -u -N -rf3b7952aabc9e4f9079febd1f5b7f5fb833fd50c -rb07223692b7ed8b9b1cfc81f202f73c066456c7c --- TODO (.../TODO) (revision f3b7952aabc9e4f9079febd1f5b7f5fb833fd50c) +++ TODO (.../TODO) (revision b07223692b7ed8b9b1cfc81f202f73c066456c7c) @@ -890,7 +890,6 @@ - adjusted regression test and old documentation system to work with new structure - old structure xotcl apps @@ -946,7 +945,10 @@ unix win +- moved some more xotcl specfic tests to library/xotcl +- transformed forwardtest from xotcl to next + TODO: - nameing * .c-code: Index: library/xotcl/tests/UNIVERSAL.test =================================================================== diff -u -N --- library/xotcl/tests/UNIVERSAL.test (revision 0) +++ library/xotcl/tests/UNIVERSAL.test (revision b07223692b7ed8b9b1cfc81f202f73c066456c7c) @@ -0,0 +1,48 @@ +# -*- Tcl -*- +#if {[set ::tcl_platform(platform)] == "windows"} {lappend auto_path .} + +package require XOTcl; namespace import -force xotcl::* +set pkgdir [file dir [info script]]/.. +lappend auto_path $pkgdir + +package require nx::test + +set tclsh [info nameofexecutable] +set dir [file dir [info script]] +set univApps $dir/../apps/actiweb/univ + +set startCmd "$tclsh $univApps/UNIVERSAL.xotcl \ + -instanceFile $univApps/UNIVERSAL.rdf \ + -cssFile UNIVERSAL.css \ + -root $dir/../apps/actiweb/univ \ + -pkgdir $pkgdir" +puts stderr "starting $startCmd" +set PIPE [open "|$startCmd"] + +package require xotcl::comm::httpAccess +proc printError msg {puts stderr !!!$msg!!!} + +Class T -superclass Test -parameter { + {count 1} + {errorReport { + puts "\tcontent-length: \[r0::sink set contentLength\]\n\ + \tstatus-code: \[\[r0 set token\] set responseCode\]\n\[r0 getContent]" + }}} + +T new -msg "Load homepage frame von univ ... " \ + -setResult {expr [r0::sink set contentLength] == 358} \ + -cmd [list SimpleRequest r0 -url http://localhost:8095/ ] +T new -msg "Load Catalog ... " \ + -setResult {expr [r0::sink set contentLength] == 1744} \ + -cmd [list SimpleRequest r0 -url http://localhost:8095/univ+catalog ] +T new -msg "Detail Page ... " \ + -setResult {expr [r0::sink set contentLength] == 2327} \ + -cmd [list SimpleRequest r0 -url http://localhost:8095/univ+details+http://nm.wu-wien.ac.at/Lehre/oo1/] +T new -msg "terminate" -cmd [list SimpleRequest r0 -url http://localhost:8095/receiver::exit] \ + -setResult {set x 1} \ + -post {catch {close $::PIPE}; exit} + +after 1000 {Test run} +vwait forever + + Index: library/xotcl/tests/actiweb.test =================================================================== diff -u -N --- library/xotcl/tests/actiweb.test (revision 0) +++ library/xotcl/tests/actiweb.test (revision b07223692b7ed8b9b1cfc81f202f73c066456c7c) @@ -0,0 +1,83 @@ +# -*- Mode: tcl -*- +# regression test for actiweb examples +#if {[set ::tcl_platform(platform)] == "windows"} { +# lappend auto_path . +#} +package require XOTcl; namespace import -force ::xotcl::* +set pkgDir [file dirname [info script]]/.. +lappend auto_path $pkgDir +package require nx::test +#package require xotcl::package; package verbose 1 +package require xotcl::comm::httpAccess +#package require xotcl::trace + +set tclsh [info nameofexecutable] +set dir [file dir [info script]] +set actiwebApps $dir/../apps/actiweb + +# remove persitent vars to get reproducible behavior +catch [file delete -force receiver] +proc terminate {} { + catch [file delete -force receiver] + exit +} + +puts "$tclsh ${actiwebApps}/Counter.xotcl" +puts "------------------------------------ $tclsh ${actiwebApps}/Counter.xotcl -pkgdir $pkgDir" +set PIPE1 [open "| $tclsh ${actiwebApps}/Counter.xotcl -pkgdir $pkgDir"] +set PIPE2 [open "| $tclsh ${actiwebApps}/Counter2.xotcl -pkgdir $pkgDir"] +set PIPE3 [open "| $tclsh ${actiwebApps}/Counter3.xotcl -pkgdir $pkgDir"] +set PIPE4 [open "| $tclsh ${actiwebApps}/Counter4.xotcl -pkgdir $pkgDir"] +set PIPE5 [open "| $tclsh ${actiwebApps}/MC.xotcl -pkgdir $pkgDir"] + +proc printError msg {puts stderr !!!$msg!!!} + +Class T -superclass Test -parameter { + {count 1} + {errorReport { + puts "\tcontent-length: \[r0::sink set contentLength\]\n\ + \tstatus-code: \[\[r0 set token\] set responseCode\]" + }}} + + +T new -msg "Trying Counter.xotcl ... " \ + -setResult {regexp {^The value in counter-1.html is now: 0} [r0::sink set d]} \ + -cmd [list SimpleRequest r0 -url http://localhost:8090/counter-1.html] +T new -msg "terminate Counter" -setResult {set x 1} \ + -cmd [list SimpleRequest r0 -url http://localhost:8090/receiver::exit] \ + -post {catch {close $::PIPE1}} + +T new -msg "Trying Counter2.xotcl ... " \ + -setResult {r0 getContentLength} \ + -expected 238 \ + -cmd [list SimpleRequest r0 -url http://localhost:8091/web-c1] +T new -msg "terminate Counter1" -setResult {set x 1} \ + -cmd [list SimpleRequest r0 -url http://localhost:8091/receiver::exit] \ + -post {catch {close $::PIPE2}} + +T new -msg "Trying Counter3.xotcl ... " \ + -setResult {r0 getContentLength} \ + -expected 122 \ + -cmd [list SimpleRequest r0 -url http://localhost:8093/c1] +T new -msg "terminate Counter3" -setResult {set x 1} \ + -cmd [list SimpleRequest r0 -url http://localhost:8093/receiver::exit] \ + -post {catch {close $::PIPE3}} + +T new -msg "Trying Counter4.xotcl (a) ... " \ + -setResult {r0 getContentLength} \ + -expected 126 \ + -cmd [list SimpleRequest r0 -url http://localhost:8094/wc1] +T new -msg "terminate Counter4" -setResult {set x 1} \ + -cmd [list SimpleRequest r0 -url http://localhost:8094/receiver::exit] \ + -post {catch {close $::PIPE4}} + +T new -msg "Trying MC.xotcl ... " \ + -setResult {r0 getContentLength} \ + -expected 1767 \ + -cmd [list SimpleRequest r0 -url http://localhost:8092/Gustaf.html ] +T new -msg "terminate MC" -setResult {set x 1} \ + -cmd [list SimpleRequest r0 -url http://localhost:8092/receiver::exit] \ + -post {catch {close $::PIPE5}; exit} + +after 4000 {Test run} +catch {vwait forever} Index: library/xotcl/tests/persistence.test =================================================================== diff -u -N --- library/xotcl/tests/persistence.test (revision 0) +++ library/xotcl/tests/persistence.test (revision b07223692b7ed8b9b1cfc81f202f73c066456c7c) @@ -0,0 +1,401 @@ +#!../../src/xotclsh +# -*- Tcl -*- +package require XOTcl; namespace import -force xotcl::* + +@ @File { + description { + Several tests for persistent stores and performance comparison. + The "-bigdb" command line option additionally starts a (longer) + big database test. The test automatically detects which storages + are avaiable. + } +} +array set opt {-bigdb 0 -bench 0} +array set opt $argv + +lappend auto_path [file dir [info script]]/.. + +#set auto_path ".. ../../src $auto_path" +#package require xotcl::package;package verbose 1 + +set storageCandidates {Sdbm Jufgdbm Mem Gdbm TextFile} +set storageCandidates {Sdbm Mem Gdbm TextFile} +#set storageCandidates {Gdbm} +set stores "" + +foreach store $storageCandidates { + if {![catch {package require xotcl::store::[string tolower $store]}]} { + lappend stores $store + } else { + puts "FAILED: package require xotcl::store::[string tolower $store]" + } +} + +puts "\nPersistence Test\n\nUsing the following Storages: \n $stores\n" + +set ::tests { + testStorageFeatures + Stores + Traverse + Store_Fetch_List + Store_Fetch_List_Same_Key + SimplePersistentObjects + LotsOfObjects +} + +if {$opt(-bigdb)} { + lappend ::tests bigdb + puts " ... bigdb test enabled.\n" +} else { + puts " ... bigdb test disabled.\n" +} +if {$opt(-bench)} { + set ::runs 10 + # don't use number >= 1000 because of SDBMs's char key length with the + # test SimplePersistentObjects + # don't use number > 272 because of SDBMs's key pairs max length of 1024 + # FIX THIS in FUTURE RELEASES!! + set ::iterations 272 +} else { + set ::runs 1 + set ::iterations 10 +} + +#package require xotcl::store::trace +#Storage=Gdbm instmixin TraceStorage + + +package require xotcl::store::persistence + +proc ::errorCheck {got expected msg} { + if {$got != $expected} { + puts stderr "FAILED: $msg\nGot: $got\nExpected: $expected" + exit -1 + } +} +proc ::errorCheckList {got expected msg} { + if {[lsort $got] != [lsort $expected]} { + puts stderr "FAILED: $msg\nGot: $got\nExpected: $expected" + exit -1 + } +} + +Class PersistenceTest + +@ Class PersistenceTest + +PersistenceTest instproc init args { + next +} + +PersistenceTest instproc testStorageFeatures {store} { + Storage=$store s + s open testDB + s set "{::a::s x} {x}" {a b c d} + s set "::a::s x" {{r t} a b c r} + s set ::a::t 7 + set result [s set ::a::t] + errorCheck $result 7 "Failed fetch ::a::t" + set result [s set "{::a::s x} {x}"] + errorCheck $result "a b c d" "Failed fetch {::a::s x} {x}" + set result [s set "::a::s x"] + errorCheck $result "{r t} a b c r" "Failed fetch ::a::s x" + + errorCheckList [s names] "{::a::s x} {{::a::s x} {x}} ::a::t" "Failed list -- all" + + set keys [list [s firstkey]] + while {[set nk [s nextkey]] != ""} {lappend keys $nk} + set keys [lappend keys [s firstkey]] + while {[set nk [s nextkey]] != ""} {lappend keys $nk} + + errorCheckList $keys "{{::a::s x} {x}} {::a::s x} ::a::t {{::a::s x} {x}} {::a::s x} ::a::t" "First/next key traversal failed." + + s unset "{::a::s x} {x}" + errorCheckList [s names] "{::a::s x} ::a::t" "Failed delete {::a::s x} {x}" + s unset "::a::s x" + errorCheckList [s names] "::a::t" "Failed delete ::a::s x" + + s close + s destroy + return " PASSED with $store" +} + +PersistenceTest instproc Traverse { store} { + Storage=$store s + s open testDB + for {set i 0} {$i < $::iterations} {incr i} { + set key "::a${i}" + set value "An value for the test $i $i $i\0" + s set $key $value + lappend resultKeys $key + lappend resultValues $value + } + + set keys [list [s firstkey]] + set values [list [s set $keys]] + while {[set nk [s nextkey]] != ""} { + lappend keys $nk + lappend values [s set $nk] + } + errorCheckList $keys $resultKeys "Failed Traverse keys" + errorCheckList $values $resultValues "Failed Traverse values" + s close + s destroy + return " PASSED with $store" +} + +PersistenceTest instproc Stores {store} { + Storage=$store s + s open testDB + for {set i 0} {$i < $::iterations} {incr i} { + s set "::a${i}" "An value for the test $i $i $i" + } + set list [s names] + errorCheck [llength $list] $::iterations "Failed Stores $::iterations -- Wrong \# of stored elements" + s close + s destroy + return " PASSED with $store" +} + +PersistenceTest instproc Store_Fetch_List {store} { + Storage=$store s + s open testDB + for {set i 0} {$i < $::iterations} {incr i} { + set key "::a${i}" + set value "An value for the test $i $i $i" + s set $key $value + set list [s names] + errorCheck [llength $list] [expr $i +1] "Failed Store_Fetch_List $::iterations -- Wrong \# of stored elements" + set result [s set $key] + errorCheck $result $value "Failed fetch Store_Fetch_List current key" + set result [s set "::a0"] + errorCheck $result "An value for the test 0 0 0" "Failed fetch Store_Fetch_List first key" + } + s close + s destroy + return " PASSED with $store" +} + +PersistenceTest instproc Store_Fetch_List_Same_Key {store} { + Storage=$store s + s open testDB + set key "Always the same key" + for {set i 0} {$i < $::iterations} {incr i} { + set value "An value for the test $i $i $i" + s set $key $value + set list [s names] + errorCheck [llength $list] 1 "Failed Store_Fetch_List_Same_Key $::iterations -- Wrong \# of stored elements" + set result [s set $key] + errorCheck $result $value "Failed fetch Store_Fetch_List_Same_Key current key" + } + + s close + s destroy + return " PASSED with $store" +} + +# +# tests dependent on the Persistence package +# + +PersistenceTest instproc SimplePersistentObjects {store} { + set ox 1; set oy 1; set py 1; set px 1; + set oza 1; set ozb 1; set onames [list a b] + set pza 1; set pzb 1; set pnames [list a b] + + + + #puts stderr mixin=[pmgr info mixin] + #pmgr mixin [concat TraceStorage [pmgr info mixin]] + + for {set i 0} {$i < $::iterations} {incr i} { + PersistenceMgr pmgr -dirName . \ + -fileName testDB -dbPackage $store + # Two example objects with variables set to default values + Object o + o set x 1 + o set y 1 + o set threeLines "a +b +c" + + o array set z {a 1 b 1} + Object p + p set x 1 + p set y 1 + p array set z {a 1 b 1} + + o mixin Persistent=Eager + p mixin Persistent=Lazy + # for the mem storage Lazy Persistence makes not much sense + if {$store == "Mem"} {p mixin Persistent=Eager} + + o persistenceMgr pmgr + p persistenceMgr pmgr + o persistent {x y z threeLines} + p persistent {x y z} + + o incr x 2 + incr ox 2 + o append y 1 + append oy 1 + p incr x 3 + incr px 3 + p append y 2 + append py 2 + + o incr z(a) 2 + incr oza 2 + o append z(b) 1 + append ozb 1 + o set z($i) 5 + lappend onames $i + + p incr z(a) 2 + incr pza 2 + p append z(b) 1 + append pzb 1 + p set z($i) 5 + lappend pnames $i + + errorCheck [o set x] $ox "Persistence: o->x Failed" + errorCheck [o set y] $oy "Persistence: o->y Failed" + errorCheck [o set z(a)] $oza "Persistence: o->z(a) Failed" + errorCheck [o set z(b)] $ozb "Persistence: o->z(b) Failed" + errorCheckList [o array names z] $onames "Array indizes got lost - o -" + errorCheck [p set x] $px "Persistence: p->x Failed" + errorCheck [p set y] $py "Persistence: p->y Failed" + errorCheckList [o array names z] $onames "Array indizes got lost" + errorCheck [p set z(a)] $pza "Persistence: p->z(a) Failed" + errorCheck [p set z(b)] $pzb "Persistence: p->z(b) Failed" + errorCheckList [p array names z] $pnames "Array indizes got lost - p -" + + errorCheck [o set threeLines] {a +b +c} "Three Lines Failed" + + o destroy + p destroy + pmgr destroy + } + + #errorCheck $ox 21 "Persistence: o->x End Result Failed" + #errorCheck $oy 11111111111 "Persistence: o->y End Result Failed" + #errorCheck $px 31 "Persistence: p->x End Result Failed" + #errorCheck $py 12222222222 "Persistence: p->y End Result Failed" + + return " PASSED with $store" +} + +PersistenceTest instproc LotsOfObjects {store} { + set secondLoopMax 1 + PersistenceMgr pmgr -dirName . \ + -fileName testDB -dbPackage $store + for {set i 0} {$i < $::iterations} {incr i} { + # we create 10 objects per iteration + for {set j 0} {$j < $secondLoopMax} {incr j} { + Object iHaveaVeryLongName${i}${j} + Object iHaveaVeryLongName${i}${j}::meToo${i}${j} + iHaveaVeryLongName${i}${j} mixin Persistent=Eager + iHaveaVeryLongName${i}${j} persistenceMgr pmgr + iHaveaVeryLongName${i}${j}::meToo${i}${j} mixin Persistent=Eager + iHaveaVeryLongName${i}${j}::meToo${i}${j} persistenceMgr pmgr + foreach var {a b c d e f g h i j k l m n o p} { + iHaveaVeryLongName${i}${j} set $var " some useless test ...... + with spaces and lines breaks iHaveaVeryLongName$i $var $i + " + iHaveaVeryLongName${i}${j} persistent $var + iHaveaVeryLongName${i}${j}::meToo${i}${j} set $var " some useless test ...... + with spaces and lines breaks iHaveaVeryLongName$i $var $i + " + iHaveaVeryLongName${i}${j}::meToo${i}${j} persistent $var + } + } + } + pmgr destroy + return " PASSED with $store" +} + +PersistenceTest instproc random modulo { ;### random number generator + [self] instvar seed + set seed [expr {($seed*12731+34197) % 21473}] + return [expr {$seed % $modulo}] +} + +PersistenceTest instproc bigdb {store} { + Storage=$store s + s open testDB + set max 100000 + [self] set seed 4711 + for {set i 0} {$i < $max} {incr i} { + s set $i $i + } + [self] set seed 4711 + for {set i 0} {$i < $max} {incr i} { + set key [[self] random $max] + set r [s set $key] + errorCheck $r $key "Failed bigdb $::iterations -- Wrong result $r instead of $key" + } + s close + s destroy + return " PASSED with $store" +} + + + +PersistenceTest instproc runOnce {} { + eval file delete -force testDB [glob -nocomplain testDB*] + catch {xotcl::memStoragePool remove testDB} + foreach test $::tests { + puts "[[self] set run]: $test $::iterations" + foreach s $::stores { + set t [time {set result [[self] $test $s]}] + [self] report $test $s $t $result + eval file delete -force testDB [glob -nocomplain testDB*] + catch {xotcl::memStoragePool remove testDB} + } + } +} +PersistenceTest instproc run {runs} { + [self] instvar run + for {set run 1} {$run<=$runs} {incr run} { + pt runOnce + } +} + +PersistenceTest instproc report {test store time result} { + if {![regexp {^(-?[0-9]+) +(.*)$} $time _ ms string]} { + puts stderr "time <$time> could not be parsed" + return + } + set key bench($test,$store) + set better " " + if {[[self] exists $key]} { + if {[[self] set $key] > $ms} { + [self] set $key $ms + set better "+" + } + } else { + [self] set $key $ms + } + puts "[[self] set run]: [format %-22s $result]\ + $better[format %10d $ms] $string" +} + +PersistenceTest instproc table {} { + set f [open "persistent.cvs" w] + foreach test $::tests { + set values "" + foreach store $::stores { + lappend values [[self] set bench($test,$store)] + } + puts "[format %-30s $test];[join $values {;}]" + puts $f "[format %-30s $test];[join $values {;}]" + } + close $f +} + +PersistenceTest pt -run $::runs +if {$opt(-bench)} { + pt table +} Index: library/xotcl/tests/speedtest.xotcl =================================================================== diff -u -N --- library/xotcl/tests/speedtest.xotcl (revision 0) +++ library/xotcl/tests/speedtest.xotcl (revision b07223692b7ed8b9b1cfc81f202f73c066456c7c) @@ -0,0 +1,547 @@ +#memory trace on +package require XOTcl; namespace import ::xotcl::* + +package require nx::test +Test parameter count 1000 + +@ @File {description { + Regression and speed test for various ways to achieve a similar + behaviour. + } +} + +set ccount 20 +#set ocount 1014 +#set ocount [expr {$ccount + 206}] +#set ocount [expr {$ccount + 15}] +set ocount [expr {$ccount + 7}] + +Class M1; Class M2 +Class C -parameter {{p 99} {q 98} r} +C instproc f args {next} +C instproc init args { + my instvar n v + #for {set i 1} {$i<1000} {incr i} {set n($i) 1} + #for {set i 1} {$i<1000} {incr i} {Object [self]::$i} + for {set i 0} {$i<$::ccount} {incr i} {set n($i) 1} + for {set i 0} {$i<$::ccount} {incr i} {Object [self]::$i} + set v 1 +} + +C instproc mixinappend m { + my mixin [concat [my info mixin] $m] + my info mixin +} +C instproc ma m { + set mix [my info mixin] + my mixin [lappend mix $m] + my info mixin +} + +C instproc existsViaInstvar {} { + my instvar v + info exists v +} +C instproc existsViaMyInstvar {} { + my instvar v + info exists v +} +C instproc existsViaExistsMethod {} { + [self] exists v +} +C instproc existsViaMyExistsMethod {} { + my exists v +} +C instproc existsViaDotExistsMethod {} { + :exists v +} +C instproc existsViaResolver {} { + info exists :v +} +C instproc notExistsViaInstvar {} { + my instvar xxx + info exists xxx +} +C instproc notExistsViaExistsMethod {} { + my exists xxx +} + +C instproc existsAndReturnValue1 {} { + if {[my exists v]} { + my set v + } +} +C instproc existsAndReturnValue3 {} { + if {[my exists v]} { + set x [my set v] + } +} + +C instproc setViaInstvar x { + my instvar v + set v $x +} +C instproc setViaSetMethod x { + my set v $x +} +C instproc setViaParameter x { + my r $x +} +C instproc testAndSetViaInstvar x { + my instvar v + if {[info exists v]} {set v $x} +} +C instproc testAndSetViaSetMethod x { + if {[my info vars v] ne ""} {my set v $x} +} + +C instproc readViaInstvar {} { + my instvar p + set p +} +C instproc readViaSetMethod {} { + my set p +} +C instproc readViaSetMethodNoSelf {} { + ::c set p +} +C instproc readViaParameter {} { + my p +} + +C instproc readTwiceViaInstvar {} { + my instvar p + set p + set p +} +C instproc readTwiceViaSetMethod {} { + my set p + my set p +} +C instproc readTwiceViaSetMethodNoSelf {} { + ::c set p + ::c set p +} +C instproc readTwiceViaParameter {} { + my p + my p +} +C instproc readTwovarsViaInstvar {} { + my instvar p q + set p + set q +} +C instproc readTwovarsViaSetMethod {} { + my set p + my set q +} +C instproc readTwovarsViaSetMethodNoSelf {} { + ::c set p + ::c set q +} +C instproc readTwovarsViaParameter {} { + my p + my q +} + +C instproc instvarAlias {} { + my instvar {a b} + set b 1 + my exists a +} + + +C instproc explicitReturn {} { + return [set i 1] +} +C instproc implicitReturn {} { + set i 1 +} +C instproc explicitReturnFromVar {} { + set i 1 + return $i +} +C instproc implicitReturnFromVar {} { + set i 1 + set i +} + +C instproc childNodeNamespace {} { + Object [self]::13 +} +C instproc childNodeNamespaceCreate {} { + Object create [self]::13 +} +C instproc createVolatileRc {} { + Object new -volatile + return 2 +} + +C c +Class D -superclass C +D instproc init args {} +D d + +#Test new -cmd {llength [c info children]} -count 1 -expected 999 +#Test new -cmd {set x [llength [c info children]]} -count 1 -expected 999 +Test new -cmd {llength [c info children]} -count 1 -expected $ccount +Test new -cmd {set x [llength [c info children]]} -count 1 -expected $ccount +puts stderr XXX-[llength [Object info instances]]-[lsort [Object info instances]] +Test new -cmd {set x [llength [Object info instances]]} -count 1 -expected $ocount +Test new -cmd {llength [Object info instances]} -count 1 -expected $ocount + +Test new -cmd {d istype D} -expected 1 + +Test new -cmd {c setViaInstvar 100} -expected 100 +Test new -cmd {c setViaSetMethod 100} -expected 100 +Test new -cmd {c setViaParameter 100} -expected 100 + +Test new -cmd {c existsViaInstvar} +Test new -cmd {c existsViaMyInstvar} +Test new -cmd {c existsViaExistsMethod} +Test new -cmd {c existsViaMyExistsMethod} +Test new -cmd {c existsViaDotExistsMethod} +Test new -cmd {c existsViaResolver} +Test new -cmd {c exists v} +Test new -cmd {c notExistsViaInstvar} -expected 0 +Test new -cmd {c notExistsViaExistsMethod} -expected 0 +Test new -cmd {c exists xxx} -expected 0 + +Test new -cmd {c existsAndReturnValue1} -expected 100 +Test new -cmd {c existsAndReturnValue3} -expected 100 + +Test new -cmd {c testAndSetViaInstvar 100} -expected 100 +Test new -cmd {c testAndSetViaSetMethod 100} -expected 100 + +Test new -cmd {c readViaInstvar} -expected 99 +Test new -cmd {c readViaSetMethod} -expected 99 +Test new -cmd {c readViaParameter} -expected 99 +Test new -cmd {c readViaSetMethodNoSelf} -expected 99 + +Test new -cmd {c readTwiceViaInstvar} -expected 99 +Test new -cmd {c readTwiceViaSetMethod} -expected 99 +Test new -cmd {c readTwiceViaParameter} -expected 99 +Test new -cmd {c readTwiceViaSetMethodNoSelf} -expected 99 + +Test new -cmd {c readTwovarsViaInstvar} -expected 98 +Test new -cmd {c readTwovarsViaSetMethod} -expected 98 +Test new -cmd {c readTwovarsViaParameter} -expected 98 +Test new -cmd {c readTwovarsViaSetMethodNoSelf} -expected 98 + +Test new -cmd {c instvarAlias} + +Test new -cmd {c incr v} -post {c set v 1} -expected 101 +Test new -cmd {c unset v; set r [c exists v]; c set v 1; set r} -expected 0 + +Test new -cmd {llength [Object info instances]} -count 1 -expected $ocount +Test new -cmd {set x [llength [Object info instances]]} -count 1 -expected $ocount + +Test new -cmd {c explicitReturn} +Test new -cmd {c implicitReturn} +Test new -cmd {c explicitReturnFromVar} +Test new -cmd {c implicitReturnFromVar} + +Test new -cmd {llength [Object info instances]} -count 1 -expected $ocount +Test new -cmd {set x [llength [Object info instances]]} -count 1 -expected $ocount + +Test new -cmd {c childNodeNamespace} -expected ::c::13 +Test new -cmd {llength [Object info instances]} -count 1 -expected $ocount +Test new -cmd {c childNodeNamespaceCreate} -expected ::c::13 +Test new -cmd {llength [Object info instances]} -expected $ocount +Test new -cmd {c createVolatileRc} -expected 2 + +# should be still the same number as above +Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount + +Test new -cmd {Object new -volatile} -expected ::nx::core::__\#F9 -count 2000 \ + -post {foreach o [Object info instances ::nx::core::__*] {$o destroy}} + +# should be still the same number as above +Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount + +Test new -cmd {Object new} -expected ::nx::core::__\#lQ -count 2000 \ + -post {foreach o [Object info instances ::nx::core::__*] {$o destroy}} + +# should be still the same number as above +Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount + +Test new -cmd {Object new -childof o} -expected ::o::__\#0Hh \ + -pre {Object o} -post {o destroy} + +# should be still the same number as above +Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount + +Test new -count 1000 -pre {::set ::count 0} \ + -cmd {Object create [incr ::count]} \ + -expected ::1 \ + -post {::unset ::count} +Test new -count 1000 -pre {::set ::count 0} \ + -cmd {[incr ::count] destroy} \ + -post {::unset ::count} \ + -expected "" +# +Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount +# we create another object +set ocount [expr {$ocount + 1}] +Test new -cmd {Object create x} -expected ::x +Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount + +Test new -cmd {Object create x -set a -1 -set b ,, -set c a--} \ + -expected ::x +Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount + +Test new -cmd {expr {[c array names n 5] ne ""}} + +Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount +Test new -cmd {info exists c::n(5)} +Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount +Test new -cmd {c exists n(5)} + +Test new -cmd {llength [c info children]} -expected $ccount +Test new -cmd {c info children ::c::5} -expected ::c::5 + +Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount + +Test new -cmd {Object info instances ::c::5*} -expected ::c::5 +Test new -cmd {Object info instances ::c::5} -expected ::c::5 +Test new -cmd {Object info instances ::c::5000} -expected "" + +Test new -count 100 -pre {set ::c::l ""} \ + -cmd {lappend ::c::l 1} \ + -post {c unset l} + +Test new \ + -count 100 \ + -cmd {c mixinappend M1} \ + -expected ::M1 \ + -post {c mixin ""} + +Test new \ + -count 100 \ + -cmd {c ma M1} \ + -expected ::M1 \ + -post {c mixin ""} + +Test new \ + -count 100 \ + -cmd {c mixin add M1} \ + -expected "" \ + -post {c mixin ""} + +Test new \ + -count 100 \ + -cmd {c mixinappend M1; c mixinappend M2} \ + -expected {::M1 ::M2} \ + -post {c mixin ""} + +Test new \ + -count 100 \ + -cmd {c ma M1; c ma M2} \ + -expected {::M1 ::M2} \ + -post {c mixin ""} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Object o -mixin {D E}} \ + -cmd {o info mixin D} \ + -expected {::D} \ + -post {foreach o {D E o} {$o destroy}} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Object o -mixin {D E}} \ + -cmd {o info mixin E} \ + -expected {::E} \ + -post {foreach o {D E o} {$o destroy}} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Object o -mixin {D E}} \ + -cmd {o info mixin ::E*} \ + -expected {::E} \ + -post {foreach o {D E o} {$o destroy}} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Class E1; Object o -mixin {D E E1}} \ + -cmd {o info mixin ::E*} \ + -expected {::E ::E1} \ + -post {foreach o {D E E1 o} {$o destroy}} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Class X -instmixin {D E}} \ + -cmd {X info instmixin D} \ + -expected {::D} \ + -post {foreach o {D E X} {$o destroy}} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Class X -instmixin {D E}} \ + -cmd {X info instmixin E} \ + -expected {::E} \ + -post {foreach o {D E X} {$o destroy}} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Class E1; Class X -instmixin {D E E1}} \ + -cmd {X info instmixin ::E*} \ + -expected {::E ::E1} \ + -post {foreach o {D E E1 X} {$o destroy}} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Class X -instmixin {D E}} \ + -cmd {X info instmixin ::E*} \ + -expected {::E} \ + -post {foreach o {D E X} {$o destroy}} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Class X} \ + -cmd {X instmixin {D E}; X instmixin delete ::E; X info instmixin} \ + -expected {::D} \ + -post {foreach o {D E X} {$o destroy}} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Class X} \ + -cmd {X instmixin {D E}; X instmixin delete E; X info instmixin} \ + -expected {::D} \ + -post {foreach o {D E X} {$o destroy}} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Class E1; Class X} \ + -cmd {X instmixin {D E E1}; catch {X instmixin delete ::E*}; X info instmixin} \ + -expected {::D} \ + -post {foreach o {D E E1 X} {$o destroy}} + +Test new \ + -count 100 \ + -pre {Class D; Class E; Class E1; Class X} \ + -cmd {X instmixin {D E E1}; catch {X instmixin delete E*}; X info instmixin} \ + -expected {::D} \ + -post {foreach o {D E E1 X} {$o destroy}} + +Test new \ + -cmd {C instfilter f; C info instfilter} \ + -expected f \ + -post {C instfilter ""} + +Test new -pre {set s \#hallo} -cmd {string match "\#*" $s} +Test new -pre {set s \#hallo} -cmd {regexp {^\#} $s} +Test new -pre {set s \#hallo} -cmd {expr {[string first "\#" $s] == 0}} +Test new -pre {set s \#hallo} -cmd {expr {[string range $s 0 0] == "\#"}} + +Test new -pre {set s \#hallo} -cmd {regexp {^\#.*a} $s} +Test new -pre {set s \#hallo} -cmd {regexp {^\#.*a.*o} $s} +Test new -pre {set s \#hallo} -cmd {regexp {^\#.*a(.*)o} $s} +Test new -pre {set s \#hallo} -cmd {regexp {^\#.*a(.*)o} $s _} +Test new -pre {set s \#hallo} -cmd {regexp {^\#.*a(.*)o} $s _ out} + +Test new -msg {call proc of subobject directly} \ + -pre {C c2; C c2::o; c2::o proc f a {incr a}} \ + -cmd {c2::o::f 10} -expected 11 -count 5000 \ + -post {c2 destroy} +Test new -msg {call proc of subobject via dispatch} \ + -pre {C c2; C c2::o; c2::o proc f a {incr a}} \ + -cmd {c2::o f 10} -expected 11 -count 5000 \ + -post {c2 destroy} +Test new -msg {call proc of object and subobject via dispatch} \ + -pre {C c2; C c2::o; c2::o proc f a {incr a}} \ + -cmd {c2 o f 10} -expected 11 -count 5000 \ + -post {c2 destroy} + +Test new -msg {dispatch subobject directy via [self]} \ + -pre {C c2; C c2::o; c2::o proc f a {incr a}; c2 proc t a {[self]::o f $a}} \ + -cmd {c2 t 12} -expected 13 -count 5000 \ + -post {c2 destroy} +Test new -msg {dispatch subobject via my} \ + -pre {C c2; C c2::o; c2::o proc f a {incr a}; c2 proc t a {my o f $a}} \ + -cmd {c2 t 12} -expected 13 -count 5000 \ + -post {c2 destroy} + + +###### insttclcmd tests +set cnt 10000 +#Test new -msg {call insttclcmd (append) and check created variable} \ + -pre {Object o} \ + -cmd {o append X 1; o exists X} -expected 1 \ + -post {o destroy} +#Test new -msg {call tclcmd (regexep) and check created variable} \ + -pre {Object o; o tclcmd regexp} \ + -cmd {o regexp (a) a _ x; o exists x} -expected 1 -count $cnt \ + -post {o destroy} +Test new -msg {call forwarder for (append) and check created variable} \ + -pre {Object o; o forward append -objscope} \ + -cmd {o append X 1; o exists X} -expected 1 \ + -post {o destroy} +Test new -msg {call forwarder (regexep) and check created variable} \ + -pre {Object o; o forward regexp -objscope} \ + -cmd {o regexp (a) a _ x; o exists x} -expected 1 -count $cnt \ + -post {o destroy} +Test new -msg {call forwarder to another obj} \ + -pre {Object o; Object t; o forward set t set; t set x 100} \ + -cmd {o set x} -expected 100 -count $cnt \ + -post {o destroy} + +set cnt 100000 +Test new -msg {call handcoded incr} \ + -pre {Class C; C create o; o set x 1} \ + -cmd {o incr x 77} -expected 78 -count $cnt \ + -post {o destroy} +Test new -msg {call incr via instforward} \ + -pre {Class C; C instforward ::incr -objscope; C create o; o set x 1} \ + -cmd {o incr x 77} -expected 78 -count $cnt \ + -post {o destroy} +Test new -msg {call incr via forward} \ + -pre {Class C; C create o; o forward ::incr -objscope; o set x 1} \ + -cmd {o incr x 77} -expected 78 -count $cnt \ + -post {o destroy} +set cnt 10000 +Test new -msg {call obj with namespace via forward} \ + -pre {Object n; Object n::x; Object o -forward ::n::x} \ + -cmd {o x self} -expected ::n::x -count $cnt \ + -post {o destroy} +Test new -msg {call obj with namespace via instforward} \ + -pre {Object n; Object n::x; Class C; C create o; C instforward ::n::x} \ + -cmd {o x self} -expected ::n::x -count $cnt \ + -post {o destroy} +Test new -msg {call obj with namespace via instforward and mixinclass} \ + -pre {Object n; Object n::x; Class M -instforward ::n::x; + Class C -instmixin M; C create o } \ + -cmd {o x self} -expected ::n::x -count $cnt \ + -post {o destroy} +Test new -msg {call obj with namespace via instforward and next from proc} \ + -pre { + Object n; Object n::x; + Class C -instforward ::n::x; + C create o -proc x args {next} } \ + -cmd {o x self} -expected ::n::x -count $cnt \ + -post {o destroy} +Test new -msg {call obj with namespace via instforward and next from instproc} \ + -pre { + Object n; Object n::x; + Class C -instforward ::n::x; + Class D -superclass C -instproc x args {next}; + D create o } \ + -cmd {o x self} -expected ::n::x -count $cnt \ + -post {o destroy} +Test new -msg {call obj with namespace via mixin and instforward and next} \ + -pre {Object n; Object n::x; + Class M -instforward ::n::x; + Class N -superclass M -instproc x args {next}; + Class C -instmixin N; C create o} \ + -cmd {o x self} -expected ::n::x -count $cnt \ + -post {o destroy} +Test new -msg {return -code break} \ + -pre {Class A -instproc br {} {return -code break}; A create a1} \ + -cmd {catch {a1 br}} -expected 3 -count 2 \ + -post {A destroy; a1 destroy} + + +Test run; exit + + + Index: library/xotcl/tests/xoRDF.test =================================================================== diff -u -N --- library/xotcl/tests/xoRDF.test (revision 0) +++ library/xotcl/tests/xoRDF.test (revision b07223692b7ed8b9b1cfc81f202f73c066456c7c) @@ -0,0 +1,1661 @@ +# -*- Tcl -*- +# +package require XOTcl; namespace import -force xotcl::* + +lappend auto_path [file dir [info script]]/.. +#package require package;package verbose 1 +package require xotcl::rdf::parser +package require xotcl::rdf::recreatorVisitor +package require xotcl::rdf::triple + +proc errorCheck {expected result msg} { + set expected [string trim $expected \n] + set result [string trim $result \n] + foreach e [split $expected \n] r [split $result \n] { + set e [string trim $e] + set r [string trim $r] + if {$e != $r} { + puts stderr "FAILED: $msg\nGot: '$r'\nExpected: '$e'" + puts stderr "Full Result:\n$result" + puts stderr "RAW Triples:" + foreach t [lsort [tripleVisitor::db getTriples]] { + puts -nonewline stderr [$t dump] + } + exit -1 + return + } + } +} + +Class TestVisitor -superclass NodeTreeVisitor +TestVisitor instproc visit objName { + my append result [string trim [$objName print]] \n +} +TestVisitor instproc interpretNodeTree {node} { + my set result "" + $node accept [self] + return [my set result] +} + +TestVisitor testVisitor +RDFRecreatorVisitor reVisitor +TripleVisitor tripleVisitor +tripleVisitor proc interpret {parser topNode {asBag 1}} { + set result "" + my descriptionAsBag $asBag + my reset + my interpretNodeTree $topNode + return [[self]::db prettyTriples] + # foreach t [lsort [[self]::db getTriples]] { + # append result [string trim [$t dump]]\n + # } + # return $result +} + +RDFParser rp +rp proc time {cmd time} { + upvar $time ms + regexp {^(-?[0-9]+) } [::time {set r [eval $cmd]}] _ ms + return $r +} + +rp proc test {name text nodeResult tripleResult {descriptionAsBagResult ""}} { + my reset + foreach time {nodeTime recreateTime tripleTime} { + if {![my exists $time]} {my set $time 0} + } + my parse $text + set r [rp time [list testVisitor interpretNodeTree [self]::topNode1] ct] + regsub -all "[self]::topNode1" $r "" r + ::errorCheck $nodeResult $r "RDF Node Creation: $name" + + #set r [time [list reVisitor interpretNodeTree [self]::topNode1] rt] + #::errorCheck $recreateResult $r "RDF Recreation: $name" + set r [rp time [list tripleVisitor interpret rp [self]::topNode1 0] tt] + ::errorCheck $tripleResult $r "RDF Triples: $name" + if {$descriptionAsBagResult != ""} { + set r [tripleVisitor interpret rp [self]::topNode1 1] + ::errorCheck $descriptionAsBagResult $r "RDF Triples -- Description as Bag: $name" + } + + # test recreation by recreating XML text and by parsing + # and testing it again + set recreatedText [rp time [list reVisitor interpretNodeTree [self]::topNode1] rt] + [self]::topNode1 destroy + + my reset + my parse $recreatedText + + #puts "RECREATED: \n$recreatedText" + + # test recreated node tree + set r [testVisitor interpretNodeTree [self]::topNode1] + regsub -all "[self]::topNode1" $r "" r + ::errorCheck $nodeResult $r "RDF Node Recreation: $name" + set r [tripleVisitor interpret rp [self]::topNode1 0] + + ::errorCheck $tripleResult $r "RDF Triple Recreation: $name" + + my incr nodeTime $ct + my incr recreateTime $rt + my incr tripleTime $tt + puts "PASSED: $name ($ct + $rt + $tt)" +} + +############################################################################## +rp test "Namespace" { + + + + + xyz + dfg + + + + +} { +::xotcl::rdf::parser::RDFTag- --- RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- Description +ATTR: ID = nsd +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:ABC +PCDATA: +xyz +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- fromXYZ +PCDATA: +dfg +} { + http://www.w3.org/Home/Lassila http://description.org/schema/Creator nsd + nsd http://description.org/schema/ABC xyz + nsd http://xyz.com/fromXYZ dfg +} + +############################################################################## +rp test descriptionNestedNS { + + + Ora Lassila + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +PCDATA: +Ora Lassila +} { + http://www.w3.org/Home/Lassila http://description.org/schema/Creator Ora Lassila +} { + http://www.w3.org/Home/Lassila http://description.org/schema/Creator Ora Lassila + +=================== unreferenced: + rdfdoc#id1 #type #Bag + rdfdoc#id1 #_1 rdfdoc#id2 + rdfdoc#id2 #predicate http://description.org/schema/Creator + rdfdoc#id2 #subject http://www.w3.org/Home/Lassila + rdfdoc#id2 #object Ora Lassila + rdfdoc#id2 #type #Statement +} + +############################################################################## +rp test NSDescription { + + + Ora Lassila + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +PCDATA: +Ora Lassila +} { + http://www.w3.org/Home/Lassila http://description.org/schema/Creator Ora Lassila +} + +############################################################################## +rp test PropertyAttr { + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +PCDATA: +Ora Lassila +} { + http://www.w3.org/Home/Lassila s:Creator Ora Lassila +} + +############################################################################## +rp test properties { + + + World Wide Web Consortium + W3C Home Page + 1998-10-03T02:27 + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Publisher +PCDATA: +World Wide Web Consortium +::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- s:Title +PCDATA: +W3C Home Page +::xotcl::rdf::parser::RDFProperty-::res1::prop3 --- s:Date +PCDATA: +1998-10-03T02:27 +} { + http://www.w3.org s:Publisher World Wide Web Consortium + http://www.w3.org s:Title W3C Home Page + http://www.w3.org s:Date 1998-10-03T02:27 +} + +############################################################################## +rp test propertyAttr2 { + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Publisher +PCDATA: +World Wide Web Consortium +::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- s:Title +PCDATA: +W3C Home Page +::xotcl::rdf::parser::RDFProperty-::res1::prop3 --- s:Date +PCDATA: +1998-10-03T02:27 +} { + http://www.w3.org s:Publisher World Wide Web Consortium + http://www.w3.org s:Title W3C Home Page + http://www.w3.org s:Date 1998-10-03T02:27 +} + +############################################################################## +rp test bag1 { + + + + + + + + + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://mycollege.edu/courses/6.001 +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:students +::xotcl::rdf::parser::RDFBag-::res1::prop1::res1 --- rdf:Bag +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Amy +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Tim +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop3 --- rdf:li +ATTR: resource = http://mycollege.edu/students/John +MEMBER-INDEX: rdf:_3 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop4 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Mary +MEMBER-INDEX: rdf:_4 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop5 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Sue +MEMBER-INDEX: rdf:_5 +} { + http://mycollege.edu/courses/6.001 s:students rdfdoc#id2 + rdfdoc#id2 #type #Bag + rdfdoc#id2 #_1 http://mycollege.edu/students/Amy + rdfdoc#id2 #_2 http://mycollege.edu/students/Tim + rdfdoc#id2 #_3 http://mycollege.edu/students/John + rdfdoc#id2 #_4 http://mycollege.edu/students/Mary + rdfdoc#id2 #_5 http://mycollege.edu/students/Sue +} + + +############################################################################## +rp test bagGivenAsType1 { + + + + + + + + + + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://mycollege.edu/courses/6.001 +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:students +::xotcl::rdf::parser::RDFBag-::res1::prop1::res1 --- rdf:Bag +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Amy +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Tim +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop3 --- rdf:li +ATTR: resource = http://mycollege.edu/students/John +MEMBER-INDEX: rdf:_3 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop4 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Mary +MEMBER-INDEX: rdf:_4 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop5 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Sue +MEMBER-INDEX: rdf:_5 +} { + http://mycollege.edu/courses/6.001 s:students rdfdoc#id2 + rdfdoc#id2 #type #Bag + rdfdoc#id2 #_1 http://mycollege.edu/students/Amy + rdfdoc#id2 #_2 http://mycollege.edu/students/Tim + rdfdoc#id2 #_3 http://mycollege.edu/students/John + rdfdoc#id2 #_4 http://mycollege.edu/students/Mary + rdfdoc#id2 #_5 http://mycollege.edu/students/Sue +} + +############################################################################## +rp test bagGivenAsType2 { + + + + + + + + + + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://mycollege.edu/courses/6.001 +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:students +::xotcl::rdf::parser::RDFBag-::res1::prop1::res1 --- rdf:Bag +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Amy +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Tim +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop3 --- rdf:li +ATTR: resource = http://mycollege.edu/students/John +MEMBER-INDEX: rdf:_3 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop4 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Mary +MEMBER-INDEX: rdf:_4 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop5 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Sue +MEMBER-INDEX: rdf:_5 +} { + http://mycollege.edu/courses/6.001 s:students rdfdoc#id2 + rdfdoc#id2 #type #Bag + rdfdoc#id2 #_1 http://mycollege.edu/students/Amy + rdfdoc#id2 #_2 http://mycollege.edu/students/Tim + rdfdoc#id2 #_3 http://mycollege.edu/students/John + rdfdoc#id2 #_4 http://mycollege.edu/students/Mary + rdfdoc#id2 #_5 http://mycollege.edu/students/Sue +} + + +############################################################################## +rp test bagAndAltGivenAsType { + + + + + + + + + + + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://mycollege.edu/courses/6.001 +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:students +::xotcl::rdf::parser::RDFAlt-::res1::prop1::res1 --- rdf:Alt +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Amy +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Tim +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop3 --- rdf:li +ATTR: resource = http://mycollege.edu/students/John +MEMBER-INDEX: rdf:_3 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop4 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Mary +MEMBER-INDEX: rdf:_4 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop5 --- rdf:li +ATTR: resource = http://mycollege.edu/students/Sue +MEMBER-INDEX: rdf:_5 +} { + http://mycollege.edu/courses/6.001 s:students rdfdoc#id2 + rdfdoc#id2 #type #Alt + rdfdoc#id2 #type #Bag + rdfdoc#id2 #_1 http://mycollege.edu/students/Amy + rdfdoc#id2 #_2 http://mycollege.edu/students/Tim + rdfdoc#id2 #_3 http://mycollege.edu/students/John + rdfdoc#id2 #_4 http://mycollege.edu/students/Mary + rdfdoc#id2 #_5 http://mycollege.edu/students/Sue +} + +############################################################################## +rp test alt1 { + + + + + + + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://x.org/packages/X11 +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:DistributionSite +::xotcl::rdf::parser::RDFAlt-::res1::prop1::res1 --- rdf:Alt +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li +ATTR: resource = ftp://ftp.x.org +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li +ATTR: resource = ftp://ftp.cs.purdue.edu +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop3 --- rdf:li +ATTR: resource = ftp://ftp.eu.net +MEMBER-INDEX: rdf:_3 +} { + http://x.org/packages/X11 s:DistributionSite rdfdoc#id2 + rdfdoc#id2 #type #Alt + rdfdoc#id2 #_1 ftp://ftp.x.org + rdfdoc#id2 #_2 ftp://ftp.cs.purdue.edu + rdfdoc#id2 #_3 ftp://ftp.eu.net +} + +############################################################################## +rp test bag2 { + + + + + + + + Ora Lassila + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFBag-::res1 --- rdf:Bag +ATTR: ID = pages +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res1::prop1 --- rdf:li +ATTR: resource = http://foo.org/foo.html +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop2 --- rdf:li +ATTR: resource = http://bar.org/bar.html +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFDescription-::res2 --- rdf:Description +ATTR: about = #pages +::xotcl::rdf::parser::RDFProperty-::res2::prop1 --- s:Creator +PCDATA: +Ora Lassila +} { +=================== unreferenced: + rdfdoc#pages #type #Bag + rdfdoc#pages #_1 http://foo.org/foo.html + rdfdoc#pages #_2 http://bar.org/bar.html + rdfdoc#pages s:Creator Ora Lassila +} + +############################################################################## +rp test aboutEach { + + + (c) 1998, The Foo Organization + + + (c) 1998, The Foo Organization + + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: aboutEachPrefix = http://foo.org/doc +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Copyright +PCDATA: +(c) 1998, The Foo Organization +::xotcl::rdf::parser::RDFDescription-::res2 --- rdf:Description +ATTR: aboutEach = #docpages +::xotcl::rdf::parser::RDFProperty-::res2::prop1 --- s:Copyright +PCDATA: +(c) 1998, The Foo Organization +::xotcl::rdf::parser::RDFBag-::res3 --- rdf:Bag +ATTR: ID = docpages +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res3::prop1 --- rdf:li +ATTR: resource = http://foo.org/doc/page1 +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res3::prop2 --- rdf:li +ATTR: resource = http://foo.org/doc/page2 +MEMBER-INDEX: rdf:_2 +} { + http://foo.org/doc/page1 http://description.org/schema/Copyright (c) 1998, The Foo Organization + http://foo.org/doc/page2 http://description.org/schema/Copyright (c) 1998, The Foo Organization + +=================== unreferenced: + rdfdoc#docpages #type #Bag + rdfdoc#docpages #_1 http://foo.org/doc/page1 + rdfdoc#docpages #_2 http://foo.org/doc/page2 +} + +############################################################################## +rp test "BagID on List" { + + + + + + + + + Me + + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: aboutEach = #docpages +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:somebag +::xotcl::rdf::parser::RDFBag-::res1::prop1::res1 --- rdf:Bag +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li +ATTR: resource = http://foo.org/foo.html +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li +ATTR: resource = http://bar.org/bar.html +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- s:Creator +PCDATA: +Me +::xotcl::rdf::parser::RDFBag-::res2 --- rdf:Bag +ATTR: ID = docpages +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res2::prop1 --- rdf:li +ATTR: resource = http://foo.org/doc/page1 +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res2::prop2 --- rdf:li +ATTR: resource = http://foo.org/doc/page2 +MEMBER-INDEX: rdf:_2 +} { + http://foo.org/doc/page1 http://description.org/schema/somebag rdfdoc#id2 + rdfdoc#id2 #type #Bag + rdfdoc#id2 #_1 http://foo.org/foo.html + rdfdoc#id2 #_2 http://bar.org/bar.html + http://foo.org/doc/page1 http://description.org/schema/Creator Me + http://foo.org/doc/page2 http://description.org/schema/somebag rdfdoc#id2 + http://foo.org/doc/page2 http://description.org/schema/Creator Me + +=================== unreferenced: + rdfdoc#docpages #type #Bag + rdfdoc#docpages #_1 http://foo.org/doc/page1 + rdfdoc#docpages #_2 http://foo.org/doc/page2 +} + +############################################################################## +rp test "Sharing Values" { + + + + + + + + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFSeq-::res1 --- rdf:Seq +ATTR: ID = JSPapersByDate +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq +::xotcl::rdf::parser::RDFMember-::res1::prop1 --- rdf:li +ATTR: resource = http://www.dogworld.com/Aug96.doc +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop2 --- rdf:li +ATTR: resource = http://www.webnuts.net/Jan97.html +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFMember-::res1::prop3 --- rdf:li +ATTR: resource = http://www.carchat.com/Sept97.html +MEMBER-INDEX: rdf:_3 +::xotcl::rdf::parser::RDFSeq-::res2 --- rdf:Seq +ATTR: ID = JSPapersBySubj +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq +::xotcl::rdf::parser::RDFMember-::res2::prop1 --- rdf:li +ATTR: resource = http://www.carchat.com/Sept97.html +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res2::prop2 --- rdf:li +ATTR: resource = http://www.dogworld.com/Aug96.doc +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFMember-::res2::prop3 --- rdf:li +ATTR: resource = http://www.webnuts.net/Jan97.html +MEMBER-INDEX: rdf:_3 +} { +=================== unreferenced: + rdfdoc#JSPapersByDate #type #Seq + rdfdoc#JSPapersByDate #_1 http://www.dogworld.com/Aug96.doc + rdfdoc#JSPapersByDate #_2 http://www.webnuts.net/Jan97.html + rdfdoc#JSPapersByDate #_3 http://www.carchat.com/Sept97.html + rdfdoc#JSPapersBySubj #type #Seq + rdfdoc#JSPapersBySubj #_1 http://www.carchat.com/Sept97.html + rdfdoc#JSPapersBySubj #_2 http://www.dogworld.com/Aug96.doc + rdfdoc#JSPapersBySubj #_3 http://www.webnuts.net/Jan97.html +} + +############################################################################## + +rp test "aggregates" { + + + + + Mary Andrew + Jacky Crystal + + + + + + + + + + + + + The Coolest Web Page + Il Pagio di Web Fuba + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.foo.com/cool.html +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- dc:Creator +::xotcl::rdf::parser::RDFSeq-::res1::prop1::res1 --- rdf:Seq +ATTR: ID = CreatorsAlphabeticalBySurname +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li +PCDATA: +Mary Andrew +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li +PCDATA: +Jacky Crystal +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- dc:Identifier +::xotcl::rdf::parser::RDFBag-::res1::prop2::res1 --- rdf:Bag +ATTR: ID = MirroredSites +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop1 --- rdf:li +ATTR: rdf:resource = http://www.foo.com.au/cool.html +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop2 --- rdf:li +ATTR: rdf:resource = http://www.foo.com.it/cool.html +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFProperty-::res1::prop3 --- dc:Title +::xotcl::rdf::parser::RDFAlt-::res1::prop3::res1 --- rdf:Alt +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt +::xotcl::rdf::parser::RDFMember-::res1::prop3::res1::prop1 --- rdf:li +ATTR: xml:lang = en +PCDATA: +The Coolest Web Page +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop3::res1::prop2 --- rdf:li +ATTR: xml:lang = it +PCDATA: +Il Pagio di Web Fuba +MEMBER-INDEX: rdf:_2 +} { + http://www.foo.com/cool.html http://purl.org/metadata/dublin_core#Creator rdfdoc#CreatorsAlphabeticalBySurname + rdfdoc#CreatorsAlphabeticalBySurname #type #Seq + rdfdoc#CreatorsAlphabeticalBySurname #_1 Mary Andrew + rdfdoc#CreatorsAlphabeticalBySurname #_2 Jacky Crystal + http://www.foo.com/cool.html http://purl.org/metadata/dublin_core#Identifier rdfdoc#MirroredSites + rdfdoc#MirroredSites #type #Bag + rdfdoc#MirroredSites #_1 http://www.foo.com.au/cool.html + rdfdoc#MirroredSites #_2 http://www.foo.com.it/cool.html + http://www.foo.com/cool.html http://purl.org/metadata/dublin_core#Title rdfdoc#id4 + rdfdoc#id4 #type #Alt + rdfdoc#id4 #_1 The Coolest Web Page + rdfdoc#id4 #_2 Il Pagio di Web Fuba +} + +############################################################################## +rp test "bagReification" { + + + + literal, well-formed tag + + + xyz + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFBag-::res1 --- rdf:Bag +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res1::prop1 --- rdf:li +ATTR: parseType = Literal +PCDATA: + + literal, well-formed tag + +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res1::prop2 --- rdf:li +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1 --- s:x +PCDATA: +xyz +} { +=================== unreferenced: + rdfdoc#id1 #type #Bag + rdfdoc#id1 #_1 + literal, well-formed tag + + rdfdoc#id1 #_2 rdfdoc#id2 + rdfdoc#id2 http://description.org/schema/x xyz +} + +# the following reification is done by SirPac, but it does not seem necessary +# (uncomment reify property in RDFTriple, if needed +#{ +#=================== unreferenced: +# rdfdoc#id1 #type #Bag +# rdfdoc#id1 #_1 +# literal, well-formed tag +# +# rdfdoc#id1 #_2 rdfdoc#id2 +# rdfdoc#id2 http://description.org/schema/x xyz +# rdfdoc#id3 #predicate http://description.org/schema/x +# rdfdoc#id3 #subject rdfdoc#id2 +# rdfdoc#id3 #object xyz +# rdfdoc#id3 #type #Statement +#} + +############################################################################## +rp test "parseLiteral" { + + + + xyz + + + + + + + xyz + + + + + + + + + + + + + + literal, well-formed tag + + + literal, well-formed tag + + + xyz + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://mycollege.edu/ +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:students +ATTR: parseType = Literal +PCDATA: + + xyz +::xotcl::rdf::parser::RDFDescription-::res2 --- rdf:Description +ATTR: about = http://mycollege.edu/ +::xotcl::rdf::parser::RDFProperty-::res2::prop1 --- s:students +ATTR: parseType = Literal +PCDATA: + + + xyz + + + + + + + + +::xotcl::rdf::parser::RDFBag-::res3 --- rdf:Bag +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res3::prop1 --- rdf:li +ATTR: parseType = Literal +PCDATA: + + literal, well-formed tag + +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFMember-::res3::prop2 --- rdf:li +ATTR: parseType = AllOtherMustbeLiteral +PCDATA: + + literal, well-formed tag + +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFMember-::res3::prop3 --- rdf:li +MEMBER-INDEX: rdf:_3 +::xotcl::rdf::parser::RDFDescription-::res3::prop3::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res3::prop3::res1::prop1 --- s:x +PCDATA: +xyz +} { + http://mycollege.edu/ http://description.org/schema/students + xyz + + http://mycollege.edu/ http://description.org/schema/students + + xyz + + + + + + + + + + +=================== unreferenced: + rdfdoc#id3 #type #Bag + rdfdoc#id3 #_1 + literal, well-formed tag + + rdfdoc#id3 #_2 + literal, well-formed tag + + rdfdoc#id3 #_3 rdfdoc#id4 + rdfdoc#id4 http://description.org/schema/x xyz +} + +############################################################################## +rp test typedNode1 { + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.xyz.com +TYPES: http://purl.org/dc/elements/1.0/typed +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- DC:Creator +ATTR: rdf:resource = http://www.xyz.com/homepage/ +} { + http://www.xyz.com http://purl.org/dc/elements/1.0/Creator http://www.xyz.com/homepage/ + http://www.xyz.com #type http://purl.org/dc/elements/1.0/typed +} + +################################################################### +## UWE: im wiedererzeugten XML/RDF fehlt m.M. das parseType="Resosurce" + +rp test nestedProperty { + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- Description +ATTR: about = http://www.webnuts.net/Jan97.html +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- dc:Subject +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- value +PCDATA: +020 - Library Science +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- l:Classification +PCDATA: +Dewey Decimal Code +} { + http://www.webnuts.net/Jan97.html http://purl.org/metadata/dublin_core#Subject rdfdoc#id2 + rdfdoc#id2 #value 020 - Library Science + rdfdoc#id2 http://mycorp.com/schemas/my-schema#Classification Dewey Decimal Code +} + + +rp test nestedProperty2 { + + + + 020 - Library Science + Dewey Decimal Code + + + +} { +::xotcl::rdf::parser::RDFTag- --- RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- Description +ATTR: about = http://www.webnuts.net/Jan97.html +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- dc:Subject +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- value +PCDATA: +020 - Library Science +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- l:Classification +PCDATA: +Dewey Decimal Code +} { + http://www.webnuts.net/Jan97.html http://purl.org/metadata/dublin_core#Subject rdfdoc#id2 + rdfdoc#id2 #value 020 - Library Science + rdfdoc#id2 http://mycorp.com/schemas/my-schema#Classification Dewey Decimal Code + +} + +rp test nestedProperty3 { + + + + + 020 - Library Science + Dewey Decimal Code + + + + +} { +::xotcl::rdf::parser::RDFTag- --- RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- Description +ATTR: about = http://www.webnuts.net/Jan97.html +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- dc:Subject +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- Description +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- value +PCDATA: +020 - Library Science +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- l:Classification +PCDATA: +Dewey Decimal Code +} { + http://www.webnuts.net/Jan97.html http://purl.org/metadata/dublin_core#Subject rdfdoc#id2 + rdfdoc#id2 #value 020 - Library Science + rdfdoc#id2 http://mycorp.com/schemas/my-schema#Classification Dewey Decimal Code + +} + +rp test nestedProperty4 { + + + + 020 - Library Science + + en + Dewey Decimal Code + + + + +} { +::xotcl::rdf::parser::RDFTag- --- RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- Description +ATTR: about = http://www.webnuts.net/Jan97.html +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- dc:Subject +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- value +PCDATA: +020 - Library Science +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- l:Classification +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1::prop2::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2::res1::prop1 --- l:lang +PCDATA: +en +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2::res1::prop2 --- l:string +PCDATA: +Dewey Decimal Code +} { + http://www.webnuts.net/Jan97.html http://purl.org/metadata/dublin_core#Subject rdfdoc#id2 + rdfdoc#id2 #value 020 - Library Science + rdfdoc#id2 http://mycorp.com/schemas/my-schema#Classification rdfdoc#id3 + rdfdoc#id3 http://mycorp.com/schemas/my-schema#lang en + rdfdoc#id3 http://mycorp.com/schemas/my-schema#string Dewey Decimal Code +} + +rp test thirdAbbrev1 { + + + + + + Ora Lassila + lassila@w3.org + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +ATTR: about = http://www.w3.org/staffId/85740 +TYPES: http://description.org/schema/Person +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name +PCDATA: +Ora Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email +PCDATA: +lassila@w3.org +} { + http://www.w3.org/Home/Lassila http://description.org/schema/Creator http://www.w3.org/staffId/85740 + http://www.w3.org/staffId/85740 http://description.org/schema/Name Ora Lassila + http://www.w3.org/staffId/85740 http://description.org/schema/Email lassila@w3.org + http://www.w3.org/staffId/85740 #type http://description.org/schema/Person +} + +rp test thirdAbbrev2 { + + + + + + Ora Lassila + lassila@w3.org + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +TYPES: http://description.org/schema/Person +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name +PCDATA: +Ora Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email +PCDATA: +lassila@w3.org +} { + http://www.w3.org/Home/Lassila http://description.org/schema/Creator rdfdoc#id2 + rdfdoc#id2 http://description.org/schema/Name Ora Lassila + rdfdoc#id2 http://description.org/schema/Email lassila@w3.org + rdfdoc#id2 #type http://description.org/schema/Person +} + +rp test thirdAbbrev3 { + + + + + Ora Lassila + lassila@w3.org + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +ATTR: about = http://www.w3.org/staffId/85740 +TYPES: http://description.org/schema/Person +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name +PCDATA: +Ora Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email +PCDATA: +lassila@w3.org +} { + http://www.w3.org/Home/Lassila http://description.org/schema/Creator http://www.w3.org/staffId/85740 + http://www.w3.org/staffId/85740 http://description.org/schema/Name Ora Lassila + http://www.w3.org/staffId/85740 http://description.org/schema/Email lassila@w3.org + http://www.w3.org/staffId/85740 #type http://description.org/schema/Person +} + +rp test thirdAbbrev4 { + + + + + Ora Lassila + lassila@w3.org + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +TYPES: http://description.org/schema/Person +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name +PCDATA: +Ora Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email +PCDATA: +lassila@w3.org +} { + http://www.w3.org/Home/Lassila http://description.org/schema/Creator rdfdoc#id2 + rdfdoc#id2 http://description.org/schema/Name Ora Lassila + rdfdoc#id2 http://description.org/schema/Email lassila@w3.org + rdfdoc#id2 #type http://description.org/schema/Person +} + + +rp test secondAbbrev1 { + + + + + Ora Lassila + lassila@w3.org + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +ATTR: about = http://www.w3.org/staffId/85740 +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name +PCDATA: +Ora Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email +PCDATA: +lassila@w3.org +} { + http://www.w3.org/Home/Lassila http://description.org/schema/Creator http://www.w3.org/staffId/85740 + http://www.w3.org/staffId/85740 http://description.org/schema/Name Ora Lassila + http://www.w3.org/staffId/85740 http://description.org/schema/Email lassila@w3.org +} + +rp test secondAbbrev2 { + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +ATTR: about = http://www.w3.org/staffId/85740 +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name +PCDATA: +Ora Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email +PCDATA: +lassila@w3.org +} { + http://www.w3.org/Home/Lassila http://description.org/schema/Creator http://www.w3.org/staffId/85740 + http://www.w3.org/staffId/85740 http://description.org/schema/Name Ora Lassila + http://www.w3.org/staffId/85740 http://description.org/schema/Email lassila@w3.org +} + +rp test secondAbbrev3 { + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name +PCDATA: +Ora Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email +PCDATA: +lassila@w3.org +} { + http://www.w3.org/Home/Lassila http://description.org/schema/Creator rdfdoc#id2 + rdfdoc#id2 http://description.org/schema/Name Ora Lassila + rdfdoc#id2 http://description.org/schema/Email lassila@w3.org +} + + +################################################################### +rp test resource1 { + + + + + + + Ora Lassila + lassila@w3.org + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +ATTR: rdf:resource = http://www.w3.org/staffId/85740 +::xotcl::rdf::parser::RDFDescription-::res2 --- rdf:Description +ATTR: about = http://www.w3.org/staffId/85740 +::xotcl::rdf::parser::RDFProperty-::res2::prop1 --- v:Name +PCDATA: +Ora Lassila +::xotcl::rdf::parser::RDFProperty-::res2::prop2 --- v:Email +PCDATA: +lassila@w3.org +} { + http://www.w3.org/Home/Lassila http://schema.org/Creator http://www.w3.org/staffId/85740 + http://www.w3.org/staffId/85740 v:Name Ora Lassila + http://www.w3.org/staffId/85740 v:Email lassila@w3.org +} + +################################################################### +rp test resource2 { + + + + + Ora Lassila + lassila@w3.org + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.w3.org/Home/Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +ATTR: about = http://www.w3.org/staffId/85740 +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- v:Name +PCDATA: +Ora Lassila +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- v:Email +PCDATA: +lassila@w3.org +} { + http://www.w3.org/Home/Lassila http://schema.org/Creator http://www.w3.org/staffId/85740 + http://www.w3.org/staffId/85740 v:Name Ora Lassila + http://www.w3.org/staffId/85740 v:Email lassila@w3.org +} + + + +################################################################### +rp test typedNode1 { + + + Uwe Zdun + uwe@xotcl.org + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://www.xotcl.org/uwe +TYPES: http://description.org/schema/Person +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Name +PCDATA: +Uwe Zdun +::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- s:Email +PCDATA: +uwe@xotcl.org +} { + http://www.xotcl.org/uwe http://description.org/schema/Name Uwe Zdun + http://www.xotcl.org/uwe http://description.org/schema/Email uwe@xotcl.org + http://www.xotcl.org/uwe #type http://description.org/schema/Person +} + +rp test typedNode2 { + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: rdf:about = http://www.xotcl.org/uwe +TYPES: http://description.org/schema/Person +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- Name +PCDATA: +Uwe Zdun +::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- Email +PCDATA: +uwe@xotcl.org +} { + http://www.xotcl.org/uwe http://description.org/schema/Name Uwe Zdun + http://www.xotcl.org/uwe http://description.org/schema/Email uwe@xotcl.org + http://www.xotcl.org/uwe #type http://description.org/schema/Person +} + +################################################################### +rp test complexListItems { + + + + + en + Object Oriented Design and System Development + + + + + en + Introduction to the concepts of object-oriented programing + + + de + Einf�hrung in die Konzepte objekt-orientierter Programmierung + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://nm.wu-wien.ac.at/Lehre/oo1/ +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- gen:Title +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- xml:lang +PCDATA: +en +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- gen:String +PCDATA: +Object Oriented Design and System Development +::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- gen:Description +::xotcl::rdf::parser::RDFBag-::res1::prop2::res1 --- rdf:Bag +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag +::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop1 --- rdf:li +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1::prop1::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1::res1::prop1 --- xml:lang +PCDATA: +en +::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1::res1::prop2 --- gen:String +PCDATA: +Introduction to the concepts of object-oriented programing +::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop2 --- rdf:li +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1::prop2::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop2::res1::prop1 --- xml:lang +PCDATA: +de +::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop2::res1::prop2 --- gen:String +PCDATA: +Einf�hrung in die Konzepte objekt-orientierter Programmierung +} { + http://nm.wu-wien.ac.at/Lehre/oo1/ http://universal.org/metadata/ims#Title rdfdoc#id2 + rdfdoc#id2 xml:lang en + rdfdoc#id2 http://universal.org/metadata/ims#String Object Oriented Design and System Development + http://nm.wu-wien.ac.at/Lehre/oo1/ http://universal.org/metadata/ims#Description rdfdoc#id3 + rdfdoc#id3 #type #Bag + rdfdoc#id3 #_1 rdfdoc#id4 + rdfdoc#id4 xml:lang en + rdfdoc#id4 http://universal.org/metadata/ims#String Introduction to the concepts of object-oriented programing + rdfdoc#id3 #_2 rdfdoc#id5 + rdfdoc#id5 xml:lang de + rdfdoc#id5 http://universal.org/metadata/ims#String Einf�hrung in die Konzepte objekt-orientierter Programmierung +} + +################################################################### +rp test complexListItems2 { + + + + + en + Object Oriented Design and System Development + + + + + + en + Introduction to the concepts of object-oriented programing + + + + de + Einf�hrung in die Konzepte objekt-orientierter Programmierung + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = http://nm.wu-wien.ac.at/Lehre/oo1/ +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- gen:Title +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- xml:lang +PCDATA: +en +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- gen:String +PCDATA: +Object Oriented Design and System Development +::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- gen:Description +::xotcl::rdf::parser::RDFSeq-::res1::prop2::res1 --- rdf:Seq +TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq +::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop1 --- rdf:li +MEMBER-INDEX: rdf:_1 +::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1::prop1::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1::res1::prop1 --- cls:entry +::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1::prop1::res1::prop1::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1::res1::prop1::res1::prop1 --- gen:language +PCDATA: +en +::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1::res1::prop1::res1::prop2 --- gen:String +PCDATA: +Introduction to the concepts of object-oriented programing +::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop2 --- rdf:li +MEMBER-INDEX: rdf:_2 +::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1::prop2::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop2::res1::prop1 --- xml:lang +PCDATA: +de +::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop2::res1::prop2 --- gen:String +PCDATA: +Einf�hrung in die Konzepte objekt-orientierter Programmierung +} { + http://nm.wu-wien.ac.at/Lehre/oo1/ http://universal.org/metadata/ims#Title rdfdoc#id2 + rdfdoc#id2 xml:lang en + rdfdoc#id2 http://universal.org/metadata/ims#String Object Oriented Design and System Development + http://nm.wu-wien.ac.at/Lehre/oo1/ http://universal.org/metadata/ims#Description rdfdoc#id3 + rdfdoc#id3 #type #Seq + rdfdoc#id3 #_1 rdfdoc#id4 + rdfdoc#id4 cls:entry rdfdoc#id5 + rdfdoc#id5 http://universal.org/metadata/ims#language en + rdfdoc#id5 http://universal.org/metadata/ims#String Introduction to the concepts of object-oriented programing + rdfdoc#id3 #_2 rdfdoc#id6 + rdfdoc#id6 xml:lang de + rdfdoc#id6 http://universal.org/metadata/ims#String Einf�hrung in die Konzepte objekt-orientierter Programmierung +} + +################################################################### +rp test dmoz { + + + + Computers + + + + +} { +::xotcl::rdf::parser::RDFTag- --- r:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- r:Description +ATTR: r:ID = Top/Computers +TYPES: http://dmoz.org/rdf/Topic +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- tag +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- r:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- catid +PCDATA: +4 +::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- d:Title +PCDATA: +Computers +::xotcl::rdf::parser::RDFProperty-::res1::prop3 --- link +ATTR: r:resource = http://www.cs.tcd.ie/FME/ +::xotcl::rdf::parser::RDFProperty-::res1::prop4 --- link +ATTR: r:resource = http://pages.whowhere.com/computers/pnyhlen/Timeline.html +} { + Top/Computers http://dmoz.org/rdf/tag rdfdoc#id2 + rdfdoc#id2 http://dmoz.org/rdf/catid 4 + Top/Computers http://purl.org/dc/elements/1.0/Title Computers + Top/Computers http://dmoz.org/rdf/link http://www.cs.tcd.ie/FME/ + Top/Computers http://dmoz.org/rdf/link http://pages.whowhere.com/computers/pnyhlen/Timeline.html + Top/Computers #type http://dmoz.org/rdf/Topic +} + +############################################################################## +rp test "IDforNestedDescription" { + + + + + +} { +::xotcl::rdf::parser::RDFTag- --- rdf:RDF +::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description +ATTR: about = page +::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- g2k:area +ATTR: rdf:ID = b14711 +::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- g2k:term +PCDATA: +Hessen +::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- g2k:type +PCDATA: +Land +} { + b14711 http://g2k-schema#term Hessen + b14711 http://g2k-schema#type Land + page http://g2k-schema#area b14711 +} + +puts "FINISHED TEST! ([rp set nodeTime] + [rp set recreateTime] + [rp set tripleTime] = [expr {[rp set nodeTime] + [rp set recreateTime] + [rp set tripleTime]}])" + Index: tests/UNIVERSAL.test =================================================================== diff -u -N --- tests/UNIVERSAL.test (revision 35c67391973a07983d0b0dfe70706e6a69fbdbfc) +++ tests/UNIVERSAL.test (revision 0) @@ -1,48 +0,0 @@ -# -*- Tcl -*- -#if {[set ::tcl_platform(platform)] == "windows"} {lappend auto_path .} - -package require XOTcl; namespace import -force xotcl::* -set pkgdir [file dir [info script]]/.. -lappend auto_path $pkgdir - -package require nx::test - -set tclsh [info nameofexecutable] -set dir [file dir [info script]] -set univApps $dir/../apps/actiweb/univ - -set startCmd "$tclsh $univApps/UNIVERSAL.xotcl \ - -instanceFile $univApps/UNIVERSAL.rdf \ - -cssFile UNIVERSAL.css \ - -root $dir/../apps/actiweb/univ \ - -pkgdir $pkgdir" -puts stderr "starting $startCmd" -set PIPE [open "|$startCmd"] - -package require xotcl::comm::httpAccess -proc printError msg {puts stderr !!!$msg!!!} - -Class T -superclass Test -parameter { - {count 1} - {errorReport { - puts "\tcontent-length: \[r0::sink set contentLength\]\n\ - \tstatus-code: \[\[r0 set token\] set responseCode\]\n\[r0 getContent]" - }}} - -T new -msg "Load homepage frame von univ ... " \ - -setResult {expr [r0::sink set contentLength] == 358} \ - -cmd [list SimpleRequest r0 -url http://localhost:8095/ ] -T new -msg "Load Catalog ... " \ - -setResult {expr [r0::sink set contentLength] == 1744} \ - -cmd [list SimpleRequest r0 -url http://localhost:8095/univ+catalog ] -T new -msg "Detail Page ... " \ - -setResult {expr [r0::sink set contentLength] == 2327} \ - -cmd [list SimpleRequest r0 -url http://localhost:8095/univ+details+http://nm.wu-wien.ac.at/Lehre/oo1/] -T new -msg "terminate" -cmd [list SimpleRequest r0 -url http://localhost:8095/receiver::exit] \ - -setResult {set x 1} \ - -post {catch {close $::PIPE}; exit} - -after 1000 {Test run} -vwait forever - - Index: tests/actiweb.test =================================================================== diff -u -N --- tests/actiweb.test (revision 35c67391973a07983d0b0dfe70706e6a69fbdbfc) +++ tests/actiweb.test (revision 0) @@ -1,83 +0,0 @@ -# -*- Mode: tcl -*- -# regression test for actiweb examples -#if {[set ::tcl_platform(platform)] == "windows"} { -# lappend auto_path . -#} -package require XOTcl; namespace import -force ::xotcl::* -set pkgDir [file dirname [info script]]/.. -lappend auto_path $pkgDir -package require nx::test -#package require xotcl::package; package verbose 1 -package require xotcl::comm::httpAccess -#package require xotcl::trace - -set tclsh [info nameofexecutable] -set dir [file dir [info script]] -set actiwebApps $dir/../apps/actiweb - -# remove persitent vars to get reproducible behavior -catch [file delete -force receiver] -proc terminate {} { - catch [file delete -force receiver] - exit -} - -puts "$tclsh ${actiwebApps}/Counter.xotcl" -puts "------------------------------------ $tclsh ${actiwebApps}/Counter.xotcl -pkgdir $pkgDir" -set PIPE1 [open "| $tclsh ${actiwebApps}/Counter.xotcl -pkgdir $pkgDir"] -set PIPE2 [open "| $tclsh ${actiwebApps}/Counter2.xotcl -pkgdir $pkgDir"] -set PIPE3 [open "| $tclsh ${actiwebApps}/Counter3.xotcl -pkgdir $pkgDir"] -set PIPE4 [open "| $tclsh ${actiwebApps}/Counter4.xotcl -pkgdir $pkgDir"] -set PIPE5 [open "| $tclsh ${actiwebApps}/MC.xotcl -pkgdir $pkgDir"] - -proc printError msg {puts stderr !!!$msg!!!} - -Class T -superclass Test -parameter { - {count 1} - {errorReport { - puts "\tcontent-length: \[r0::sink set contentLength\]\n\ - \tstatus-code: \[\[r0 set token\] set responseCode\]" - }}} - - -T new -msg "Trying Counter.xotcl ... " \ - -setResult {regexp {^The value in counter-1.html is now: 0} [r0::sink set d]} \ - -cmd [list SimpleRequest r0 -url http://localhost:8090/counter-1.html] -T new -msg "terminate Counter" -setResult {set x 1} \ - -cmd [list SimpleRequest r0 -url http://localhost:8090/receiver::exit] \ - -post {catch {close $::PIPE1}} - -T new -msg "Trying Counter2.xotcl ... " \ - -setResult {r0 getContentLength} \ - -expected 238 \ - -cmd [list SimpleRequest r0 -url http://localhost:8091/web-c1] -T new -msg "terminate Counter1" -setResult {set x 1} \ - -cmd [list SimpleRequest r0 -url http://localhost:8091/receiver::exit] \ - -post {catch {close $::PIPE2}} - -T new -msg "Trying Counter3.xotcl ... " \ - -setResult {r0 getContentLength} \ - -expected 122 \ - -cmd [list SimpleRequest r0 -url http://localhost:8093/c1] -T new -msg "terminate Counter3" -setResult {set x 1} \ - -cmd [list SimpleRequest r0 -url http://localhost:8093/receiver::exit] \ - -post {catch {close $::PIPE3}} - -T new -msg "Trying Counter4.xotcl (a) ... " \ - -setResult {r0 getContentLength} \ - -expected 126 \ - -cmd [list SimpleRequest r0 -url http://localhost:8094/wc1] -T new -msg "terminate Counter4" -setResult {set x 1} \ - -cmd [list SimpleRequest r0 -url http://localhost:8094/receiver::exit] \ - -post {catch {close $::PIPE4}} - -T new -msg "Trying MC.xotcl ... " \ - -setResult {r0 getContentLength} \ - -expected 1767 \ - -cmd [list SimpleRequest r0 -url http://localhost:8092/Gustaf.html ] -T new -msg "terminate MC" -setResult {set x 1} \ - -cmd [list SimpleRequest r0 -url http://localhost:8092/receiver::exit] \ - -post {catch {close $::PIPE5}; exit} - -after 4000 {Test run} -catch {vwait forever} Index: tests/forwardtest.tcl =================================================================== diff -u -N --- tests/forwardtest.tcl (revision 0) +++ tests/forwardtest.tcl (revision b07223692b7ed8b9b1cfc81f202f73c066456c7c) @@ -0,0 +1,390 @@ +# -*- Tcl -*- +package require nx; namespace import ::nx::* +package require nx::test + +########################################### +# trivial object delegation +########################################### +Test case delegation { + Object create dog + Object create tail { + :method wag args { return $args } + } + dog forward wag tail %proc + + ? {dog wag 100} 100 +} + + +########################################### +# evaluating in scope +########################################### +Test case inscope { + Class create X { + :attribute {x 1} + :forward Incr -objscope incr + } + + X create x1 -x 100 + x1 Incr x + x1 Incr x + x1 Incr x + ? {x1 x} 103 +} + +########################################### +# adding +########################################### +Test case adding { + Object create obj { + :forward addOne expr 1 + + } + + ? {obj addOne 5} 6 +} + +########################################### +# more arguments +########################################### +Test case multiple-args { + Object create target { + :method foo args {return $args} + } + Object create obj { + :forward foo target %proc %self a1 a2 + } + + ? {obj foo x1 x2} [list ::obj a1 a2 x1 x2] + + obj forward foo target %proc %self %%self %%p + ? {obj foo x1 x2} [list ::obj %self %p x1 x2] +} + +########################################### +# mixin example +########################################### +Test case mixin-via-forward { + Object create mixin { + :method unknown {m args} {return [concat [self] $m $args]} + } + + Object create obj { + :forward Mixin mixin %1 %self + } + + ? {obj Mixin add M1} [list ::mixin add ::obj M1] + ? {catch {obj Mixin}} 1 + + obj forward Mixin mixin "%1 {Getter Setter}" %self + ? {obj Mixin add M1} [list ::mixin add ::obj M1] + ? {obj Mixin M1} [list ::mixin Setter ::obj M1] + ? {obj Mixin} [list ::mixin Getter ::obj] +} + + +########################################### +# sketching extensibe info +########################################### +Test case info-via-forward { + Object create Info { + :method @mixin {o} { + $o info mixin + } + :method @class {o} { ;# without prefix, doing here a [Info class] wod be wrong + $o info class + } + :method @help {o} { ;# define a new subcommand for info + foreach c [:info methods] {lappend result [string range $c 1 end]} + return $result + } + } + Object forward Info -methodprefix @ Info %1 %self + + Class create X { + :create x1 + } + ? {x1 Info class} ::X + ? {x1 Info help} [list help mixin class] +} + +########################################### +# variations of placement of options +########################################### +Test case incr { + Object create obj { + set :x 1 + :forward i1 -objscope incr x + } + + ? {obj i1} 2 +} + +########################################### +# introspeciton options +########################################### +Test case introspection { + Class create C { + :forward Info -methodprefix @ Info %1 %self + } + + ? {C info forward} Info + C forward XXXo x + ? {lsort [C info forward]} [list Info XXXo] + + ? {C info forward X*} [list XXXo] + ? {lsort [C info forward *o]} [list Info XXXo] + + # delete the forwarder + C method XXXo {} {} + ? {C info forward} [list Info] + + # get the definition of a instforwarder + ? {C info method definition Info} [list ::C forward Info -methodprefix @ Info %1 %self] + + # check introspection for objects + Object create obj { + :forward i1 -objscope incr x + :forward Mixin mixin %1 %self + :forward foo target %proc %self %%self %%p + :forward addOne expr 1 + + } + + ? {lsort [obj info forward]} "Mixin addOne foo i1" + ? {obj info forward -definition Mixin} "mixin %1 %self" + ? {obj info forward -definition addOne} "expr 1 +" + ? {obj info forward -definition foo} "target %proc %self %%self %%p" + ? {obj info forward -definition i1} "-objscope ::incr x" +} + +########################################### +# test serializer +########################################### +package require nx::serializer +Test case serializer { + Object create obj { + :method test {} {puts "i am [self proc]"} + } + set ::a [Serializer deepSerialize obj] + #puts <<$::a>> + eval $::a + ? {set ::a} [Serializer deepSerialize obj] +} + +########################################### +# test optional target cmd +########################################### +Test case optional-target { + Object create obj { + set :x 2 + :forward append -objscope + } + ? {obj append x y z} 2yz + + Object create n; Object create n::x {:method self {} {self}} + Object create o + o forward ::n::x + ? {o x self} ::n::x +} + +########################################### +# arg including instvar +########################################### +Test case percent-cmd { + Object create obj { + set :x 10 + :forward x* expr {%:eval {set :x}} * + } + ? {obj x* 10} "100" +} + +########################################### +# positional arguments +########################################### +Test case positioning-args { + Object create obj + obj forward @end-13 list {%@end 13} + ? {obj @end-13 1 2 3 } [list 1 2 3 13] + + obj forward @-1-13 list {%@-1 13} + ? {obj @-1-13 1 2 3 } [list 1 2 13 3] + + obj forward @1-13 list {%@1 13} + ? {obj @1-13 1 2 3 } [list 13 1 2 3] + ? {obj @1-13} [list 13] + + obj forward @2-13 list {%@2 13} + ? {obj @2-13 1 2 3 } [list 1 13 2 3] + + obj forward @list 10 {%@0 list} {%@end 99} + ? {obj @list} [list 10 99] + ? {obj @list a b c} [list 10 a b c 99] + + obj forward @list {%@end 99} {%@0 list} 10 + ? {obj @list} [list 10 99] + ? {obj @list a b c} [list 10 a b c 99] + + obj forward @list {%@2 2} {%@1 1} {%@0 list} + ? {obj @list} [list 1 2] + ? {obj @list a b c} [list 1 2 a b c] + + obj forward @list x y z {%@0 list} {%@1 1} {%@2 2} + ? {obj @list} [list 1 2 x y z] + ? {obj @list a b c} [list 1 2 x y z a b c] + + obj forward @list x y z {%@2 2} {%@1 1} {%@0 list} + ? {obj @list} [list x 1 y 2 z] + ? {obj @list a b c} [list x 1 y 2 z a b c] + + # adding some test cases which cover the interactions + # between %@POS and %1 substitutions + # + + obj forward @end-13 list {%@end 13} %1 %self + ? {obj @end-13 1 2 3 } [list 1 ::obj 2 3 13] + + obj forward @end-13 list %1 {%@end 13} %self + ? {obj @end-13 1 2 3 } [list 1 ::obj 2 3 13] + + obj forward @end-13 list {%@end 13} %1 %1 %1 %self + ? {obj @end-13 1 2 3 } [list 1 1 1 ::obj 2 3 13] + + obj forward @end-13 list {%@-1 13} %1 %self + ? {obj @end-13 1 2 3 } [list 1 ::obj 2 13 3] + + obj forward @end-13 list {%@1 13} %1 %self + ? {obj @end-13 1 2 3 } [list 13 1 ::obj 2 3] +} + +############################################### +# substitution depending on number of arguments +############################################### +Test case num-args { + Object create obj { + :forward f %self [list %argclindex [list a b c]] + :method a args {return [list [self proc] $args]} + :method b args {return [list [self proc] $args]} + :method c args {return [list [self proc] $args]} + } + ? {obj f} [list a {}] + ? {obj f 1 } [list b 1] + ? {obj f 1 2} [list c {1 2}] + ? {catch {obj f 1 2 3}} 1 +} + +############################################### +# option earlybinding +############################################### +Test case earlybinding { + Object create obj { + :forward s -earlybinding ::set ::X + } + ? {obj s 100} 100 + ? {obj s} 100 + + Object method f args { next } + + Class create NS + Class create NS::Main { + :object method m1 {} { :m2 } + :object method m2 {} { + ? {namespace eval :: {Object create toplevelObj1}} ::toplevelObj1 + + ? [list set _ [namespace current]] ::NS + ? [list set _ [NS create m1]] ::NS::m1 + NS filter f + ? [list set _ [NS create m2]] ::NS::m2 + NS filter "" + + namespace eval ::test { + ? [list set _ [NS create m3]] ::test::m3 + NS filter f + ? [list set _ [NS create m4]] ::test::m4 + NS filter "" + } + + namespace eval test { + ? [list set _ [NS create m5]] ::NS::test::m5 + NS filter f + ? [list set _ [NS create m6]] ::NS::test::m6 + NS filter "" + } + } + + :method i1 {} { :i2 } + :method i2 {} { + ? {namespace eval :: {Object create toplevelObj2}} ::toplevelObj2 + + ? [list set _ [namespace current]] ::NS + ? [list set _ [NS create i1]] ::NS::i1 + NS filter f + ? [list set _ [NS create i2]] ::NS::i2 + NS filter "" + + namespace eval ::test { + ? [list set _ [NS create i3]] ::test::i3 + NS filter f + ? [list set _ [NS create i4]] ::test::i4 + NS filter "" + } + + namespace eval test { + ? [list set _ [NS create i5]] ::NS::test::i5 + NS filter f + ? [list set _ [NS create i6]] ::NS::test::i6 + NS filter "" + } + + } + } + + #puts ==== + NS::Main m1 + NS::Main create m + m i1 + + #puts ==== + ? [list set _ [NS create n1]] ::n1 + NS filter f + ? [list set _ [NS create n2]] ::n2 + NS filter "" + + #puts ==== + namespace eval test { + ? [list set _ [NS create n1]] ::test::n1 + ? [list set _ [NS create n3]] ::test::n3 + NS filter f + ? [list set _ [NS create n4]] ::test::n4 + NS filter "" + } +} +########################################### +# forward to expr + callstack +########################################### +Test case callstack { + Object forward expr -objscope + + Class create C { + :method xx {} {self} + :object method t {o expr} { + return [$o expr $expr] + } + } + C create c1 + + ? {c1 expr {[self]}} ::c1 + ? {c1 expr {[self] == "::c1"}} 1 + ? {c1 expr {[:xx]}} ::c1 + ? {c1 expr {[:info class]}} ::C + ? {c1 expr {[:info is type C]}} 1 + ? {c1 expr {[:info is type ::C]}} 1 + + ? {C t ::c1 {[self]}} ::c1 + ? {C t ::c1 {[self] == "::c1"}} 1 + ? {C t ::c1 {[:xx]}} ::c1 + ? {C t ::c1 {[:info class]}} ::C + ? {C t ::c1 {[:info is type C]}} 1 + ? {C t ::c1 {[:info is type ::C]}} 1 + + Object method expr {} {} + +} \ No newline at end of file Index: tests/forwardtest.xotcl =================================================================== diff -u -N --- tests/forwardtest.xotcl (revision 183ec0e7c071586238bf5ed90a05dbbda91d4582) +++ tests/forwardtest.xotcl (revision 0) @@ -1,347 +0,0 @@ -# -*- Tcl -*- -package require XOTcl; namespace import ::xotcl::* -package require nx::test - -########################################### -# trivial object delegation -########################################### -Test case delegation -Object dog -Object tail -tail proc wag args { return $args } -dog forward wag tail %proc - -? {dog wag 100} 100 - - -########################################### -# evaluating in scope -########################################### -Test case inscope -Class X -parameter {{x 1}} -X instforward Incr -objscope incr - -X x1 -x 100 -x1 Incr x -x1 Incr x -x1 Incr x -? {x1 x} 103 -#puts "======" - -########################################### -# adding -########################################### -Test case adding -Object obj -obj forward addOne expr 1 + - -? {obj addOne 5} 6 -#puts stderr "======" - -########################################### -# more arguments -########################################### -Test case multiple-args -Object target -target proc foo args {return $args} -obj forward foo target %proc %self a1 a2 - -? {obj foo x1 x2} [list ::obj a1 a2 x1 x2] - -obj forward foo target %proc %self %%self %%p -? {obj foo x1 x2} [list ::obj %self %p x1 x2] - -#puts "======" - - -########################################### -# mixin example -########################################### -Test case mixin-via-forward -Object create mixin -mixin proc unknown {m args} {return [concat [self] $m $args]} - -obj forward Mixin mixin %1 %self -? {obj Mixin add M1} [list ::mixin add ::obj M1] -? {catch {obj Mixin}} 1 - - -obj forward Mixin mixin "%1 {Getter Setter}" %self -? {obj Mixin add M1} [list ::mixin add ::obj M1] -? {obj Mixin M1} [list ::mixin Setter ::obj M1] -? {obj Mixin} [list ::mixin Getter ::obj] -#puts "======" - - -########################################### -# sketching extensibe info -########################################### -Test case info-via-forward -Object Info -Info proc @mixin {o} { - $o info mixin -} -Info proc @class {o} { ;# without prefix, doing here a [Info class] wod be wrong - $o info class -} -Info proc @help {o} { ;# define a new subcommand for info - foreach c [my info procs] {lappend result [string range $c 1 end]} - return $result -} -Object instforward Info -methodprefix @ Info %1 %self - -? {x1 Info class} ::X -? {x1 Info help} [list help mixin class] - -########################################### -# variations of placement of options -########################################### -Test case incr -obj set x 1 -obj forward i1 -objscope incr x - -? {obj i1} 2 -#puts "======" - -########################################### -# introspeciton options -########################################### -Test case introspection -Class C -C instforward Info -methodprefix @ Info %1 %self - -? {C info instforward} Info -C instforward XXXo x -? {lsort [C info instforward]} [list Info XXXo] - -? {C info instforward X*} [list XXXo] -? {lsort [C info instforward *o]} [list Info XXXo] - -# delete the forwarder -C instproc XXXo {} {} -? {C info instforward} [list Info] -# get the definition of a instforwarder -? {C info instforward -definition Info} [list -methodprefix @ Info %1 %self] - -# check introspection for objects -? {lsort [obj info forward]} "Mixin addOne foo i1" -? {obj info forward -definition Mixin} "mixin {%1 {Getter Setter}} %self" -? {obj info forward -definition addOne} "expr 1 +" -? {obj info forward -definition foo} "target %proc %self %%self %%p" -? {obj info forward -definition i1} "-objscope ::incr x" -#puts stderr "======" - -########################################### -# test serializer -########################################### -Test case serializer -package require nx::serializer -obj proc test {} {puts "i am [self proc]"} -set a [Serializer deepSerialize obj] -#puts <<$a>> -eval $a -? {set ::a} [Serializer deepSerialize obj] - -########################################### -# test optional target cmd -########################################### -Test case optional-target -obj set x 2 -obj forward append -objscope -? {obj append x y z} 2yz - -Object n; Object n::x; Object o; -o forward ::n::x -? {o x self} ::n::x - -########################################### -# arg including instvar -########################################### -Test case percent-cmd -obj set x 10 -obj forward x* expr {%my set x} * -? {obj x* 10} "100" - -########################################### -# positional arguments -########################################### -Test case positioning-args -obj forward @end-13 list {%@end 13} -? {obj @end-13 1 2 3 } [list 1 2 3 13] - -obj forward @-1-13 list {%@-1 13} -? {obj @-1-13 1 2 3 } [list 1 2 13 3] - -obj forward @1-13 list {%@1 13} -? {obj @1-13 1 2 3 } [list 13 1 2 3] -? {obj @1-13} [list 13] - -obj forward @2-13 list {%@2 13} -? {obj @2-13 1 2 3 } [list 1 13 2 3] - -obj forward @list 10 {%@0 list} {%@end 99} -? {obj @list} [list 10 99] -? {obj @list a b c} [list 10 a b c 99] - -obj forward @list {%@end 99} {%@0 list} 10 -? {obj @list} [list 10 99] -? {obj @list a b c} [list 10 a b c 99] - -obj forward @list {%@2 2} {%@1 1} {%@0 list} -? {obj @list} [list 1 2] -? {obj @list a b c} [list 1 2 a b c] - -obj forward @list x y z {%@0 list} {%@1 1} {%@2 2} -? {obj @list} [list 1 2 x y z] -? {obj @list a b c} [list 1 2 x y z a b c] - -obj forward @list x y z {%@2 2} {%@1 1} {%@0 list} -? {obj @list} [list x 1 y 2 z] -? {obj @list a b c} [list x 1 y 2 z a b c] - -# adding some test cases which cover the interactions -# between %@POS and %1 substitutions -# - -obj forward @end-13 list {%@end 13} %1 %self -? {obj @end-13 1 2 3 } [list 1 ::obj 2 3 13] - -obj forward @end-13 list %1 {%@end 13} %self -? {obj @end-13 1 2 3 } [list 1 ::obj 2 3 13] - -obj forward @end-13 list {%@end 13} %1 %1 %1 %self -? {obj @end-13 1 2 3 } [list 1 1 1 ::obj 2 3 13] - -obj forward @end-13 list {%@-1 13} %1 %self -? {obj @end-13 1 2 3 } [list 1 ::obj 2 13 3] - -obj forward @end-13 list {%@1 13} %1 %self -? {obj @end-13 1 2 3 } [list 13 1 ::obj 2 3] - -############################################### -# substitution depending on number of arguments -############################################### -Test case num-args -obj forward f %self [list %argclindex [list a b c]] -obj proc a args {return [list [self proc] $args]} -obj proc b args {return [list [self proc] $args]} -obj proc c args {return [list [self proc] $args]} -? {obj f} [list a {}] -? {obj f 1 } [list b 1] -? {obj f 1 2} [list c {1 2}] -? {catch {obj f 1 2 3}} 1 - -############################################### -# option earlybinding -############################################### -Test case earlybinding -obj forward s -earlybinding ::set ::X -? {obj s 100} 100 -? {obj s} 100 - -Object instproc f args { next } - -Class NS -Class NS::Main - -NS::Main proc m1 {} { my m2 } - -NS::Main proc m2 {} { - ? {namespace eval :: {Object toplevelObj1}} ::toplevelObj1 - - ? [list set _ [namespace current]] ::NS - ? [list set _ [NS create m1]] ::NS::m1 - NS filter f - ? [list set _ [NS create m2]] ::NS::m2 - NS filter "" - - namespace eval ::test { - ? [list set _ [NS create m3]] ::test::m3 - NS filter f - ? [list set _ [NS create m4]] ::test::m4 - NS filter "" - } - - namespace eval test { - ? [list set _ [NS create m5]] ::NS::test::m5 - NS filter f - ? [list set _ [NS create m6]] ::NS::test::m6 - NS filter "" - } - -} - -NS::Main instproc i1 {} { my i2 } - -NS::Main instproc i2 {} { - ? {namespace eval :: {Object toplevelObj2}} ::toplevelObj2 - - ? [list set _ [namespace current]] ::NS - ? [list set _ [NS create i1]] ::NS::i1 - NS filter f - ? [list set _ [NS create i2]] ::NS::i2 - NS filter "" - - namespace eval ::test { - ? [list set _ [NS create i3]] ::test::i3 - NS filter f - ? [list set _ [NS create i4]] ::test::i4 - NS filter "" - } - - namespace eval test { - ? [list set _ [NS create i5]] ::NS::test::i5 - NS filter f - ? [list set _ [NS create i6]] ::NS::test::i6 - NS filter "" - } - -} - -#puts ==== -NS::Main m1 -NS::Main create m -m i1 - -#puts ==== -? [list set _ [NS create n1]] ::n1 -NS filter f -? [list set _ [NS create n2]] ::n2 -NS filter "" - -#puts ==== -namespace eval test { - ? [list set _ [NS create n1]] ::test::n1 - ? [list set _ [NS create n3]] ::test::n3 - NS filter f - ? [list set _ [NS create n4]] ::test::n4 - NS filter "" -} - -########################################### -# forward to expr + callstack -########################################### -Test case callstack -Object instforward expr -objscope - -Class C -C instproc xx {} {self} -C proc t {o expr} { - return [$o expr $expr] -} -C create c1 - -#puts ==== -? {c1 expr {[self]}} ::c1 -? {c1 expr {[self] == "::c1"}} 1 -? {c1 expr {[my xx]}} ::c1 -? {c1 expr {[my info class]}} ::C -? {c1 expr {[my istype C]}} 1 -? {c1 expr {[my istype ::C]}} 1 - -? {C t ::c1 {[self]}} ::c1 -? {C t ::c1 {[self] == "::c1"}} 1 -? {C t ::c1 {[my xx]}} ::c1 -? {C t ::c1 {[my info class]}} ::C -? {C t ::c1 {[my istype C]}} 1 -? {C t ::c1 {[my istype ::C]}} 1 Index: tests/persistence.test =================================================================== diff -u -N --- tests/persistence.test (revision 81c800c8b9cb42ef6743d9b80ac2be5ca211a69a) +++ tests/persistence.test (revision 0) @@ -1,401 +0,0 @@ -#!../../src/xotclsh -# -*- Tcl -*- -package require XOTcl; namespace import -force xotcl::* - -@ @File { - description { - Several tests for persistent stores and performance comparison. - The "-bigdb" command line option additionally starts a (longer) - big database test. The test automatically detects which storages - are avaiable. - } -} -array set opt {-bigdb 0 -bench 0} -array set opt $argv - -lappend auto_path [file dir [info script]]/.. - -#set auto_path ".. ../../src $auto_path" -#package require xotcl::package;package verbose 1 - -set storageCandidates {Sdbm Jufgdbm Mem Gdbm TextFile} -set storageCandidates {Sdbm Mem Gdbm TextFile} -#set storageCandidates {Gdbm} -set stores "" - -foreach store $storageCandidates { - if {![catch {package require xotcl::store::[string tolower $store]}]} { - lappend stores $store - } else { - puts "FAILED: package require xotcl::store::[string tolower $store]" - } -} - -puts "\nPersistence Test\n\nUsing the following Storages: \n $stores\n" - -set ::tests { - testStorageFeatures - Stores - Traverse - Store_Fetch_List - Store_Fetch_List_Same_Key - SimplePersistentObjects - LotsOfObjects -} - -if {$opt(-bigdb)} { - lappend ::tests bigdb - puts " ... bigdb test enabled.\n" -} else { - puts " ... bigdb test disabled.\n" -} -if {$opt(-bench)} { - set ::runs 10 - # don't use number >= 1000 because of SDBMs's char key length with the - # test SimplePersistentObjects - # don't use number > 272 because of SDBMs's key pairs max length of 1024 - # FIX THIS in FUTURE RELEASES!! - set ::iterations 272 -} else { - set ::runs 1 - set ::iterations 10 -} - -#package require xotcl::store::trace -#Storage=Gdbm instmixin TraceStorage - - -package require xotcl::store::persistence - -proc ::errorCheck {got expected msg} { - if {$got != $expected} { - puts stderr "FAILED: $msg\nGot: $got\nExpected: $expected" - exit -1 - } -} -proc ::errorCheckList {got expected msg} { - if {[lsort $got] != [lsort $expected]} { - puts stderr "FAILED: $msg\nGot: $got\nExpected: $expected" - exit -1 - } -} - -Class PersistenceTest - -@ Class PersistenceTest - -PersistenceTest instproc init args { - next -} - -PersistenceTest instproc testStorageFeatures {store} { - Storage=$store s - s open testDB - s set "{::a::s x} {x}" {a b c d} - s set "::a::s x" {{r t} a b c r} - s set ::a::t 7 - set result [s set ::a::t] - errorCheck $result 7 "Failed fetch ::a::t" - set result [s set "{::a::s x} {x}"] - errorCheck $result "a b c d" "Failed fetch {::a::s x} {x}" - set result [s set "::a::s x"] - errorCheck $result "{r t} a b c r" "Failed fetch ::a::s x" - - errorCheckList [s names] "{::a::s x} {{::a::s x} {x}} ::a::t" "Failed list -- all" - - set keys [list [s firstkey]] - while {[set nk [s nextkey]] != ""} {lappend keys $nk} - set keys [lappend keys [s firstkey]] - while {[set nk [s nextkey]] != ""} {lappend keys $nk} - - errorCheckList $keys "{{::a::s x} {x}} {::a::s x} ::a::t {{::a::s x} {x}} {::a::s x} ::a::t" "First/next key traversal failed." - - s unset "{::a::s x} {x}" - errorCheckList [s names] "{::a::s x} ::a::t" "Failed delete {::a::s x} {x}" - s unset "::a::s x" - errorCheckList [s names] "::a::t" "Failed delete ::a::s x" - - s close - s destroy - return " PASSED with $store" -} - -PersistenceTest instproc Traverse { store} { - Storage=$store s - s open testDB - for {set i 0} {$i < $::iterations} {incr i} { - set key "::a${i}" - set value "An value for the test $i $i $i\0" - s set $key $value - lappend resultKeys $key - lappend resultValues $value - } - - set keys [list [s firstkey]] - set values [list [s set $keys]] - while {[set nk [s nextkey]] != ""} { - lappend keys $nk - lappend values [s set $nk] - } - errorCheckList $keys $resultKeys "Failed Traverse keys" - errorCheckList $values $resultValues "Failed Traverse values" - s close - s destroy - return " PASSED with $store" -} - -PersistenceTest instproc Stores {store} { - Storage=$store s - s open testDB - for {set i 0} {$i < $::iterations} {incr i} { - s set "::a${i}" "An value for the test $i $i $i" - } - set list [s names] - errorCheck [llength $list] $::iterations "Failed Stores $::iterations -- Wrong \# of stored elements" - s close - s destroy - return " PASSED with $store" -} - -PersistenceTest instproc Store_Fetch_List {store} { - Storage=$store s - s open testDB - for {set i 0} {$i < $::iterations} {incr i} { - set key "::a${i}" - set value "An value for the test $i $i $i" - s set $key $value - set list [s names] - errorCheck [llength $list] [expr $i +1] "Failed Store_Fetch_List $::iterations -- Wrong \# of stored elements" - set result [s set $key] - errorCheck $result $value "Failed fetch Store_Fetch_List current key" - set result [s set "::a0"] - errorCheck $result "An value for the test 0 0 0" "Failed fetch Store_Fetch_List first key" - } - s close - s destroy - return " PASSED with $store" -} - -PersistenceTest instproc Store_Fetch_List_Same_Key {store} { - Storage=$store s - s open testDB - set key "Always the same key" - for {set i 0} {$i < $::iterations} {incr i} { - set value "An value for the test $i $i $i" - s set $key $value - set list [s names] - errorCheck [llength $list] 1 "Failed Store_Fetch_List_Same_Key $::iterations -- Wrong \# of stored elements" - set result [s set $key] - errorCheck $result $value "Failed fetch Store_Fetch_List_Same_Key current key" - } - - s close - s destroy - return " PASSED with $store" -} - -# -# tests dependent on the Persistence package -# - -PersistenceTest instproc SimplePersistentObjects {store} { - set ox 1; set oy 1; set py 1; set px 1; - set oza 1; set ozb 1; set onames [list a b] - set pza 1; set pzb 1; set pnames [list a b] - - - - #puts stderr mixin=[pmgr info mixin] - #pmgr mixin [concat TraceStorage [pmgr info mixin]] - - for {set i 0} {$i < $::iterations} {incr i} { - PersistenceMgr pmgr -dirName . \ - -fileName testDB -dbPackage $store - # Two example objects with variables set to default values - Object o - o set x 1 - o set y 1 - o set threeLines "a -b -c" - - o array set z {a 1 b 1} - Object p - p set x 1 - p set y 1 - p array set z {a 1 b 1} - - o mixin Persistent=Eager - p mixin Persistent=Lazy - # for the mem storage Lazy Persistence makes not much sense - if {$store == "Mem"} {p mixin Persistent=Eager} - - o persistenceMgr pmgr - p persistenceMgr pmgr - o persistent {x y z threeLines} - p persistent {x y z} - - o incr x 2 - incr ox 2 - o append y 1 - append oy 1 - p incr x 3 - incr px 3 - p append y 2 - append py 2 - - o incr z(a) 2 - incr oza 2 - o append z(b) 1 - append ozb 1 - o set z($i) 5 - lappend onames $i - - p incr z(a) 2 - incr pza 2 - p append z(b) 1 - append pzb 1 - p set z($i) 5 - lappend pnames $i - - errorCheck [o set x] $ox "Persistence: o->x Failed" - errorCheck [o set y] $oy "Persistence: o->y Failed" - errorCheck [o set z(a)] $oza "Persistence: o->z(a) Failed" - errorCheck [o set z(b)] $ozb "Persistence: o->z(b) Failed" - errorCheckList [o array names z] $onames "Array indizes got lost - o -" - errorCheck [p set x] $px "Persistence: p->x Failed" - errorCheck [p set y] $py "Persistence: p->y Failed" - errorCheckList [o array names z] $onames "Array indizes got lost" - errorCheck [p set z(a)] $pza "Persistence: p->z(a) Failed" - errorCheck [p set z(b)] $pzb "Persistence: p->z(b) Failed" - errorCheckList [p array names z] $pnames "Array indizes got lost - p -" - - errorCheck [o set threeLines] {a -b -c} "Three Lines Failed" - - o destroy - p destroy - pmgr destroy - } - - #errorCheck $ox 21 "Persistence: o->x End Result Failed" - #errorCheck $oy 11111111111 "Persistence: o->y End Result Failed" - #errorCheck $px 31 "Persistence: p->x End Result Failed" - #errorCheck $py 12222222222 "Persistence: p->y End Result Failed" - - return " PASSED with $store" -} - -PersistenceTest instproc LotsOfObjects {store} { - set secondLoopMax 1 - PersistenceMgr pmgr -dirName . \ - -fileName testDB -dbPackage $store - for {set i 0} {$i < $::iterations} {incr i} { - # we create 10 objects per iteration - for {set j 0} {$j < $secondLoopMax} {incr j} { - Object iHaveaVeryLongName${i}${j} - Object iHaveaVeryLongName${i}${j}::meToo${i}${j} - iHaveaVeryLongName${i}${j} mixin Persistent=Eager - iHaveaVeryLongName${i}${j} persistenceMgr pmgr - iHaveaVeryLongName${i}${j}::meToo${i}${j} mixin Persistent=Eager - iHaveaVeryLongName${i}${j}::meToo${i}${j} persistenceMgr pmgr - foreach var {a b c d e f g h i j k l m n o p} { - iHaveaVeryLongName${i}${j} set $var " some useless test ...... - with spaces and lines breaks iHaveaVeryLongName$i $var $i - " - iHaveaVeryLongName${i}${j} persistent $var - iHaveaVeryLongName${i}${j}::meToo${i}${j} set $var " some useless test ...... - with spaces and lines breaks iHaveaVeryLongName$i $var $i - " - iHaveaVeryLongName${i}${j}::meToo${i}${j} persistent $var - } - } - } - pmgr destroy - return " PASSED with $store" -} - -PersistenceTest instproc random modulo { ;### random number generator - [self] instvar seed - set seed [expr {($seed*12731+34197) % 21473}] - return [expr {$seed % $modulo}] -} - -PersistenceTest instproc bigdb {store} { - Storage=$store s - s open testDB - set max 100000 - [self] set seed 4711 - for {set i 0} {$i < $max} {incr i} { - s set $i $i - } - [self] set seed 4711 - for {set i 0} {$i < $max} {incr i} { - set key [[self] random $max] - set r [s set $key] - errorCheck $r $key "Failed bigdb $::iterations -- Wrong result $r instead of $key" - } - s close - s destroy - return " PASSED with $store" -} - - - -PersistenceTest instproc runOnce {} { - eval file delete -force testDB [glob -nocomplain testDB*] - catch {xotcl::memStoragePool remove testDB} - foreach test $::tests { - puts "[[self] set run]: $test $::iterations" - foreach s $::stores { - set t [time {set result [[self] $test $s]}] - [self] report $test $s $t $result - eval file delete -force testDB [glob -nocomplain testDB*] - catch {xotcl::memStoragePool remove testDB} - } - } -} -PersistenceTest instproc run {runs} { - [self] instvar run - for {set run 1} {$run<=$runs} {incr run} { - pt runOnce - } -} - -PersistenceTest instproc report {test store time result} { - if {![regexp {^(-?[0-9]+) +(.*)$} $time _ ms string]} { - puts stderr "time <$time> could not be parsed" - return - } - set key bench($test,$store) - set better " " - if {[[self] exists $key]} { - if {[[self] set $key] > $ms} { - [self] set $key $ms - set better "+" - } - } else { - [self] set $key $ms - } - puts "[[self] set run]: [format %-22s $result]\ - $better[format %10d $ms] $string" -} - -PersistenceTest instproc table {} { - set f [open "persistent.cvs" w] - foreach test $::tests { - set values "" - foreach store $::stores { - lappend values [[self] set bench($test,$store)] - } - puts "[format %-30s $test];[join $values {;}]" - puts $f "[format %-30s $test];[join $values {;}]" - } - close $f -} - -PersistenceTest pt -run $::runs -if {$opt(-bench)} { - pt table -} Index: tests/speedtest.xotcl =================================================================== diff -u -N --- tests/speedtest.xotcl (revision 35c67391973a07983d0b0dfe70706e6a69fbdbfc) +++ tests/speedtest.xotcl (revision 0) @@ -1,547 +0,0 @@ -#memory trace on -package require XOTcl; namespace import ::xotcl::* - -package require nx::test -Test parameter count 1000 - -@ @File {description { - Regression and speed test for various ways to achieve a similar - behaviour. - } -} - -set ccount 20 -#set ocount 1014 -#set ocount [expr {$ccount + 206}] -#set ocount [expr {$ccount + 15}] -set ocount [expr {$ccount + 7}] - -Class M1; Class M2 -Class C -parameter {{p 99} {q 98} r} -C instproc f args {next} -C instproc init args { - my instvar n v - #for {set i 1} {$i<1000} {incr i} {set n($i) 1} - #for {set i 1} {$i<1000} {incr i} {Object [self]::$i} - for {set i 0} {$i<$::ccount} {incr i} {set n($i) 1} - for {set i 0} {$i<$::ccount} {incr i} {Object [self]::$i} - set v 1 -} - -C instproc mixinappend m { - my mixin [concat [my info mixin] $m] - my info mixin -} -C instproc ma m { - set mix [my info mixin] - my mixin [lappend mix $m] - my info mixin -} - -C instproc existsViaInstvar {} { - my instvar v - info exists v -} -C instproc existsViaMyInstvar {} { - my instvar v - info exists v -} -C instproc existsViaExistsMethod {} { - [self] exists v -} -C instproc existsViaMyExistsMethod {} { - my exists v -} -C instproc existsViaDotExistsMethod {} { - :exists v -} -C instproc existsViaResolver {} { - info exists :v -} -C instproc notExistsViaInstvar {} { - my instvar xxx - info exists xxx -} -C instproc notExistsViaExistsMethod {} { - my exists xxx -} - -C instproc existsAndReturnValue1 {} { - if {[my exists v]} { - my set v - } -} -C instproc existsAndReturnValue3 {} { - if {[my exists v]} { - set x [my set v] - } -} - -C instproc setViaInstvar x { - my instvar v - set v $x -} -C instproc setViaSetMethod x { - my set v $x -} -C instproc setViaParameter x { - my r $x -} -C instproc testAndSetViaInstvar x { - my instvar v - if {[info exists v]} {set v $x} -} -C instproc testAndSetViaSetMethod x { - if {[my info vars v] ne ""} {my set v $x} -} - -C instproc readViaInstvar {} { - my instvar p - set p -} -C instproc readViaSetMethod {} { - my set p -} -C instproc readViaSetMethodNoSelf {} { - ::c set p -} -C instproc readViaParameter {} { - my p -} - -C instproc readTwiceViaInstvar {} { - my instvar p - set p - set p -} -C instproc readTwiceViaSetMethod {} { - my set p - my set p -} -C instproc readTwiceViaSetMethodNoSelf {} { - ::c set p - ::c set p -} -C instproc readTwiceViaParameter {} { - my p - my p -} -C instproc readTwovarsViaInstvar {} { - my instvar p q - set p - set q -} -C instproc readTwovarsViaSetMethod {} { - my set p - my set q -} -C instproc readTwovarsViaSetMethodNoSelf {} { - ::c set p - ::c set q -} -C instproc readTwovarsViaParameter {} { - my p - my q -} - -C instproc instvarAlias {} { - my instvar {a b} - set b 1 - my exists a -} - - -C instproc explicitReturn {} { - return [set i 1] -} -C instproc implicitReturn {} { - set i 1 -} -C instproc explicitReturnFromVar {} { - set i 1 - return $i -} -C instproc implicitReturnFromVar {} { - set i 1 - set i -} - -C instproc childNodeNamespace {} { - Object [self]::13 -} -C instproc childNodeNamespaceCreate {} { - Object create [self]::13 -} -C instproc createVolatileRc {} { - Object new -volatile - return 2 -} - -C c -Class D -superclass C -D instproc init args {} -D d - -#Test new -cmd {llength [c info children]} -count 1 -expected 999 -#Test new -cmd {set x [llength [c info children]]} -count 1 -expected 999 -Test new -cmd {llength [c info children]} -count 1 -expected $ccount -Test new -cmd {set x [llength [c info children]]} -count 1 -expected $ccount -puts stderr XXX-[llength [Object info instances]]-[lsort [Object info instances]] -Test new -cmd {set x [llength [Object info instances]]} -count 1 -expected $ocount -Test new -cmd {llength [Object info instances]} -count 1 -expected $ocount - -Test new -cmd {d istype D} -expected 1 - -Test new -cmd {c setViaInstvar 100} -expected 100 -Test new -cmd {c setViaSetMethod 100} -expected 100 -Test new -cmd {c setViaParameter 100} -expected 100 - -Test new -cmd {c existsViaInstvar} -Test new -cmd {c existsViaMyInstvar} -Test new -cmd {c existsViaExistsMethod} -Test new -cmd {c existsViaMyExistsMethod} -Test new -cmd {c existsViaDotExistsMethod} -Test new -cmd {c existsViaResolver} -Test new -cmd {c exists v} -Test new -cmd {c notExistsViaInstvar} -expected 0 -Test new -cmd {c notExistsViaExistsMethod} -expected 0 -Test new -cmd {c exists xxx} -expected 0 - -Test new -cmd {c existsAndReturnValue1} -expected 100 -Test new -cmd {c existsAndReturnValue3} -expected 100 - -Test new -cmd {c testAndSetViaInstvar 100} -expected 100 -Test new -cmd {c testAndSetViaSetMethod 100} -expected 100 - -Test new -cmd {c readViaInstvar} -expected 99 -Test new -cmd {c readViaSetMethod} -expected 99 -Test new -cmd {c readViaParameter} -expected 99 -Test new -cmd {c readViaSetMethodNoSelf} -expected 99 - -Test new -cmd {c readTwiceViaInstvar} -expected 99 -Test new -cmd {c readTwiceViaSetMethod} -expected 99 -Test new -cmd {c readTwiceViaParameter} -expected 99 -Test new -cmd {c readTwiceViaSetMethodNoSelf} -expected 99 - -Test new -cmd {c readTwovarsViaInstvar} -expected 98 -Test new -cmd {c readTwovarsViaSetMethod} -expected 98 -Test new -cmd {c readTwovarsViaParameter} -expected 98 -Test new -cmd {c readTwovarsViaSetMethodNoSelf} -expected 98 - -Test new -cmd {c instvarAlias} - -Test new -cmd {c incr v} -post {c set v 1} -expected 101 -Test new -cmd {c unset v; set r [c exists v]; c set v 1; set r} -expected 0 - -Test new -cmd {llength [Object info instances]} -count 1 -expected $ocount -Test new -cmd {set x [llength [Object info instances]]} -count 1 -expected $ocount - -Test new -cmd {c explicitReturn} -Test new -cmd {c implicitReturn} -Test new -cmd {c explicitReturnFromVar} -Test new -cmd {c implicitReturnFromVar} - -Test new -cmd {llength [Object info instances]} -count 1 -expected $ocount -Test new -cmd {set x [llength [Object info instances]]} -count 1 -expected $ocount - -Test new -cmd {c childNodeNamespace} -expected ::c::13 -Test new -cmd {llength [Object info instances]} -count 1 -expected $ocount -Test new -cmd {c childNodeNamespaceCreate} -expected ::c::13 -Test new -cmd {llength [Object info instances]} -expected $ocount -Test new -cmd {c createVolatileRc} -expected 2 - -# should be still the same number as above -Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount - -Test new -cmd {Object new -volatile} -expected ::nx::core::__\#F9 -count 2000 \ - -post {foreach o [Object info instances ::nx::core::__*] {$o destroy}} - -# should be still the same number as above -Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount - -Test new -cmd {Object new} -expected ::nx::core::__\#lQ -count 2000 \ - -post {foreach o [Object info instances ::nx::core::__*] {$o destroy}} - -# should be still the same number as above -Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount - -Test new -cmd {Object new -childof o} -expected ::o::__\#0Hh \ - -pre {Object o} -post {o destroy} - -# should be still the same number as above -Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount - -Test new -count 1000 -pre {::set ::count 0} \ - -cmd {Object create [incr ::count]} \ - -expected ::1 \ - -post {::unset ::count} -Test new -count 1000 -pre {::set ::count 0} \ - -cmd {[incr ::count] destroy} \ - -post {::unset ::count} \ - -expected "" -# -Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount -# we create another object -set ocount [expr {$ocount + 1}] -Test new -cmd {Object create x} -expected ::x -Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount - -Test new -cmd {Object create x -set a -1 -set b ,, -set c a--} \ - -expected ::x -Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount - -Test new -cmd {expr {[c array names n 5] ne ""}} - -Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount -Test new -cmd {info exists c::n(5)} -Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount -Test new -cmd {c exists n(5)} - -Test new -cmd {llength [c info children]} -expected $ccount -Test new -cmd {c info children ::c::5} -expected ::c::5 - -Test new -count 1 -cmd {llength [Object info instances]} -expected $ocount - -Test new -cmd {Object info instances ::c::5*} -expected ::c::5 -Test new -cmd {Object info instances ::c::5} -expected ::c::5 -Test new -cmd {Object info instances ::c::5000} -expected "" - -Test new -count 100 -pre {set ::c::l ""} \ - -cmd {lappend ::c::l 1} \ - -post {c unset l} - -Test new \ - -count 100 \ - -cmd {c mixinappend M1} \ - -expected ::M1 \ - -post {c mixin ""} - -Test new \ - -count 100 \ - -cmd {c ma M1} \ - -expected ::M1 \ - -post {c mixin ""} - -Test new \ - -count 100 \ - -cmd {c mixin add M1} \ - -expected "" \ - -post {c mixin ""} - -Test new \ - -count 100 \ - -cmd {c mixinappend M1; c mixinappend M2} \ - -expected {::M1 ::M2} \ - -post {c mixin ""} - -Test new \ - -count 100 \ - -cmd {c ma M1; c ma M2} \ - -expected {::M1 ::M2} \ - -post {c mixin ""} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Object o -mixin {D E}} \ - -cmd {o info mixin D} \ - -expected {::D} \ - -post {foreach o {D E o} {$o destroy}} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Object o -mixin {D E}} \ - -cmd {o info mixin E} \ - -expected {::E} \ - -post {foreach o {D E o} {$o destroy}} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Object o -mixin {D E}} \ - -cmd {o info mixin ::E*} \ - -expected {::E} \ - -post {foreach o {D E o} {$o destroy}} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Class E1; Object o -mixin {D E E1}} \ - -cmd {o info mixin ::E*} \ - -expected {::E ::E1} \ - -post {foreach o {D E E1 o} {$o destroy}} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Class X -instmixin {D E}} \ - -cmd {X info instmixin D} \ - -expected {::D} \ - -post {foreach o {D E X} {$o destroy}} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Class X -instmixin {D E}} \ - -cmd {X info instmixin E} \ - -expected {::E} \ - -post {foreach o {D E X} {$o destroy}} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Class E1; Class X -instmixin {D E E1}} \ - -cmd {X info instmixin ::E*} \ - -expected {::E ::E1} \ - -post {foreach o {D E E1 X} {$o destroy}} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Class X -instmixin {D E}} \ - -cmd {X info instmixin ::E*} \ - -expected {::E} \ - -post {foreach o {D E X} {$o destroy}} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Class X} \ - -cmd {X instmixin {D E}; X instmixin delete ::E; X info instmixin} \ - -expected {::D} \ - -post {foreach o {D E X} {$o destroy}} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Class X} \ - -cmd {X instmixin {D E}; X instmixin delete E; X info instmixin} \ - -expected {::D} \ - -post {foreach o {D E X} {$o destroy}} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Class E1; Class X} \ - -cmd {X instmixin {D E E1}; catch {X instmixin delete ::E*}; X info instmixin} \ - -expected {::D} \ - -post {foreach o {D E E1 X} {$o destroy}} - -Test new \ - -count 100 \ - -pre {Class D; Class E; Class E1; Class X} \ - -cmd {X instmixin {D E E1}; catch {X instmixin delete E*}; X info instmixin} \ - -expected {::D} \ - -post {foreach o {D E E1 X} {$o destroy}} - -Test new \ - -cmd {C instfilter f; C info instfilter} \ - -expected f \ - -post {C instfilter ""} - -Test new -pre {set s \#hallo} -cmd {string match "\#*" $s} -Test new -pre {set s \#hallo} -cmd {regexp {^\#} $s} -Test new -pre {set s \#hallo} -cmd {expr {[string first "\#" $s] == 0}} -Test new -pre {set s \#hallo} -cmd {expr {[string range $s 0 0] == "\#"}} - -Test new -pre {set s \#hallo} -cmd {regexp {^\#.*a} $s} -Test new -pre {set s \#hallo} -cmd {regexp {^\#.*a.*o} $s} -Test new -pre {set s \#hallo} -cmd {regexp {^\#.*a(.*)o} $s} -Test new -pre {set s \#hallo} -cmd {regexp {^\#.*a(.*)o} $s _} -Test new -pre {set s \#hallo} -cmd {regexp {^\#.*a(.*)o} $s _ out} - -Test new -msg {call proc of subobject directly} \ - -pre {C c2; C c2::o; c2::o proc f a {incr a}} \ - -cmd {c2::o::f 10} -expected 11 -count 5000 \ - -post {c2 destroy} -Test new -msg {call proc of subobject via dispatch} \ - -pre {C c2; C c2::o; c2::o proc f a {incr a}} \ - -cmd {c2::o f 10} -expected 11 -count 5000 \ - -post {c2 destroy} -Test new -msg {call proc of object and subobject via dispatch} \ - -pre {C c2; C c2::o; c2::o proc f a {incr a}} \ - -cmd {c2 o f 10} -expected 11 -count 5000 \ - -post {c2 destroy} - -Test new -msg {dispatch subobject directy via [self]} \ - -pre {C c2; C c2::o; c2::o proc f a {incr a}; c2 proc t a {[self]::o f $a}} \ - -cmd {c2 t 12} -expected 13 -count 5000 \ - -post {c2 destroy} -Test new -msg {dispatch subobject via my} \ - -pre {C c2; C c2::o; c2::o proc f a {incr a}; c2 proc t a {my o f $a}} \ - -cmd {c2 t 12} -expected 13 -count 5000 \ - -post {c2 destroy} - - -###### insttclcmd tests -set cnt 10000 -#Test new -msg {call insttclcmd (append) and check created variable} \ - -pre {Object o} \ - -cmd {o append X 1; o exists X} -expected 1 \ - -post {o destroy} -#Test new -msg {call tclcmd (regexep) and check created variable} \ - -pre {Object o; o tclcmd regexp} \ - -cmd {o regexp (a) a _ x; o exists x} -expected 1 -count $cnt \ - -post {o destroy} -Test new -msg {call forwarder for (append) and check created variable} \ - -pre {Object o; o forward append -objscope} \ - -cmd {o append X 1; o exists X} -expected 1 \ - -post {o destroy} -Test new -msg {call forwarder (regexep) and check created variable} \ - -pre {Object o; o forward regexp -objscope} \ - -cmd {o regexp (a) a _ x; o exists x} -expected 1 -count $cnt \ - -post {o destroy} -Test new -msg {call forwarder to another obj} \ - -pre {Object o; Object t; o forward set t set; t set x 100} \ - -cmd {o set x} -expected 100 -count $cnt \ - -post {o destroy} - -set cnt 100000 -Test new -msg {call handcoded incr} \ - -pre {Class C; C create o; o set x 1} \ - -cmd {o incr x 77} -expected 78 -count $cnt \ - -post {o destroy} -Test new -msg {call incr via instforward} \ - -pre {Class C; C instforward ::incr -objscope; C create o; o set x 1} \ - -cmd {o incr x 77} -expected 78 -count $cnt \ - -post {o destroy} -Test new -msg {call incr via forward} \ - -pre {Class C; C create o; o forward ::incr -objscope; o set x 1} \ - -cmd {o incr x 77} -expected 78 -count $cnt \ - -post {o destroy} -set cnt 10000 -Test new -msg {call obj with namespace via forward} \ - -pre {Object n; Object n::x; Object o -forward ::n::x} \ - -cmd {o x self} -expected ::n::x -count $cnt \ - -post {o destroy} -Test new -msg {call obj with namespace via instforward} \ - -pre {Object n; Object n::x; Class C; C create o; C instforward ::n::x} \ - -cmd {o x self} -expected ::n::x -count $cnt \ - -post {o destroy} -Test new -msg {call obj with namespace via instforward and mixinclass} \ - -pre {Object n; Object n::x; Class M -instforward ::n::x; - Class C -instmixin M; C create o } \ - -cmd {o x self} -expected ::n::x -count $cnt \ - -post {o destroy} -Test new -msg {call obj with namespace via instforward and next from proc} \ - -pre { - Object n; Object n::x; - Class C -instforward ::n::x; - C create o -proc x args {next} } \ - -cmd {o x self} -expected ::n::x -count $cnt \ - -post {o destroy} -Test new -msg {call obj with namespace via instforward and next from instproc} \ - -pre { - Object n; Object n::x; - Class C -instforward ::n::x; - Class D -superclass C -instproc x args {next}; - D create o } \ - -cmd {o x self} -expected ::n::x -count $cnt \ - -post {o destroy} -Test new -msg {call obj with namespace via mixin and instforward and next} \ - -pre {Object n; Object n::x; - Class M -instforward ::n::x; - Class N -superclass M -instproc x args {next}; - Class C -instmixin N; C create o} \ - -cmd {o x self} -expected ::n::x -count $cnt \ - -post {o destroy} -Test new -msg {return -code break} \ - -pre {Class A -instproc br {} {return -code break}; A create a1} \ - -cmd {catch {a1 br}} -expected 3 -count 2 \ - -post {A destroy; a1 destroy} - - -Test run; exit - - - Index: tests/xoRDF.test =================================================================== diff -u -N --- tests/xoRDF.test (revision 57c47e5fff431976511c200231567024bea09ff4) +++ tests/xoRDF.test (revision 0) @@ -1,1661 +0,0 @@ -# -*- Tcl -*- -# -package require XOTcl; namespace import -force xotcl::* - -lappend auto_path [file dir [info script]]/.. -#package require package;package verbose 1 -package require xotcl::rdf::parser -package require xotcl::rdf::recreatorVisitor -package require xotcl::rdf::triple - -proc errorCheck {expected result msg} { - set expected [string trim $expected \n] - set result [string trim $result \n] - foreach e [split $expected \n] r [split $result \n] { - set e [string trim $e] - set r [string trim $r] - if {$e != $r} { - puts stderr "FAILED: $msg\nGot: '$r'\nExpected: '$e'" - puts stderr "Full Result:\n$result" - puts stderr "RAW Triples:" - foreach t [lsort [tripleVisitor::db getTriples]] { - puts -nonewline stderr [$t dump] - } - exit -1 - return - } - } -} - -Class TestVisitor -superclass NodeTreeVisitor -TestVisitor instproc visit objName { - my append result [string trim [$objName print]] \n -} -TestVisitor instproc interpretNodeTree {node} { - my set result "" - $node accept [self] - return [my set result] -} - -TestVisitor testVisitor -RDFRecreatorVisitor reVisitor -TripleVisitor tripleVisitor -tripleVisitor proc interpret {parser topNode {asBag 1}} { - set result "" - my descriptionAsBag $asBag - my reset - my interpretNodeTree $topNode - return [[self]::db prettyTriples] - # foreach t [lsort [[self]::db getTriples]] { - # append result [string trim [$t dump]]\n - # } - # return $result -} - -RDFParser rp -rp proc time {cmd time} { - upvar $time ms - regexp {^(-?[0-9]+) } [::time {set r [eval $cmd]}] _ ms - return $r -} - -rp proc test {name text nodeResult tripleResult {descriptionAsBagResult ""}} { - my reset - foreach time {nodeTime recreateTime tripleTime} { - if {![my exists $time]} {my set $time 0} - } - my parse $text - set r [rp time [list testVisitor interpretNodeTree [self]::topNode1] ct] - regsub -all "[self]::topNode1" $r "" r - ::errorCheck $nodeResult $r "RDF Node Creation: $name" - - #set r [time [list reVisitor interpretNodeTree [self]::topNode1] rt] - #::errorCheck $recreateResult $r "RDF Recreation: $name" - set r [rp time [list tripleVisitor interpret rp [self]::topNode1 0] tt] - ::errorCheck $tripleResult $r "RDF Triples: $name" - if {$descriptionAsBagResult != ""} { - set r [tripleVisitor interpret rp [self]::topNode1 1] - ::errorCheck $descriptionAsBagResult $r "RDF Triples -- Description as Bag: $name" - } - - # test recreation by recreating XML text and by parsing - # and testing it again - set recreatedText [rp time [list reVisitor interpretNodeTree [self]::topNode1] rt] - [self]::topNode1 destroy - - my reset - my parse $recreatedText - - #puts "RECREATED: \n$recreatedText" - - # test recreated node tree - set r [testVisitor interpretNodeTree [self]::topNode1] - regsub -all "[self]::topNode1" $r "" r - ::errorCheck $nodeResult $r "RDF Node Recreation: $name" - set r [tripleVisitor interpret rp [self]::topNode1 0] - - ::errorCheck $tripleResult $r "RDF Triple Recreation: $name" - - my incr nodeTime $ct - my incr recreateTime $rt - my incr tripleTime $tt - puts "PASSED: $name ($ct + $rt + $tt)" -} - -############################################################################## -rp test "Namespace" { - - - - - xyz - dfg - - - - -} { -::xotcl::rdf::parser::RDFTag- --- RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- Description -ATTR: ID = nsd -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:ABC -PCDATA: -xyz -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- fromXYZ -PCDATA: -dfg -} { - http://www.w3.org/Home/Lassila http://description.org/schema/Creator nsd - nsd http://description.org/schema/ABC xyz - nsd http://xyz.com/fromXYZ dfg -} - -############################################################################## -rp test descriptionNestedNS { - - - Ora Lassila - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -PCDATA: -Ora Lassila -} { - http://www.w3.org/Home/Lassila http://description.org/schema/Creator Ora Lassila -} { - http://www.w3.org/Home/Lassila http://description.org/schema/Creator Ora Lassila - -=================== unreferenced: - rdfdoc#id1 #type #Bag - rdfdoc#id1 #_1 rdfdoc#id2 - rdfdoc#id2 #predicate http://description.org/schema/Creator - rdfdoc#id2 #subject http://www.w3.org/Home/Lassila - rdfdoc#id2 #object Ora Lassila - rdfdoc#id2 #type #Statement -} - -############################################################################## -rp test NSDescription { - - - Ora Lassila - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -PCDATA: -Ora Lassila -} { - http://www.w3.org/Home/Lassila http://description.org/schema/Creator Ora Lassila -} - -############################################################################## -rp test PropertyAttr { - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -PCDATA: -Ora Lassila -} { - http://www.w3.org/Home/Lassila s:Creator Ora Lassila -} - -############################################################################## -rp test properties { - - - World Wide Web Consortium - W3C Home Page - 1998-10-03T02:27 - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Publisher -PCDATA: -World Wide Web Consortium -::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- s:Title -PCDATA: -W3C Home Page -::xotcl::rdf::parser::RDFProperty-::res1::prop3 --- s:Date -PCDATA: -1998-10-03T02:27 -} { - http://www.w3.org s:Publisher World Wide Web Consortium - http://www.w3.org s:Title W3C Home Page - http://www.w3.org s:Date 1998-10-03T02:27 -} - -############################################################################## -rp test propertyAttr2 { - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Publisher -PCDATA: -World Wide Web Consortium -::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- s:Title -PCDATA: -W3C Home Page -::xotcl::rdf::parser::RDFProperty-::res1::prop3 --- s:Date -PCDATA: -1998-10-03T02:27 -} { - http://www.w3.org s:Publisher World Wide Web Consortium - http://www.w3.org s:Title W3C Home Page - http://www.w3.org s:Date 1998-10-03T02:27 -} - -############################################################################## -rp test bag1 { - - - - - - - - - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://mycollege.edu/courses/6.001 -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:students -::xotcl::rdf::parser::RDFBag-::res1::prop1::res1 --- rdf:Bag -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Amy -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Tim -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop3 --- rdf:li -ATTR: resource = http://mycollege.edu/students/John -MEMBER-INDEX: rdf:_3 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop4 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Mary -MEMBER-INDEX: rdf:_4 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop5 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Sue -MEMBER-INDEX: rdf:_5 -} { - http://mycollege.edu/courses/6.001 s:students rdfdoc#id2 - rdfdoc#id2 #type #Bag - rdfdoc#id2 #_1 http://mycollege.edu/students/Amy - rdfdoc#id2 #_2 http://mycollege.edu/students/Tim - rdfdoc#id2 #_3 http://mycollege.edu/students/John - rdfdoc#id2 #_4 http://mycollege.edu/students/Mary - rdfdoc#id2 #_5 http://mycollege.edu/students/Sue -} - - -############################################################################## -rp test bagGivenAsType1 { - - - - - - - - - - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://mycollege.edu/courses/6.001 -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:students -::xotcl::rdf::parser::RDFBag-::res1::prop1::res1 --- rdf:Bag -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Amy -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Tim -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop3 --- rdf:li -ATTR: resource = http://mycollege.edu/students/John -MEMBER-INDEX: rdf:_3 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop4 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Mary -MEMBER-INDEX: rdf:_4 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop5 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Sue -MEMBER-INDEX: rdf:_5 -} { - http://mycollege.edu/courses/6.001 s:students rdfdoc#id2 - rdfdoc#id2 #type #Bag - rdfdoc#id2 #_1 http://mycollege.edu/students/Amy - rdfdoc#id2 #_2 http://mycollege.edu/students/Tim - rdfdoc#id2 #_3 http://mycollege.edu/students/John - rdfdoc#id2 #_4 http://mycollege.edu/students/Mary - rdfdoc#id2 #_5 http://mycollege.edu/students/Sue -} - -############################################################################## -rp test bagGivenAsType2 { - - - - - - - - - - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://mycollege.edu/courses/6.001 -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:students -::xotcl::rdf::parser::RDFBag-::res1::prop1::res1 --- rdf:Bag -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Amy -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Tim -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop3 --- rdf:li -ATTR: resource = http://mycollege.edu/students/John -MEMBER-INDEX: rdf:_3 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop4 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Mary -MEMBER-INDEX: rdf:_4 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop5 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Sue -MEMBER-INDEX: rdf:_5 -} { - http://mycollege.edu/courses/6.001 s:students rdfdoc#id2 - rdfdoc#id2 #type #Bag - rdfdoc#id2 #_1 http://mycollege.edu/students/Amy - rdfdoc#id2 #_2 http://mycollege.edu/students/Tim - rdfdoc#id2 #_3 http://mycollege.edu/students/John - rdfdoc#id2 #_4 http://mycollege.edu/students/Mary - rdfdoc#id2 #_5 http://mycollege.edu/students/Sue -} - - -############################################################################## -rp test bagAndAltGivenAsType { - - - - - - - - - - - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://mycollege.edu/courses/6.001 -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:students -::xotcl::rdf::parser::RDFAlt-::res1::prop1::res1 --- rdf:Alt -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Amy -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Tim -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop3 --- rdf:li -ATTR: resource = http://mycollege.edu/students/John -MEMBER-INDEX: rdf:_3 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop4 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Mary -MEMBER-INDEX: rdf:_4 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop5 --- rdf:li -ATTR: resource = http://mycollege.edu/students/Sue -MEMBER-INDEX: rdf:_5 -} { - http://mycollege.edu/courses/6.001 s:students rdfdoc#id2 - rdfdoc#id2 #type #Alt - rdfdoc#id2 #type #Bag - rdfdoc#id2 #_1 http://mycollege.edu/students/Amy - rdfdoc#id2 #_2 http://mycollege.edu/students/Tim - rdfdoc#id2 #_3 http://mycollege.edu/students/John - rdfdoc#id2 #_4 http://mycollege.edu/students/Mary - rdfdoc#id2 #_5 http://mycollege.edu/students/Sue -} - -############################################################################## -rp test alt1 { - - - - - - - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://x.org/packages/X11 -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:DistributionSite -::xotcl::rdf::parser::RDFAlt-::res1::prop1::res1 --- rdf:Alt -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li -ATTR: resource = ftp://ftp.x.org -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li -ATTR: resource = ftp://ftp.cs.purdue.edu -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop3 --- rdf:li -ATTR: resource = ftp://ftp.eu.net -MEMBER-INDEX: rdf:_3 -} { - http://x.org/packages/X11 s:DistributionSite rdfdoc#id2 - rdfdoc#id2 #type #Alt - rdfdoc#id2 #_1 ftp://ftp.x.org - rdfdoc#id2 #_2 ftp://ftp.cs.purdue.edu - rdfdoc#id2 #_3 ftp://ftp.eu.net -} - -############################################################################## -rp test bag2 { - - - - - - - - Ora Lassila - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFBag-::res1 --- rdf:Bag -ATTR: ID = pages -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res1::prop1 --- rdf:li -ATTR: resource = http://foo.org/foo.html -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop2 --- rdf:li -ATTR: resource = http://bar.org/bar.html -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFDescription-::res2 --- rdf:Description -ATTR: about = #pages -::xotcl::rdf::parser::RDFProperty-::res2::prop1 --- s:Creator -PCDATA: -Ora Lassila -} { -=================== unreferenced: - rdfdoc#pages #type #Bag - rdfdoc#pages #_1 http://foo.org/foo.html - rdfdoc#pages #_2 http://bar.org/bar.html - rdfdoc#pages s:Creator Ora Lassila -} - -############################################################################## -rp test aboutEach { - - - (c) 1998, The Foo Organization - - - (c) 1998, The Foo Organization - - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: aboutEachPrefix = http://foo.org/doc -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Copyright -PCDATA: -(c) 1998, The Foo Organization -::xotcl::rdf::parser::RDFDescription-::res2 --- rdf:Description -ATTR: aboutEach = #docpages -::xotcl::rdf::parser::RDFProperty-::res2::prop1 --- s:Copyright -PCDATA: -(c) 1998, The Foo Organization -::xotcl::rdf::parser::RDFBag-::res3 --- rdf:Bag -ATTR: ID = docpages -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res3::prop1 --- rdf:li -ATTR: resource = http://foo.org/doc/page1 -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res3::prop2 --- rdf:li -ATTR: resource = http://foo.org/doc/page2 -MEMBER-INDEX: rdf:_2 -} { - http://foo.org/doc/page1 http://description.org/schema/Copyright (c) 1998, The Foo Organization - http://foo.org/doc/page2 http://description.org/schema/Copyright (c) 1998, The Foo Organization - -=================== unreferenced: - rdfdoc#docpages #type #Bag - rdfdoc#docpages #_1 http://foo.org/doc/page1 - rdfdoc#docpages #_2 http://foo.org/doc/page2 -} - -############################################################################## -rp test "BagID on List" { - - - - - - - - - Me - - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: aboutEach = #docpages -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:somebag -::xotcl::rdf::parser::RDFBag-::res1::prop1::res1 --- rdf:Bag -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li -ATTR: resource = http://foo.org/foo.html -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li -ATTR: resource = http://bar.org/bar.html -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- s:Creator -PCDATA: -Me -::xotcl::rdf::parser::RDFBag-::res2 --- rdf:Bag -ATTR: ID = docpages -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res2::prop1 --- rdf:li -ATTR: resource = http://foo.org/doc/page1 -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res2::prop2 --- rdf:li -ATTR: resource = http://foo.org/doc/page2 -MEMBER-INDEX: rdf:_2 -} { - http://foo.org/doc/page1 http://description.org/schema/somebag rdfdoc#id2 - rdfdoc#id2 #type #Bag - rdfdoc#id2 #_1 http://foo.org/foo.html - rdfdoc#id2 #_2 http://bar.org/bar.html - http://foo.org/doc/page1 http://description.org/schema/Creator Me - http://foo.org/doc/page2 http://description.org/schema/somebag rdfdoc#id2 - http://foo.org/doc/page2 http://description.org/schema/Creator Me - -=================== unreferenced: - rdfdoc#docpages #type #Bag - rdfdoc#docpages #_1 http://foo.org/doc/page1 - rdfdoc#docpages #_2 http://foo.org/doc/page2 -} - -############################################################################## -rp test "Sharing Values" { - - - - - - - - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFSeq-::res1 --- rdf:Seq -ATTR: ID = JSPapersByDate -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq -::xotcl::rdf::parser::RDFMember-::res1::prop1 --- rdf:li -ATTR: resource = http://www.dogworld.com/Aug96.doc -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop2 --- rdf:li -ATTR: resource = http://www.webnuts.net/Jan97.html -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFMember-::res1::prop3 --- rdf:li -ATTR: resource = http://www.carchat.com/Sept97.html -MEMBER-INDEX: rdf:_3 -::xotcl::rdf::parser::RDFSeq-::res2 --- rdf:Seq -ATTR: ID = JSPapersBySubj -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq -::xotcl::rdf::parser::RDFMember-::res2::prop1 --- rdf:li -ATTR: resource = http://www.carchat.com/Sept97.html -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res2::prop2 --- rdf:li -ATTR: resource = http://www.dogworld.com/Aug96.doc -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFMember-::res2::prop3 --- rdf:li -ATTR: resource = http://www.webnuts.net/Jan97.html -MEMBER-INDEX: rdf:_3 -} { -=================== unreferenced: - rdfdoc#JSPapersByDate #type #Seq - rdfdoc#JSPapersByDate #_1 http://www.dogworld.com/Aug96.doc - rdfdoc#JSPapersByDate #_2 http://www.webnuts.net/Jan97.html - rdfdoc#JSPapersByDate #_3 http://www.carchat.com/Sept97.html - rdfdoc#JSPapersBySubj #type #Seq - rdfdoc#JSPapersBySubj #_1 http://www.carchat.com/Sept97.html - rdfdoc#JSPapersBySubj #_2 http://www.dogworld.com/Aug96.doc - rdfdoc#JSPapersBySubj #_3 http://www.webnuts.net/Jan97.html -} - -############################################################################## - -rp test "aggregates" { - - - - - Mary Andrew - Jacky Crystal - - - - - - - - - - - - - The Coolest Web Page - Il Pagio di Web Fuba - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.foo.com/cool.html -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- dc:Creator -::xotcl::rdf::parser::RDFSeq-::res1::prop1::res1 --- rdf:Seq -ATTR: ID = CreatorsAlphabeticalBySurname -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop1 --- rdf:li -PCDATA: -Mary Andrew -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop1::res1::prop2 --- rdf:li -PCDATA: -Jacky Crystal -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- dc:Identifier -::xotcl::rdf::parser::RDFBag-::res1::prop2::res1 --- rdf:Bag -ATTR: ID = MirroredSites -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop1 --- rdf:li -ATTR: rdf:resource = http://www.foo.com.au/cool.html -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop2 --- rdf:li -ATTR: rdf:resource = http://www.foo.com.it/cool.html -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFProperty-::res1::prop3 --- dc:Title -::xotcl::rdf::parser::RDFAlt-::res1::prop3::res1 --- rdf:Alt -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt -::xotcl::rdf::parser::RDFMember-::res1::prop3::res1::prop1 --- rdf:li -ATTR: xml:lang = en -PCDATA: -The Coolest Web Page -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop3::res1::prop2 --- rdf:li -ATTR: xml:lang = it -PCDATA: -Il Pagio di Web Fuba -MEMBER-INDEX: rdf:_2 -} { - http://www.foo.com/cool.html http://purl.org/metadata/dublin_core#Creator rdfdoc#CreatorsAlphabeticalBySurname - rdfdoc#CreatorsAlphabeticalBySurname #type #Seq - rdfdoc#CreatorsAlphabeticalBySurname #_1 Mary Andrew - rdfdoc#CreatorsAlphabeticalBySurname #_2 Jacky Crystal - http://www.foo.com/cool.html http://purl.org/metadata/dublin_core#Identifier rdfdoc#MirroredSites - rdfdoc#MirroredSites #type #Bag - rdfdoc#MirroredSites #_1 http://www.foo.com.au/cool.html - rdfdoc#MirroredSites #_2 http://www.foo.com.it/cool.html - http://www.foo.com/cool.html http://purl.org/metadata/dublin_core#Title rdfdoc#id4 - rdfdoc#id4 #type #Alt - rdfdoc#id4 #_1 The Coolest Web Page - rdfdoc#id4 #_2 Il Pagio di Web Fuba -} - -############################################################################## -rp test "bagReification" { - - - - literal, well-formed tag - - - xyz - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFBag-::res1 --- rdf:Bag -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res1::prop1 --- rdf:li -ATTR: parseType = Literal -PCDATA: - - literal, well-formed tag - -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res1::prop2 --- rdf:li -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1 --- s:x -PCDATA: -xyz -} { -=================== unreferenced: - rdfdoc#id1 #type #Bag - rdfdoc#id1 #_1 - literal, well-formed tag - - rdfdoc#id1 #_2 rdfdoc#id2 - rdfdoc#id2 http://description.org/schema/x xyz -} - -# the following reification is done by SirPac, but it does not seem necessary -# (uncomment reify property in RDFTriple, if needed -#{ -#=================== unreferenced: -# rdfdoc#id1 #type #Bag -# rdfdoc#id1 #_1 -# literal, well-formed tag -# -# rdfdoc#id1 #_2 rdfdoc#id2 -# rdfdoc#id2 http://description.org/schema/x xyz -# rdfdoc#id3 #predicate http://description.org/schema/x -# rdfdoc#id3 #subject rdfdoc#id2 -# rdfdoc#id3 #object xyz -# rdfdoc#id3 #type #Statement -#} - -############################################################################## -rp test "parseLiteral" { - - - - xyz - - - - - - - xyz - - - - - - - - - - - - - - literal, well-formed tag - - - literal, well-formed tag - - - xyz - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://mycollege.edu/ -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:students -ATTR: parseType = Literal -PCDATA: - - xyz -::xotcl::rdf::parser::RDFDescription-::res2 --- rdf:Description -ATTR: about = http://mycollege.edu/ -::xotcl::rdf::parser::RDFProperty-::res2::prop1 --- s:students -ATTR: parseType = Literal -PCDATA: - - - xyz - - - - - - - - -::xotcl::rdf::parser::RDFBag-::res3 --- rdf:Bag -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res3::prop1 --- rdf:li -ATTR: parseType = Literal -PCDATA: - - literal, well-formed tag - -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFMember-::res3::prop2 --- rdf:li -ATTR: parseType = AllOtherMustbeLiteral -PCDATA: - - literal, well-formed tag - -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFMember-::res3::prop3 --- rdf:li -MEMBER-INDEX: rdf:_3 -::xotcl::rdf::parser::RDFDescription-::res3::prop3::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res3::prop3::res1::prop1 --- s:x -PCDATA: -xyz -} { - http://mycollege.edu/ http://description.org/schema/students - xyz - - http://mycollege.edu/ http://description.org/schema/students - - xyz - - - - - - - - - - -=================== unreferenced: - rdfdoc#id3 #type #Bag - rdfdoc#id3 #_1 - literal, well-formed tag - - rdfdoc#id3 #_2 - literal, well-formed tag - - rdfdoc#id3 #_3 rdfdoc#id4 - rdfdoc#id4 http://description.org/schema/x xyz -} - -############################################################################## -rp test typedNode1 { - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.xyz.com -TYPES: http://purl.org/dc/elements/1.0/typed -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- DC:Creator -ATTR: rdf:resource = http://www.xyz.com/homepage/ -} { - http://www.xyz.com http://purl.org/dc/elements/1.0/Creator http://www.xyz.com/homepage/ - http://www.xyz.com #type http://purl.org/dc/elements/1.0/typed -} - -################################################################### -## UWE: im wiedererzeugten XML/RDF fehlt m.M. das parseType="Resosurce" - -rp test nestedProperty { - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- Description -ATTR: about = http://www.webnuts.net/Jan97.html -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- dc:Subject -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- value -PCDATA: -020 - Library Science -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- l:Classification -PCDATA: -Dewey Decimal Code -} { - http://www.webnuts.net/Jan97.html http://purl.org/metadata/dublin_core#Subject rdfdoc#id2 - rdfdoc#id2 #value 020 - Library Science - rdfdoc#id2 http://mycorp.com/schemas/my-schema#Classification Dewey Decimal Code -} - - -rp test nestedProperty2 { - - - - 020 - Library Science - Dewey Decimal Code - - - -} { -::xotcl::rdf::parser::RDFTag- --- RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- Description -ATTR: about = http://www.webnuts.net/Jan97.html -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- dc:Subject -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- value -PCDATA: -020 - Library Science -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- l:Classification -PCDATA: -Dewey Decimal Code -} { - http://www.webnuts.net/Jan97.html http://purl.org/metadata/dublin_core#Subject rdfdoc#id2 - rdfdoc#id2 #value 020 - Library Science - rdfdoc#id2 http://mycorp.com/schemas/my-schema#Classification Dewey Decimal Code - -} - -rp test nestedProperty3 { - - - - - 020 - Library Science - Dewey Decimal Code - - - - -} { -::xotcl::rdf::parser::RDFTag- --- RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- Description -ATTR: about = http://www.webnuts.net/Jan97.html -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- dc:Subject -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- Description -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- value -PCDATA: -020 - Library Science -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- l:Classification -PCDATA: -Dewey Decimal Code -} { - http://www.webnuts.net/Jan97.html http://purl.org/metadata/dublin_core#Subject rdfdoc#id2 - rdfdoc#id2 #value 020 - Library Science - rdfdoc#id2 http://mycorp.com/schemas/my-schema#Classification Dewey Decimal Code - -} - -rp test nestedProperty4 { - - - - 020 - Library Science - - en - Dewey Decimal Code - - - - -} { -::xotcl::rdf::parser::RDFTag- --- RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- Description -ATTR: about = http://www.webnuts.net/Jan97.html -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- dc:Subject -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- value -PCDATA: -020 - Library Science -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- l:Classification -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1::prop2::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2::res1::prop1 --- l:lang -PCDATA: -en -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2::res1::prop2 --- l:string -PCDATA: -Dewey Decimal Code -} { - http://www.webnuts.net/Jan97.html http://purl.org/metadata/dublin_core#Subject rdfdoc#id2 - rdfdoc#id2 #value 020 - Library Science - rdfdoc#id2 http://mycorp.com/schemas/my-schema#Classification rdfdoc#id3 - rdfdoc#id3 http://mycorp.com/schemas/my-schema#lang en - rdfdoc#id3 http://mycorp.com/schemas/my-schema#string Dewey Decimal Code -} - -rp test thirdAbbrev1 { - - - - - - Ora Lassila - lassila@w3.org - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -ATTR: about = http://www.w3.org/staffId/85740 -TYPES: http://description.org/schema/Person -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name -PCDATA: -Ora Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email -PCDATA: -lassila@w3.org -} { - http://www.w3.org/Home/Lassila http://description.org/schema/Creator http://www.w3.org/staffId/85740 - http://www.w3.org/staffId/85740 http://description.org/schema/Name Ora Lassila - http://www.w3.org/staffId/85740 http://description.org/schema/Email lassila@w3.org - http://www.w3.org/staffId/85740 #type http://description.org/schema/Person -} - -rp test thirdAbbrev2 { - - - - - - Ora Lassila - lassila@w3.org - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -TYPES: http://description.org/schema/Person -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name -PCDATA: -Ora Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email -PCDATA: -lassila@w3.org -} { - http://www.w3.org/Home/Lassila http://description.org/schema/Creator rdfdoc#id2 - rdfdoc#id2 http://description.org/schema/Name Ora Lassila - rdfdoc#id2 http://description.org/schema/Email lassila@w3.org - rdfdoc#id2 #type http://description.org/schema/Person -} - -rp test thirdAbbrev3 { - - - - - Ora Lassila - lassila@w3.org - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -ATTR: about = http://www.w3.org/staffId/85740 -TYPES: http://description.org/schema/Person -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name -PCDATA: -Ora Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email -PCDATA: -lassila@w3.org -} { - http://www.w3.org/Home/Lassila http://description.org/schema/Creator http://www.w3.org/staffId/85740 - http://www.w3.org/staffId/85740 http://description.org/schema/Name Ora Lassila - http://www.w3.org/staffId/85740 http://description.org/schema/Email lassila@w3.org - http://www.w3.org/staffId/85740 #type http://description.org/schema/Person -} - -rp test thirdAbbrev4 { - - - - - Ora Lassila - lassila@w3.org - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -TYPES: http://description.org/schema/Person -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name -PCDATA: -Ora Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email -PCDATA: -lassila@w3.org -} { - http://www.w3.org/Home/Lassila http://description.org/schema/Creator rdfdoc#id2 - rdfdoc#id2 http://description.org/schema/Name Ora Lassila - rdfdoc#id2 http://description.org/schema/Email lassila@w3.org - rdfdoc#id2 #type http://description.org/schema/Person -} - - -rp test secondAbbrev1 { - - - - - Ora Lassila - lassila@w3.org - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -ATTR: about = http://www.w3.org/staffId/85740 -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name -PCDATA: -Ora Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email -PCDATA: -lassila@w3.org -} { - http://www.w3.org/Home/Lassila http://description.org/schema/Creator http://www.w3.org/staffId/85740 - http://www.w3.org/staffId/85740 http://description.org/schema/Name Ora Lassila - http://www.w3.org/staffId/85740 http://description.org/schema/Email lassila@w3.org -} - -rp test secondAbbrev2 { - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -ATTR: about = http://www.w3.org/staffId/85740 -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name -PCDATA: -Ora Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email -PCDATA: -lassila@w3.org -} { - http://www.w3.org/Home/Lassila http://description.org/schema/Creator http://www.w3.org/staffId/85740 - http://www.w3.org/staffId/85740 http://description.org/schema/Name Ora Lassila - http://www.w3.org/staffId/85740 http://description.org/schema/Email lassila@w3.org -} - -rp test secondAbbrev3 { - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- s:Name -PCDATA: -Ora Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- s:Email -PCDATA: -lassila@w3.org -} { - http://www.w3.org/Home/Lassila http://description.org/schema/Creator rdfdoc#id2 - rdfdoc#id2 http://description.org/schema/Name Ora Lassila - rdfdoc#id2 http://description.org/schema/Email lassila@w3.org -} - - -################################################################### -rp test resource1 { - - - - - - - Ora Lassila - lassila@w3.org - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -ATTR: rdf:resource = http://www.w3.org/staffId/85740 -::xotcl::rdf::parser::RDFDescription-::res2 --- rdf:Description -ATTR: about = http://www.w3.org/staffId/85740 -::xotcl::rdf::parser::RDFProperty-::res2::prop1 --- v:Name -PCDATA: -Ora Lassila -::xotcl::rdf::parser::RDFProperty-::res2::prop2 --- v:Email -PCDATA: -lassila@w3.org -} { - http://www.w3.org/Home/Lassila http://schema.org/Creator http://www.w3.org/staffId/85740 - http://www.w3.org/staffId/85740 v:Name Ora Lassila - http://www.w3.org/staffId/85740 v:Email lassila@w3.org -} - -################################################################### -rp test resource2 { - - - - - Ora Lassila - lassila@w3.org - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.w3.org/Home/Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Creator -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -ATTR: about = http://www.w3.org/staffId/85740 -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- v:Name -PCDATA: -Ora Lassila -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- v:Email -PCDATA: -lassila@w3.org -} { - http://www.w3.org/Home/Lassila http://schema.org/Creator http://www.w3.org/staffId/85740 - http://www.w3.org/staffId/85740 v:Name Ora Lassila - http://www.w3.org/staffId/85740 v:Email lassila@w3.org -} - - - -################################################################### -rp test typedNode1 { - - - Uwe Zdun - uwe@xotcl.org - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://www.xotcl.org/uwe -TYPES: http://description.org/schema/Person -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- s:Name -PCDATA: -Uwe Zdun -::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- s:Email -PCDATA: -uwe@xotcl.org -} { - http://www.xotcl.org/uwe http://description.org/schema/Name Uwe Zdun - http://www.xotcl.org/uwe http://description.org/schema/Email uwe@xotcl.org - http://www.xotcl.org/uwe #type http://description.org/schema/Person -} - -rp test typedNode2 { - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: rdf:about = http://www.xotcl.org/uwe -TYPES: http://description.org/schema/Person -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- Name -PCDATA: -Uwe Zdun -::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- Email -PCDATA: -uwe@xotcl.org -} { - http://www.xotcl.org/uwe http://description.org/schema/Name Uwe Zdun - http://www.xotcl.org/uwe http://description.org/schema/Email uwe@xotcl.org - http://www.xotcl.org/uwe #type http://description.org/schema/Person -} - -################################################################### -rp test complexListItems { - - - - - en - Object Oriented Design and System Development - - - - - en - Introduction to the concepts of object-oriented programing - - - de - Einf�hrung in die Konzepte objekt-orientierter Programmierung - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://nm.wu-wien.ac.at/Lehre/oo1/ -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- gen:Title -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- xml:lang -PCDATA: -en -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- gen:String -PCDATA: -Object Oriented Design and System Development -::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- gen:Description -::xotcl::rdf::parser::RDFBag-::res1::prop2::res1 --- rdf:Bag -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag -::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop1 --- rdf:li -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1::prop1::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1::res1::prop1 --- xml:lang -PCDATA: -en -::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1::res1::prop2 --- gen:String -PCDATA: -Introduction to the concepts of object-oriented programing -::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop2 --- rdf:li -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1::prop2::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop2::res1::prop1 --- xml:lang -PCDATA: -de -::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop2::res1::prop2 --- gen:String -PCDATA: -Einf�hrung in die Konzepte objekt-orientierter Programmierung -} { - http://nm.wu-wien.ac.at/Lehre/oo1/ http://universal.org/metadata/ims#Title rdfdoc#id2 - rdfdoc#id2 xml:lang en - rdfdoc#id2 http://universal.org/metadata/ims#String Object Oriented Design and System Development - http://nm.wu-wien.ac.at/Lehre/oo1/ http://universal.org/metadata/ims#Description rdfdoc#id3 - rdfdoc#id3 #type #Bag - rdfdoc#id3 #_1 rdfdoc#id4 - rdfdoc#id4 xml:lang en - rdfdoc#id4 http://universal.org/metadata/ims#String Introduction to the concepts of object-oriented programing - rdfdoc#id3 #_2 rdfdoc#id5 - rdfdoc#id5 xml:lang de - rdfdoc#id5 http://universal.org/metadata/ims#String Einf�hrung in die Konzepte objekt-orientierter Programmierung -} - -################################################################### -rp test complexListItems2 { - - - - - en - Object Oriented Design and System Development - - - - - - en - Introduction to the concepts of object-oriented programing - - - - de - Einf�hrung in die Konzepte objekt-orientierter Programmierung - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = http://nm.wu-wien.ac.at/Lehre/oo1/ -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- gen:Title -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- xml:lang -PCDATA: -en -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- gen:String -PCDATA: -Object Oriented Design and System Development -::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- gen:Description -::xotcl::rdf::parser::RDFSeq-::res1::prop2::res1 --- rdf:Seq -TYPES: http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq -::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop1 --- rdf:li -MEMBER-INDEX: rdf:_1 -::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1::prop1::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1::res1::prop1 --- cls:entry -::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1::prop1::res1::prop1::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1::res1::prop1::res1::prop1 --- gen:language -PCDATA: -en -::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop1::res1::prop1::res1::prop2 --- gen:String -PCDATA: -Introduction to the concepts of object-oriented programing -::xotcl::rdf::parser::RDFMember-::res1::prop2::res1::prop2 --- rdf:li -MEMBER-INDEX: rdf:_2 -::xotcl::rdf::parser::RDFDescription-::res1::prop2::res1::prop2::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop2::res1::prop1 --- xml:lang -PCDATA: -de -::xotcl::rdf::parser::RDFProperty-::res1::prop2::res1::prop2::res1::prop2 --- gen:String -PCDATA: -Einf�hrung in die Konzepte objekt-orientierter Programmierung -} { - http://nm.wu-wien.ac.at/Lehre/oo1/ http://universal.org/metadata/ims#Title rdfdoc#id2 - rdfdoc#id2 xml:lang en - rdfdoc#id2 http://universal.org/metadata/ims#String Object Oriented Design and System Development - http://nm.wu-wien.ac.at/Lehre/oo1/ http://universal.org/metadata/ims#Description rdfdoc#id3 - rdfdoc#id3 #type #Seq - rdfdoc#id3 #_1 rdfdoc#id4 - rdfdoc#id4 cls:entry rdfdoc#id5 - rdfdoc#id5 http://universal.org/metadata/ims#language en - rdfdoc#id5 http://universal.org/metadata/ims#String Introduction to the concepts of object-oriented programing - rdfdoc#id3 #_2 rdfdoc#id6 - rdfdoc#id6 xml:lang de - rdfdoc#id6 http://universal.org/metadata/ims#String Einf�hrung in die Konzepte objekt-orientierter Programmierung -} - -################################################################### -rp test dmoz { - - - - Computers - - - - -} { -::xotcl::rdf::parser::RDFTag- --- r:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- r:Description -ATTR: r:ID = Top/Computers -TYPES: http://dmoz.org/rdf/Topic -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- tag -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- r:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- catid -PCDATA: -4 -::xotcl::rdf::parser::RDFProperty-::res1::prop2 --- d:Title -PCDATA: -Computers -::xotcl::rdf::parser::RDFProperty-::res1::prop3 --- link -ATTR: r:resource = http://www.cs.tcd.ie/FME/ -::xotcl::rdf::parser::RDFProperty-::res1::prop4 --- link -ATTR: r:resource = http://pages.whowhere.com/computers/pnyhlen/Timeline.html -} { - Top/Computers http://dmoz.org/rdf/tag rdfdoc#id2 - rdfdoc#id2 http://dmoz.org/rdf/catid 4 - Top/Computers http://purl.org/dc/elements/1.0/Title Computers - Top/Computers http://dmoz.org/rdf/link http://www.cs.tcd.ie/FME/ - Top/Computers http://dmoz.org/rdf/link http://pages.whowhere.com/computers/pnyhlen/Timeline.html - Top/Computers #type http://dmoz.org/rdf/Topic -} - -############################################################################## -rp test "IDforNestedDescription" { - - - - - -} { -::xotcl::rdf::parser::RDFTag- --- rdf:RDF -::xotcl::rdf::parser::RDFDescription-::res1 --- rdf:Description -ATTR: about = page -::xotcl::rdf::parser::RDFProperty-::res1::prop1 --- g2k:area -ATTR: rdf:ID = b14711 -::xotcl::rdf::parser::RDFDescription-::res1::prop1::res1 --- rdf:Description -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop1 --- g2k:term -PCDATA: -Hessen -::xotcl::rdf::parser::RDFProperty-::res1::prop1::res1::prop2 --- g2k:type -PCDATA: -Land -} { - b14711 http://g2k-schema#term Hessen - b14711 http://g2k-schema#type Land - page http://g2k-schema#area b14711 -} - -puts "FINISHED TEST! ([rp set nodeTime] + [rp set recreateTime] + [rp set tripleTime] = [expr {[rp set nodeTime] + [rp set recreateTime] + [rp set tripleTime]}])" -