You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tcl.apache.org by mx...@apache.org on 2022/03/01 16:59:58 UTC

[tcl-rivet] branch master updated: add tests for the 2 forms of [::rivet::var_qs all]

This is an automated email from the ASF dual-hosted git repository.

mxmanghi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tcl-rivet.git


The following commit(s) were added to refs/heads/master by this push:
     new 3b183ff  add tests for the 2 forms of [::rivet::var_qs all]
3b183ff is described below

commit 3b183ff01078628870e4a050c951dc2f1ed21b9b
Author: Massimo Manghi <ma...@gmail.com>
AuthorDate: Tue Mar 1 17:59:44 2022 +0100

    add tests for the 2 forms of [::rivet::var_qs all]
---
 ChangeLog        |   3 ++
 tests/get.test   | 104 ++++++++++++++++++++++++++++++++-----------------------
 tests/getall.rvt |  20 +++++++++++
 tests/rivet.test |   2 +-
 4 files changed, 85 insertions(+), 44 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 688da00..773773d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2022-03-01 Massimo Manghi <mx...@apache.org>
+	* tests/getall.rvt: add new test for the 2 forms of [::rivet::var_qs all]
+
 2022-02-19 Massimo Manghi <mx...@apache.org>
 	* tclconfig/tcl.m4: patched tcl.m4 distributed by core.tcl.tk as it doesn't work
 	  with Makefile.am files in nested directories. Patch submitted upstream 
diff --git a/tests/get.test b/tests/get.test
index 96e2430..035c8b0 100644
--- a/tests/get.test
+++ b/tests/get.test
@@ -1,61 +1,79 @@
-# $Id$
+# -- get.test
+#
+# testing ::rivet::var command for accessing urlencoded 
+# variables
 
 ::tcltest::test getvariables-1.1 {GET variables} {
-    set page [ ::http::geturl "${urlbase}get.rvt?foobar=goober" ]
-    regexp -line {\[::rivet::var get foobar\] = goober$} [ ::http::data $page ] match
-    set match
+     set page [ ::http::geturl "${urlbase}get.rvt?foobar=goober" ]
+     regexp -line {\[::rivet::var get foobar\] = goober$} [ ::http::data $page ] match
+     set match
 } {[::rivet::var get foobar] = goober}
-
+ 
 ::tcltest::test getvariables-1.2 {GET variables - exists} {
-    set page [ ::http::geturl "${urlbase}get.rvt?xst=1" ]
-    regexp -line {\[::rivet::var exists xst\]\[::rivet::var exists noxst\] = 1 0$} [ ::http::data $page ] match
-    set match
+     set page [ ::http::geturl "${urlbase}get.rvt?xst=1" ]
+     regexp -line {\[::rivet::var exists xst\]\[::rivet::var exists noxst\] = 1 0$} [ ::http::data $page ] match
+     set match
 } {[::rivet::var exists xst][::rivet::var exists noxst] = 1 0}
-
+ 
 ::tcltest::test getvariables-1.3 {GET variables - doesn't exist} {
-    set page [ ::http::geturl "${urlbase}get.rvt" ]
-    regexp -line {\[::rivet::var get xst\] = } [ ::http::data $page ] match
-    set match
+     set page [ ::http::geturl "${urlbase}get.rvt" ]
+     regexp -line {\[::rivet::var get xst\] = } [ ::http::data $page ] match
+     set match
 } {[::rivet::var get xst] = }
-
+ 
 ::tcltest::test getvariables-1.4 {GET variables - default value} {
-    set page [ ::http::geturl "${urlbase}get.rvt?defaulttest=1" ]
-    regexp {^\[::rivet::var get xst foo\] = foo} [ ::http::data $page ] match
-    set match
+     set page [::http::geturl "${urlbase}get.rvt?defaulttest=1"]
+     regexp {^\[::rivet::var get xst foo\] = foo} [ ::http::data $page ] match
+     set match
 } {[::rivet::var get xst foo] = foo}
-
-::tcltest::test getvariables-1.5 {GET variables - var_qs exists} {
-    set page [ ::http::geturl "${urlbase}get.rvt?xst=1" ]
-    regexp -line {\[::rivet::var_qs exists xst\]\[::rivet::var_qs exists noxst\] = 1 0$} [ ::http::data $page ] match
-    set match
+ 
+ ::tcltest::test getvariables-1.5 {GET variables - var_qs exists} {
+     set page [::http::geturl "${urlbase}get.rvt?xst=1"]
+     regexp -line {\[::rivet::var_qs exists xst\]\[::rivet::var_qs exists noxst\] = 1 0$} [ ::http::data $page ] match
+     set match
 } {[::rivet::var_qs exists xst][::rivet::var_qs exists noxst] = 1 0}
-
-::tcltest::test getvariables-2.1 {GET variables + I18N} {
-    set page [ ::http::geturl "${urlbase}get.rvt?M�s=T�" ]
-    regexp -line {^\[::rivet::var get M�s\] = T�$} [ ::http::data $page ] match
-    set match
+ 
+ ::tcltest::test getvariables-2.1 {GET variables + I18N} {
+     set page [::http::geturl "${urlbase}get.rvt?M�s=T�"]
+     regexp -line {^\[::rivet::var get M�s\] = T�$} [ ::http::data $page ] match
+     set match
 } {[::rivet::var get M�s] = T�}
-
-::tcltest::test getvariables-2.2 {GET variables + I18N + encoding} {
-    set page [ ::http::geturl [ format "${urlbase}get.rvt?%s" [ ::http::formatQuery M�s T� ] ] ]
-    regexp -line {^\[::rivet::var get M�s\] = T�$} [ ::http::data $page ] match
-    set match
+ 
+ ::tcltest::test getvariables-2.2 {GET variables + I18N + encoding} {
+     set page [::http::geturl [format "${urlbase}get.rvt?%s" [::http::formatQuery M�s T�]]]
+     regexp -line {^\[::rivet::var get M�s\] = T�$} [ ::http::data $page ] match
+     set match
 } {[::rivet::var get M�s] = T�}
-
+ 
 ::tcltest::test getvariables-3.1 {GET multi-value variable} {
-    set page [ ::http::geturl "${urlbase}get.rvt?lstvar1=a&lstvar1=b&lstvar1=c+d" ]
-    regexp -line {\[::rivet::var get lstvar1\] = a b c d$} [ ::http::data $page ] match
-    set match
+     set page [::http::geturl "${urlbase}get.rvt?lstvar1=a&lstvar1=b&lstvar1=c+d"]
+     regexp -line {\[::rivet::var get lstvar1\] = a b c d$} [ ::http::data $page ] match
+     set match
 } {[::rivet::var get lstvar1] = a b c d}
-
+ 
 ::tcltest::test getvariables-3.2 {GET multi-value variable as list} {
-    set page [ ::http::geturl "${urlbase}get.rvt?lstvar2=a&lstvar2=b&lstvar2=c+d" ]
-    regexp -line {\[::rivet::var list lstvar2\] = a b {c d}$} [ ::http::data $page ] match
-    set match
+     set page [::http::geturl "${urlbase}get.rvt?lstvar2=a&lstvar2=b&lstvar2=c+d"]
+     regexp -line {\[::rivet::var list lstvar2\] = a b {c d}$} [ ::http::data $page ] match
+     set match
 } {[::rivet::var list lstvar2] = a b {c d}}
-
+ 
 ::tcltest::test getvariables-4.1 {var_qs} {
-    set page [ ::http::geturl "${urlbase}get.rvt?foobar=goober" ]
-    regexp -line {\[::rivet::var_qs get foobar\] = goober$} [::http::data $page] match
-    set match
+     set page [::http::geturl "${urlbase}get.rvt?foobar=goober"]
+     regexp -line {\[::rivet::var_qs get foobar\] = goober$} [::http::data $page] match
+     set match
 } {[::rivet::var_qs get foobar] = goober}
+ 
+::tcltest::test getvariables-5.1 {GET var_qs all} {
+    set page [::http::geturl "${urlbase}getall.rvt?a=1&b=2&c=3&d=4"]
+    set ptext [::http::data $page]
+    regexp -line {^\[::rivet::var_qs all\]\s=\s.*$} $ptext match
+    set match
+} {[::rivet::var_qs all] = a|1|b|2|c|3|d|4}
+
+::tcltest::test getvariables-5.2 {GET var_qs all <defaults>} {
+    set page [::http::geturl "${urlbase}getall.rvt"]
+    set ptext [::http::data $page]
+    regexp -line {^\[::rivet::var_qs all\]\s=\s.*$} $ptext match
+    set match
+} {[::rivet::var_qs all] = a|1|b|2|c|3|d|4}
+
diff --git a/tests/getall.rvt b/tests/getall.rvt
new file mode 100644
index 0000000..51a1db3
--- /dev/null
+++ b/tests/getall.rvt
@@ -0,0 +1,20 @@
+<?
+set nvars [::rivet::var_qs number]
+if {$nvars > 0} {
+    set arguments [::rivet::var_qs all]
+} else {
+    set arguments [::rivet::var_qs all [dict create a 1 b 2 c 3 d 4]]
+}
+
+# being a flat list of key-value pair we assume it
+# to be interpreted as a dictionary
+set vnames [dict keys $arguments]
+
+# in order to have a result in a definite order
+set result [lmap k [lsort $vnames] { list $k [dict get $arguments $k] }] 
+
+# two nested join on the list in order to have a flat list
+
+puts -nonewline "\[::rivet::var_qs all\] = [join [join $result] |]"
+
+?>
diff --git a/tests/rivet.test b/tests/rivet.test
index 6ed3950..139a625 100755
--- a/tests/rivet.test
+++ b/tests/rivet.test
@@ -36,7 +36,7 @@ set TestList {rivetlib.test shorthand.test headers.test \
               parse.test upload.test makeurl.test commands.test}
 
 # Test stanzas are created by giving the test a name and a
-# description.  The code is then executed, and the results compared
+# description. The code is then executed, and the results compared
 # with the desired result, which is placed after the block of code.
 # See man tcltest for more information.
 

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tcl.apache.org
For additional commands, e-mail: commits-help@tcl.apache.org