soapinteropb.tcl
来自「Linux下的MSN聊天程序源码」· TCL 代码 · 共 183 行
TCL
183 行
# soapinteropB.tcl - Copyright (C) 2001 Pat Thoyts <Pat.Thoyts@bigfoot.com>## SOAP Interoperability Lab "Round 2" Proposal B Client Tests# # See http://www.whitemesa.com/interop.htm for details.## -------------------------------------------------------------------------# This software is distributed in the hope that it will be useful, but# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY# or FITNESS FOR A PARTICULAR PURPOSE. See the accompanying file `LICENSE'# for more details.# -------------------------------------------------------------------------## @(#)$Id: soapinteropB.tcl 6394 2006-04-14 17:36:29Z tjikkun $package require -exact soapinterop::base 1.0package provide soapinterop::B 1.0namespace eval soapinterop { rpcvar::typedef -namespace http://soapinterop.org/xsd { \ varString string \ varInt int \ varFloat float \ varStruct SOAPStruct } SOAPStructStruct rpcvar::typedef -namespace http://soapinterop.org/xsd \ string() Arrayofstring # FIX ME rpcvar::typedef -namespace http://soapinterop.org/xsd \ string()() ArrayOfString2D rpcvar::typedef -namespace http://soapinterop.org/xsd { \ varString string \ varInt int \ varFloat float \ varArray Arrayofstring } SOAPArrayStruct}# -------------------------------------------------------------------------# Proposal B Methodsproc soapinterop::create:proposalB {proxy args} { variable action variable uri set action http://soapinterop.org/ SOAP::create echoStructAsSimpleTypes -proxy $proxy -uri $uri \ -action $action -params {inputStruct SOAPStruct} SOAP::create echoSimpleTypesAsStruct -proxy $proxy -uri $uri \ -action $action \ -params {inputString string inputInteger int inputFloat float} SOAP::create echo2DStringArray -proxy $proxy -uri $uri \ -action $action -params {input2DStringArray ArrayOfString2D} SOAP::create echoNestedStruct -proxy $proxy -uri $uri -action $action \ -params {inputStruct SOAPStructStruct} SOAP::create echoNestedArray -proxy $proxy -uri $uri -action $action \ -params {inputStruct SOAPArrayStruct} if {$args != {}} { foreach method [list echoStructAsSimpleTypes \ echoSimpleTypesAsStruct\ echo2DStringArray \ echoNestedStruct \ echoNestedArray] { eval SOAP::configure $method $args } }}# -------------------------------------------------------------------------proc soapinterop::round2:proposalB {proxy args} { if {$proxy != {}} { eval create:proposalB [list $proxy] $args } catch {validate.echoStructAsSimpleTypes} msg ; puts "$msg" catch {validate.echoSimpleTypesAsStruct} msg ; puts "$msg" catch {validate.echoNestedArray} msg ; puts "$msg" catch {validate.echoNestedStruct} msg ; puts "$msg" catch {validate.echo2DStringArray} msg ; puts "$msg"}# -------------------------------------------------------------------------# Description:# Returns the struct parts individually.# We check that each member value was returned (we cannot assume a# particular order.#proc soapinterop::validate.echoStructAsSimpleTypes {} { array set q [list varString [rand_string] \ varInt [rand_int] \ varFloat [rand_float]] set r [echoStructAsSimpleTypes [array get q]] foreach {n e} [array get q] { if {[lsearch -exact $r $e] == -1} { error "failed: member $n not found in \"$r\"" } } return "echoStructAsSimpleTypes"} # -------------------------------------------------------------------------proc soapinterop::validate.echoSimpleTypesAsStruct {} { set s [rand_string] set i [rand_int] set f [rand_float] array set r [echoSimpleTypesAsStruct $s $i $f] if {[catch {validateSOAPStruct [array get q] [array get r]} err]} { error "echoSimpleTypesAsStruct $err" } return "echoSimpleTypesAsStruct"}# -------------------------------------------------------------------------proc soapinterop::validate.echoNestedStruct {} { array set q [list \ varString [rand_string] \ varFloat [rand_float] \ varInt [rand_int] \ varStruct [list \ varString [rand_string]\ varInt [rand_int]\ varFloat [rand_float]]] array set r [echoNestedStruct [array get q]] if {[catch {validateSOAPStruct [array get q] [array get r]} err]} { error "echoNestedStruct $err" } array set aq $q(varStruct) array set ar $r(varStruct) if {[catch {validateSOAPStruct [array get aq] [array get ar]} err]} { error "echoNestedStruct substruct $err" } return "echoNestedStruct"}# -------------------------------------------------------------------------proc soapinterop::validate.echoNestedArray {} { array set q [list \ varString [rand_string] \ varFloat [rand_float] \ varInt [rand_int] \ varArray [list red green blue]] array set r [echoNestedArray [array get q]] if {[catch {validateSOAPStruct [array get q] [array get r]} err]} { error "echoNestedArray $err" } if {[llength $r(varArray)] != [llength $q(varArray)]} { error "echoNestedArray failed: lists are different:\ $q(varArray) != $r(varArray)" } set max [llength $q(varArray)] for {set n 0} {$n < $max} {incr n} { if {! [string match [lindex $q(varArray) $n] [lindex $r(varArray) $n]]} { error "echoNestedArray failed: element $n is different:\ $q(varArray) != $r(varArray)" } } return "echoNestedArray"}# -------------------------------------------------------------------------proc soapinterop::validate.echo2DStringArray {} { set q [list r0c0 r0c1 r0c2 r1c0 r1c1 r1c2] return -code error "echo2DStringArray not implemented"}# -------------------------------------------------------------------------## Local variables:# mode: tcl# indent-tabs-mode: nil# End:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?