winDde.test
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:5k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # This file tests the tclWinDde.c file.
  2. #
  3. # This file contains a collection of tests for one or more of the Tcl
  4. # built-in commands.  Sourcing this file into Tcl runs the tests and
  5. # generates output for errors.  No output means no errors were found.
  6. #
  7. # Copyright (c) 1999 by Scriptics Corporation.
  8. #
  9. # See the file "license.terms" for information on usage and redistribution
  10. # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  11. #
  12. # RCS: @(#) $Id: winDde.test,v 1.13.2.2 2005/06/21 22:59:03 patthoyts Exp $
  13. if {[lsearch [namespace children] ::tcltest] == -1} {
  14.     package require tcltest
  15.     namespace import -force ::tcltest::*
  16. }
  17. if {$tcl_platform(platform) == "windows"} {
  18.     if [catch {
  19. set lib [lindex [glob -directory [file join [pwd] [file dirname 
  20. [info nameofexecutable]]] tcldde*.dll] 0]
  21. load $lib dde
  22.     }] {
  23. puts "WARNING: Unable to find the dde package. Skipping dde tests."
  24. ::tcltest::cleanupTests
  25. return
  26.     }
  27. }
  28. set scriptName script1.tcl
  29. proc createChildProcess { ddeServerName } {
  30.     file delete -force $::scriptName
  31.     set f [open $::scriptName w+]
  32.     puts $f {
  33. if {[lsearch [namespace children] ::tcltest] == -1} {
  34.     package require tcltest
  35.     namespace import -force ::tcltest::*
  36. }
  37. if [catch {
  38.     set lib [lindex [glob -directory 
  39.     [file join [pwd] [file dirname [info nameofexecutable]]] 
  40.     tcldde*.dll] 0]
  41.     load $lib dde
  42. }] {
  43.     puts "Unable to find the dde package. Skipping dde tests."
  44.     ::tcltest::cleanupTests
  45.     return
  46. }
  47.     }
  48.     puts $f [list dde servername $ddeServerName]
  49.     puts $f {
  50.         after 200 {set ready 1}
  51.         vwait ready
  52. puts ready
  53. vwait done
  54. after 200 {set final 1}
  55.         vwait final
  56. exit
  57.     }
  58.     close $f
  59.     
  60.     set f [open |[list [interpreter] $::scriptName] r]
  61.     fconfigure $f -buffering line -blocking 1
  62.     gets $f
  63.     return $f
  64. }
  65. test winDde-1.1 {Settings the server's topic name} {pcOnly} {
  66.     list [dde servername foobar] [dde servername] [dde servername self]
  67. }  {foobar foobar self}
  68. test winDde-2.1 {Checking for other services} {pcOnly} {
  69.     expr [llength [dde services {} {}]] >= 0
  70. } 1
  71. test winDde-2.2 {Checking for existence, with service and topic specified} 
  72. {pcOnly} {
  73.     llength [dde services TclEval self]
  74. } 1
  75. test winDde-2.3 {Checking for existence, with only the service specified} 
  76. {pcOnly} {
  77.     expr [llength [dde services TclEval {}]] >= 1
  78. } 1
  79. test winDde-3.1 {DDE execute locally} {pcOnly} {
  80.     set a ""
  81.     dde execute TclEval self {set a "foo"}
  82.     set a
  83. } foo
  84. test winDde-3.2 {DDE execute -async locally} {pcOnly} {
  85.     set a ""
  86.     dde execute -async TclEval self {set a "foo"}
  87.     update
  88.     set a
  89. } foo
  90. test winDde-3.3 {DDE request locally} {pcOnly} {
  91.     set a ""
  92.     dde execute TclEval self {set a "foo"}
  93.     dde request TclEval self a
  94. } foo
  95. test winDde-3.4 {DDE eval locally} {pcOnly} {
  96.     set a ""
  97.     dde eval self set a "foo"
  98. } foo
  99. test winDde-3.5 {DDE request locally} {pcOnly} {
  100.     set a ""
  101.     dde execute TclEval self {set a "foo"}
  102.     dde request -binary TclEval self a
  103. } "foox00"
  104. test winDde-4.1 {DDE execute remotely} {stdio pcOnly} {
  105.     list [catch {
  106.         set a ""
  107.         set child [createChildProcess child]
  108.         dde execute TclEval child {set a "foo"}
  109.         dde execute TclEval child {set done 1}
  110.         set a
  111.     } err] $err
  112. } [list 0 ""]
  113. test winDde-4.2 {DDE execute remotely} {stdio pcOnly} {
  114.     list [catch {
  115.         set a ""
  116.         set child [createChildProcess child]
  117.         dde execute -async TclEval child {set a "foo"}
  118.         after 400 {set ::_dde_forever 1} ; vwait ::_dde_forever; #update
  119.         dde execute TclEval child {set done 1}
  120.         set a
  121.     } err] $err
  122. } [list 0 ""]
  123. test winDde-4.3 {DDE request locally} {stdio pcOnly} {
  124.     list [catch {
  125.         set a ""
  126.         set child [createChildProcess child]
  127.         dde execute TclEval child {set a "foo"}
  128.         set a [dde request TclEval child a]
  129.         dde execute TclEval child {set done 1}
  130.         set a
  131.     } err] $err
  132. } [list 0 foo]
  133. test winDde-4.4 {DDE eval locally} {stdio pcOnly} {
  134.     list [catch {
  135.         set a ""
  136.         set child [createChildProcess child]
  137.         set a [dde eval child set a "foo"]
  138.         dde execute TclEval child {set done 1}
  139.         set a
  140.     } err] $err
  141. } [list 0 foo]
  142. test winDde-5.1 {check for bad arguments} {pcOnly} {
  143.     catch {dde execute "" "" "" ""} result
  144.     set result
  145. } {wrong # args: should be "dde execute ?-async? serviceName topicName value"}
  146. test winDde-5.2 {check for bad arguments} {pcOnly} {
  147.     catch {dde execute "" "" ""} result
  148.     set result
  149. } {cannot execute null data}
  150. test winDde-5.3 {check for bad arguments} {pcOnly} {
  151.     catch {dde execute -foo "" "" ""} result
  152.     set result
  153. } {wrong # args: should be "dde execute ?-async? serviceName topicName value"}
  154. test winDde-5.4 {DDE eval bad arguments} {pcOnly} {
  155.     list [catch {dde eval "" "foo"} msg] $msg
  156. } {1 {invalid service name ""}}
  157. #cleanup
  158. file delete -force $::scriptName
  159. ::tcltest::cleanupTests
  160. return