Index: openacs-4/packages/xowiki/www/admin/test.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/admin/Attic/test.tcl,v
diff -u -r1.20 -r1.21
--- openacs-4/packages/xowiki/www/admin/test.tcl 1 Jul 2009 09:12:42 -0000 1.20
+++ openacs-4/packages/xowiki/www/admin/test.tcl 5 Nov 2009 13:09:57 -0000 1.21
@@ -7,7 +7,7 @@
test proc section msg {my reset; ns_write "
$msg
"}
test proc subsection msg {ns_write "$msg
"}
test proc subsubsection msg {ns_write "$msg
"}
-test proc errmsg msg {ns_write "ERROR: $msg
"; test incr failed}
+test proc errmsg msg {my code "ERROR: [string map [list < {<} > {>}] $msg]
";test incr failed}
test proc okmsg msg {ns_write "OK: $msg
"; test incr passed}
test proc code msg {ns_write "$msg
"}
test proc hint msg {ns_write "$msg
"}
@@ -48,7 +48,7 @@
set r [uplevel $cmd]
if {$msg eq ""} {set msg $cmd}
if {$r ne $expected} {
- test errmsg "$msg returned
'$r' ne
'$expected'"
+ test errmsg "$msg returned \n '$r' ne \n '$expected'"
} else {
test okmsg "$msg - passed ([t1 diff] ms)"
}
@@ -579,7 +579,7 @@
-
+########################################################################
test subsection "Filter expressions"
? {::xowiki::FormPage filter_expression \
@@ -607,6 +607,459 @@
filter_expr_unless_1
+
+########################################################################
+test section "Item refs"
+#
+# Testing item refs and wiki links (between [[ .... ]])
+#
+# Still missing:
+# - test reverse mappings from urls generated from item-refs back to item_ids
+# - syntax Person:de:p1 (if de:p1 does not exist, create an instance of Person name de:p1)
+# - typed links (glossary app)... important?
+# - interaction between PackagePath and folders (would be nice to inherit from folders, not packages)
+#
+# Save this file in openacs-4/www/item-ref-test.tcl and run it via
+# http://..../item-ref-test
+#
+#
+
+# proc ? {cmd expected {msg ""}} {
+# ::xo::Timestamp t1
+# set r [uplevel $cmd]
+# if {$msg eq ""} {set msg $cmd}
+# if {$r ne $expected} {
+# regsub -all \# $r "" r
+# append ::_ "Error: $msg returned \n'$r' ne \n'$expected'\n"
+# } else {
+# append ::_ "$msg - passed ([t1 diff] ms)\n"
+# }
+# }
+
+ # "require_folder" and "require_page" are here just for testing
+ proc require_folder {name parent_id package_id} {
+ set item_id [::xo::db::CrClass lookup -name $name -parent_id $parent_id]
+ if {$item_id == 0} {
+ set f [::xo::db::CrFolder new -name $name -label $name -description "" \
+ -parent_id $parent_id -package_id $package_id]
+ $f save_new
+ set item_id [$f folder_id]
+ }
+ test hint " $name => $item_id\n"
+ return $item_id
+ }
+ proc require_page {name parent_id package_id {file_content ""}} {
+ set item_id [::xo::db::CrClass lookup -name $name -parent_id $parent_id]
+ if {$item_id == 0} {
+ if {$file_content eq ""} {
+ set f [::xowiki::Page new -name $name -description "" \
+ -parent_id $parent_id -package_id $package_id -text [list "Content of $name" text/html]]
+ } else {
+ set mime_type [::xowiki::guesstype $name]
+ set f [::xowiki::File new -name $name -description "" \
+ -parent_id $parent_id -package_id $package_id -mime_type $mime_type]
+ set import_file [ns_tmpnam]
+ ::xowiki::write_file $import_file [::base64::decode $file_content]
+ $f set import_file $import_file
+ }
+ $f save_new
+ set item_id [$f item_id]
+ }
+ ns_log notice "Page $name => $item_id"
+ test hint " $name => $item_id\n"
+ return $item_id
+ }
+ proc label {intro case ref} {return "$intro '$ref' -- $case"}
+
+ #some test cases
+ ::xowiki::Package initialize -url /$instance_name/
+ ::xowiki::Page create p -package_id $package_id -nls_language de_DE -parent_id [$package_id folder_id]
+ p set unresolved_references 0
+
+ test subsection "Ingredients:"
+ set folder_id [$package_id folder_id]
+
+ # make sure, we have folder "foldername" with subfolder "f3" with subfolder "subf3"
+ set foldername_id [require_folder "foldername" $folder_id $package_id]
+ set f3_id [require_folder "f3" $foldername_id $package_id]
+ set subf3_id [require_folder "subf3" $f3_id $package_id]
+
+ # make sure, we have the test pages
+ set parentpage_id [require_page de:parentpage $folder_id $package_id]
+ set testpage_id [require_page de:testpage $foldername_id $package_id]
+
+ set childfolder_id [require_folder "childfolder" $parentpage_id $package_id]
+ set childpage_id [require_page "de:childpage" $parentpage_id $package_id]
+
+ set image_id [require_page file:image.png $folder_id $package_id \
+ "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAAxJREFUCNdj\n+P//PwAF/gL+3MxZ5wAAAABJRU5ErkJggg=="]
+
+ ################################
+ test subsection "Toplevel Tests:"
+
+ set l "folder:foldername"
+ set test [label "item_ref" "existing topfolder" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "foldername"
+ && $(parent_id) eq $folder_id && $(item_id) == $foldername_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "de:parentpage"
+ set test [label "item_ref" "existing page in root_folder" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "parentpage"
+ && $(parent_id) eq $folder_id && $(item_id) == $parentpage_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/"
+ set test [label "item_ref" "existing topfolder short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "foldername"
+ && $(parent_id) eq $folder_id && $(item_id) == $foldername_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername";# this works, since "foldername" exists
+ set test [label "item_ref" "existing topfolder short + lookup" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "foldername"
+ && $(parent_id) eq $folder_id && $(item_id) == $foldername_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "page1";# last item per default page
+ set test [label "item_ref" "not existing page short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "page1"
+ && $(parent_id) eq $folder_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "parentpage"
+ set test [label "item_ref" "existing page short (without language prefix)" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "parentpage"
+ && $(parent_id) eq $folder_id && $(item_id) == $parentpage_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "image:img1"
+ set test [label "item_ref" "not existing image" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "image" && $(prefix) eq "file" && $(stripped_name) eq "img1"
+ && $(parent_id) eq $folder_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "image:image.png"
+ set test [label "item_ref" "existing image" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "image" && $(prefix) eq "file" && $(stripped_name) eq "image.png"
+ && $(parent_id) eq $folder_id && $(item_id) == $image_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "file:file1"
+ set test [label "item_ref" "not existing file" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "file" && $(prefix) eq "file" && $(stripped_name) eq "file1"
+ && $(parent_id) eq $folder_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "file:image.png"
+ set test [label "item_ref" "existing file" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "file" && $(prefix) eq "file" && $(stripped_name) eq "image.png"
+ && $(parent_id) eq $folder_id && $(item_id) == $image_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "image.png"
+ set test [label "item_ref" "existing image short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "image" && $(prefix) eq "file" && $(stripped_name) eq "image.png"
+ && $(parent_id) eq $folder_id && $(item_id) == $image_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "image1.png"
+ set test [label "item_ref" "not existing image short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "image" && $(prefix) eq "file" && $(stripped_name) eq "image1.png"
+ && $(parent_id) eq $folder_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "flashfile.swf"
+ set test [label "item_ref" "not existing flash file short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "swf" && $(prefix) eq "file" && $(stripped_name) eq "flashfile.swf"
+ && $(parent_id) eq $folder_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ ################################
+ test subsection "Relative to current folder:"
+
+ set l "./parentpage"
+ set test [label "item_ref" "existing page short (without prefixuage prefix), relative" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "parentpage"
+ && $(parent_id) eq $folder_id && $(item_id) == $parentpage_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "./de:parentpage"
+ set test [label "item_ref" "existing page in root_folder, relative" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "parentpage"
+ && $(parent_id) eq $folder_id && $(item_id) == $parentpage_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "./foldername/"
+ set test [label "item_ref" "existing topfolder short, relative" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "foldername"
+ && $(parent_id) eq $folder_id && $(item_id) == $foldername_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "./foldername";# this works, since "foldername" exists
+ set test [label "item_ref" "existing topfolder short + lookup, relative" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "foldername"
+ && $(parent_id) eq $folder_id && $(item_id) == $foldername_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "./page1";# last item per default page
+ set test [label "item_ref" "not existing page short, relative" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "page1"
+ && $(parent_id) eq $folder_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "./parentpage/"
+ set test [label "item_ref" "non existing folder (with same name of existing page) in root_folder, relative" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "parentpage"
+ && $(parent_id) eq $folder_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "./" ;# stripped name will be the name of the root folder, omit from test
+ set test [label "item_ref" "dot with slash, relative" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq ""
+ && $(parent_id) == -100 && $(item_id) == $folder_id}} 1 "\n$test:\n [array get {}]\n "
+
+ ################################
+ test subsection "Ending with dot:"
+
+ set l "." ;# stripped name will be the name of the root folder, omit from test
+ set test [label "item_ref" "dot with slash, relative" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq ""
+ && $(parent_id) eq -100 && $(item_id) == $folder_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "./foldername/."
+ set test [label "item_ref" "existing topfolder short, relative" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "foldername"
+ && $(parent_id) eq $folder_id && $(item_id) == $foldername_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "./parentpage/."
+ set test [label "item_ref" "existing page short (without language prefix), relative" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "parentpage"
+ && $(parent_id) eq $folder_id && $(item_id) == $parentpage_id}} 1 "\n$test:\n [array get {}]\n "
+
+ ################################
+ test subsection "Under folder:"
+
+ set l "folder:foldername/folder:f3"
+ set test [label "item_ref" "existing subfolder" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "f3"
+ && $(parent_id) eq $foldername_id && $(item_id) == $f3_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "folder:foldername/f3/"
+ set test [label "item_ref" "existing subfolder short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "f3"
+ && $(parent_id) eq $foldername_id && $(item_id) == $f3_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "./folder:foldername/folder:f3/"
+ set test [label "item_ref" "existing subfolder with prefix and trailing slash" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "f3"
+ && $(parent_id) eq $foldername_id && $(item_id) == $f3_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/f3/"
+ set test [label "item_ref" "existing subfolder short short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "f3"
+ && $(parent_id) eq $foldername_id && $(item_id) == $f3_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "folder:foldername1/folder:f3"
+ set test [label "item_ref" "not existing folder with subfolder" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "foldername1"
+ && $(parent_id) eq $folder_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername1/folder/"
+ set test [label "item_ref" "not existing folder with subfolder short short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "foldername1"
+ && $(parent_id) eq $folder_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/folder1/"
+ set test [label "item_ref" "existing folder with not existing subfolder short short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "folder1"
+ && $(parent_id) eq $foldername_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/page1"
+ set test [label "item_ref" "existing folder with not existing page short short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "page1"
+ && $(parent_id) eq $foldername_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "folder:foldername/folder:f3/folder:subf3"
+ set test [label "item_ref" "existing subsubfolder" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "subf3"
+ && $(parent_id) eq $f3_id && $(item_id) == $subf3_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/f3/subf3"
+ set test [label "item_ref" "existing subsubfolder short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "subf3"
+ && $(parent_id) eq $f3_id && $(item_id) == $subf3_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/f3/subf3/."
+ set test [label "item_ref" "existing subsubfolder short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "subf3"
+ && $(parent_id) eq $f3_id && $(item_id) == $subf3_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "folder:foldername/folder:f99"
+ set test [label "item_ref" "not existing folder in folder" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "f99"
+ && $(parent_id) eq $foldername_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "folder:foldername/de:testpage"
+ set test [label "item_ref" "existing page in folder" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "testpage"
+ && $(parent_id) eq $foldername_id && $(item_id) == $testpage_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "folder:foldername/de:entry"
+ set test [label "item_ref" "not existing page in folder" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "entry"
+ && $(parent_id) eq $foldername_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/image:image.png"
+ set test [label "item_ref" "not existing image" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "image" && $(prefix) eq "file" && $(stripped_name) eq "image.png"
+ && $(parent_id) eq $foldername_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/image.png"
+ set test [label "item_ref" "not existing image short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "image" && $(prefix) eq "file" && $(stripped_name) eq "image.png"
+ && $(parent_id) eq $foldername_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ ################################
+ test subsection "Under page:"
+
+ set l "de:parentpage/folder:childfolder"
+ set test [label "item_ref" "existing folder under page" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "childfolder"
+ && $(parent_id) eq $parentpage_id && $(item_id) == $childfolder_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "de:parentpage/folder:childfolder/"
+ set test [label "item_ref" "existing folder under page with prefix and trailing slash" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "childfolder"
+ && $(parent_id) eq $parentpage_id && $(item_id) == $childfolder_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "de:parentpage/folder:childfolder1"
+ set test [label "item_ref" "not existing folder under page" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "childfolder1"
+ && $(parent_id) eq $parentpage_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "de:parentpage/folder:childfolder1/"
+ set test [label "item_ref" "not existing folder under page with prefix and trailing slash" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "childfolder1"
+ && $(parent_id) eq $parentpage_id && $(item_id) == 0}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "de:parentpage/de:childpage"
+ set test [label "item_ref" "existing page under page" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "childpage"
+ && $(parent_id) eq $parentpage_id && $(item_id) == $childpage_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "parentpage/childpage"
+ set test [label "item_ref" "existing page under page short" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "childpage"
+ && $(parent_id) eq $parentpage_id && $(item_id) == $childpage_id}} 1 "\n$test:\n [array get {}]\n "
+
+ ################################
+ test subsection "Ending with /.."
+
+ set l ".."
+ set test [label "item_ref" "dot dot (don't traverse beyond root folder)" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq ""
+ && $(parent_id) == -100 && $(item_id) == $folder_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l ".."
+ set test [label "item_ref" "dot dot slash dot dot (don't traverse beyond root folder)" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq ""
+ && $(parent_id) == -100 && $(item_id) == $folder_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/f3/subf3/.."
+ set test [label "item_ref" "existing subsubfolder dot dot" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "f3"
+ && $(parent_id) eq $foldername_id && $(item_id) == $f3_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/f3/subf3/../"
+ set test [label "item_ref" "existing subsubfolder dot dot slash" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "f3"
+ && $(parent_id) eq $foldername_id && $(item_id) == $f3_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/f3/subf3/../."
+ set test [label "item_ref" "existing subsubfolder dot dot slash dot" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "f3"
+ && $(parent_id) eq $foldername_id && $(item_id) == $f3_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "foldername/f3/subf3/../.."
+ set test [label "item_ref" "existing subsubfolder dot dot slash dot dot" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "folder" && $(prefix) eq "" && $(stripped_name) eq "foldername"
+ && $(parent_id) eq $folder_id && $(item_id) == $foldername_id}} 1 "\n$test:\n [array get {}]\n "
+
+ set l "parentpage/childpage/.."
+ set test [label "item_ref" "existing page und page dot dot" $l]
+ array set "" [p item_ref -default_lang de -parent_id $folder_id $l]
+ ? {expr {$(link_type) eq "link" && $(prefix) eq "de" && $(stripped_name) eq "parentpage"
+ && $(parent_id) eq $folder_id && $(item_id) == $parentpage_id}} 1 "\n$test:\n [array get {}]\n "
+
+
+ test subsection "Links:"
+
+ set l "parentpage"
+ set test [label "link" "existing simple page" $l]
+ set link [p create_link $l]
+ ? {$link render} "de:parentpage" "\n$test\n "
+
+ set l "parentpage1"
+ set test [label "link" "not existing simple page" $l]
+ set link [p create_link $l]
+? {$link render} [subst -nocommands { [ de:parentpage1 ] }] "\n$test\n "
+
+ set l "parentpage#a"
+ set test [label "link" "existing simple with anchor" $l]
+ set link [p create_link $l]
+? {$link render} [subst -nocommands {de:parentpage}] "\n$test\n "
+
+ set l "image:image.png"
+ set test [label "link" "existing image" $l]
+ set link [p create_link $l]
+? {$link render} [subst -nocommands {}] "\n$test\n "
+
+ set l "image.png"
+ set test [label "link" "existing image short" $l]
+ set link [p create_link $l]
+? {$link render} [subst -nocommands {}] "\n$test\n "
+
+ set l ":de:parentpage"
+ set test [label "link" "existing language link" $l]
+ p array unset lang_links
+ set link [p create_link $l]
+ ? {$link render} {} "\n$test\n "
+? {p array get lang_links} [subst -nocommands {found {{}}}] "\n$test links\n "
+
+
ns_write "
Tests passed: [test set passed]