# # param.test -- tests for web::param # nca-073-9 # # Copyright (c) 1996-2000 by Netcetera AG. # Copyright (c) 2001 by Apache Software Foundation. # All rights reserved. # # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # @(#) $Id$ # # ----------------------------------------------------------------------------- # tcltest package # ----------------------------------------------------------------------------- if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import ::tcltest::* } # ----------------------------------------------------------------------------- # util # ----------------------------------------------------------------------------- proc cleanParam {} { web::cmdurlcfg -unset web::formvar -unset web::param -unset } # ----------------------------------------------------------------------------- # errors # ----------------------------------------------------------------------------- test param-1.0 {error message} { catch { web::param -foo } cmsg set cmsg } {bad subcommand "-foo": must be -count, -unset, -set, -lappend, or -names} test param-1.1 {error message} { catch { web::param set a b } cmsg set cmsg } {wrong # args: should be "web::param key ?default?"} # ----------------------------------------------------------------------------- # param # ----------------------------------------------------------------------------- test param-2.1 {get keys} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "lang=FR&type=ez&type=med" set res [lsort [web::param -names]] } {lang type} test param-2.2 {get values} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "type=ez&type=med" set res [web::param type] } {ez med} test param-2.3 {unset} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "type=ez&lang=EN" web::param -unset type set res [lsort [web::param -names]] } {lang} test param-2.4 {unset} { cleanParam set res [lsort [web::param -names]] } {} test param-2.5 {- syntax} { cleanParam web::param -set -- dash web::param -set -count foo web::param -set -unset bar web::param -set -set hocker set res [list [web::param -set --] [web::param -set -count] [web::param -set -unset] [web::param -set -set] [web::param -count --]] } {dash foo bar hocker 1} test param-2.6 {-- syntax} { cleanParam web::param -set -oops ImAValue web::param -set -- ImTheValue set res [list [web::param -set -oops] [web::param -set --]] } {ImAValue ImTheValue} # ----------------------------------------------------------------------------- # param # ----------------------------------------------------------------------------- test param-3.1 {list all keys (no multiple keys)} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "k1=v1&foo=bar&k2=v2" set res [lsort [web::param -names]] } {foo k1 k2} test param-3.2 {list all keys (multiple keys)} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "k1=v1&foo=bar&k2=v2&k1=v3" set res [lsort [web::param -names]] } {foo k1 k2} test param-3.3 {get all values for key (no multiple keys)} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "k1=v1&foo=bar&k2=v2" set res [web::param foo] } {bar} test param-3.4 {get all values for key (multiple keys)} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "k1=v1&foo=bar&k2=v2&k1=v3" set res [lsort [web::param k1]] } {v1 v3} test param-3.5 {count distinct keys (no multiple keys)} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "k1=v1&foo=bar&k2=v2" catch {set res [web::param -count]} msg set msg } {wrong # args: should be "web::param -count key"} test param-3.6 {count distinct keys (multiple keys)} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "k1=v1&foo=bar&k2=v2&k1=v3" catch {set res [web::param -count]} msg set msg } {wrong # args: should be "web::param -count key"} test param-3.7 {cnt distinct vals (no multiple keys)} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "k1=v1&foo=bar&k2=v2" set res [web::param -count k1] } {1} test param-3.8 {cnt distinct vals (multiple keys)} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "k1=v1&foo=bar&k2=v2&k1=v3" set res [web::param -count k1] } {2} test param-3.9 {acces default value} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "k1=v1" set res [web::param foo bar] } {bar} test param-3.10 {default is negative number} { cleanParam web::dispatch -cmd "" -postdata "" \ -querystring "k1=v1" set res [web::param foo -1] } {-1} test param-3.11 {full syntax, all-in-one} { cleanParam web::dispatch -cmd "" -postdata "" -querystring "id=11&lang=DE&lang=EN" set res [web::param -names] lappend res [web::param id] lappend res [lsort [web::param lang]] lappend res [web::param -count id] lappend res [web::param -count lang] web::param -unset id lappend res [lsort [web::param -names]] web::param -set ordered pizza lappend res [lsort [web::param -names]] lappend res [web::param -count ordered] web::param -lappend ordered pizza lappend res [lsort [web::param -names]] lappend res [web::param -count ordered] lappend res [web::param ordered] web::param -unset lappend res [web::param -names] set res } {id lang 11 {DE EN} 1 2 lang {lang ordered} 1 {lang ordered} 2 {pizza pizza} {}} test param-3.12 {weird string} { cleanParam set tst {"Bildschirm Eizo 19"" "} web::param -set k $tst web::param k } {"Bildschirm Eizo 19"" "} test param-3.13 {still weird string} { cleanParam set tst {"Bildschirm Eizo 19"" "} web::param -set k $tst set res [web::param -names] lappend res [web::param -count k] } {k 1} test param-3.14 {again weird string} { cleanParam set tst {"Bildschirm Eizo 19"" "} web::param k $tst } $tst test param-3.15 {-set and -append} { cleanParam web::param -set k1 [list a b c] web::param -lappend k1 d lindex [web::param k1] 0 } {a b c} test param-3.16 {-set returns current value} { cleanParam web::param -set k v web::param -set k } {v} test param-3.17 {-unset unexisting key} { cleanParam catch {web::param -unset k} } {0} # cleanup ::tcltest::cleanupTests