- # This file tests the tclWinDde.c file.
- #
- # This file contains a collection of tests for one or more of the Tcl
- # built-in commands. Sourcing this file into Tcl runs the tests and
- # generates output for errors. No output means no errors were found.
- #
- # Copyright (c) 1999 by Scriptics Corporation.
- #
- # See the file "license.terms" for information on usage and redistribution
- # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- #
- # RCS: @(#) $Id: winDde.test,v 1.13.2.2 2005/06/21 22:59:03 patthoyts Exp $
- if {[lsearch [namespace children] ::tcltest] == -1} {
- package require tcltest
- namespace import -force ::tcltest::*
- }
- if {$tcl_platform(platform) == "windows"} {
- if [catch {
- set lib [lindex [glob -directory [file join [pwd] [file dirname
- [info nameofexecutable]]] tcldde*.dll] 0]
- load $lib dde
- }] {
- puts "WARNING: Unable to find the dde package. Skipping dde tests."
- ::tcltest::cleanupTests
- return
- }
- }
- set scriptName script1.tcl
- proc createChildProcess { ddeServerName } {
- file delete -force $::scriptName
- set f [open $::scriptName w+]
- puts $f {
- if {[lsearch [namespace children] ::tcltest] == -1} {
- package require tcltest
- namespace import -force ::tcltest::*
- }
- if [catch {
- set lib [lindex [glob -directory
- [file join [pwd] [file dirname [info nameofexecutable]]]
- tcldde*.dll] 0]
- load $lib dde
- }] {
- puts "Unable to find the dde package. Skipping dde tests."
- ::tcltest::cleanupTests
- return
- }
- }
- puts $f [list dde servername $ddeServerName]
- puts $f {
- after 200 {set ready 1}
- vwait ready
- puts ready
- vwait done
- after 200 {set final 1}
- vwait final
- exit
- }
- close $f
- set f [open |[list [interpreter] $::scriptName] r]
- fconfigure $f -buffering line -blocking 1
- gets $f
- return $f
- }
- test winDde-1.1 {Settings the server's topic name} {pcOnly} {
- list [dde servername foobar] [dde servername] [dde servername self]
- } {foobar foobar self}
- test winDde-2.1 {Checking for other services} {pcOnly} {
- expr [llength [dde services {} {}]] >= 0
- } 1
- test winDde-2.2 {Checking for existence, with service and topic specified}
- {pcOnly} {
- llength [dde services TclEval self]
- } 1
- test winDde-2.3 {Checking for existence, with only the service specified}
- {pcOnly} {
- expr [llength [dde services TclEval {}]] >= 1
- } 1
- test winDde-3.1 {DDE execute locally} {pcOnly} {
- set a ""
- dde execute TclEval self {set a "foo"}
- set a
- } foo
- test winDde-3.2 {DDE execute -async locally} {pcOnly} {
- set a ""
- dde execute -async TclEval self {set a "foo"}
- update
- set a
- } foo
- test winDde-3.3 {DDE request locally} {pcOnly} {
- set a ""
- dde execute TclEval self {set a "foo"}
- dde request TclEval self a
- } foo
- test winDde-3.4 {DDE eval locally} {pcOnly} {
- set a ""
- dde eval self set a "foo"
- } foo
- test winDde-3.5 {DDE request locally} {pcOnly} {
- set a ""
- dde execute TclEval self {set a "foo"}
- dde request -binary TclEval self a
- } "foox00"
- test winDde-4.1 {DDE execute remotely} {stdio pcOnly} {
- list [catch {
- set a ""
- set child [createChildProcess child]
- dde execute TclEval child {set a "foo"}
- dde execute TclEval child {set done 1}
- set a
- } err] $err
- } [list 0 ""]
- test winDde-4.2 {DDE execute remotely} {stdio pcOnly} {
- list [catch {
- set a ""
- set child [createChildProcess child]
- dde execute -async TclEval child {set a "foo"}
- after 400 {set ::_dde_forever 1} ; vwait ::_dde_forever; #update
- dde execute TclEval child {set done 1}
- set a
- } err] $err
- } [list 0 ""]
- test winDde-4.3 {DDE request locally} {stdio pcOnly} {
- list [catch {
- set a ""
- set child [createChildProcess child]
- dde execute TclEval child {set a "foo"}
- set a [dde request TclEval child a]
- dde execute TclEval child {set done 1}
- set a
- } err] $err
- } [list 0 foo]
- test winDde-4.4 {DDE eval locally} {stdio pcOnly} {
- list [catch {
- set a ""
- set child [createChildProcess child]
- set a [dde eval child set a "foo"]
- dde execute TclEval child {set done 1}
- set a
- } err] $err
- } [list 0 foo]
- test winDde-5.1 {check for bad arguments} {pcOnly} {
- catch {dde execute "" "" "" ""} result
- set result
- } {wrong # args: should be "dde execute ?-async? serviceName topicName value"}
- test winDde-5.2 {check for bad arguments} {pcOnly} {
- catch {dde execute "" "" ""} result
- set result
- } {cannot execute null data}
- test winDde-5.3 {check for bad arguments} {pcOnly} {
- catch {dde execute -foo "" "" ""} result
- set result
- } {wrong # args: should be "dde execute ?-async? serviceName topicName value"}
- test winDde-5.4 {DDE eval bad arguments} {pcOnly} {
- list [catch {dde eval "" "foo"} msg] $msg
- } {1 {invalid service name ""}}
- #cleanup
- file delete -force $::scriptName
- ::tcltest::cleanupTests
- return