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

通讯编程

开发平台:

Visual C++

  1. # Commands covered:  none
  2. #
  3. # This file contains a collection of tests for Tcl_AsyncCreate and related
  4. # library procedures.  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) 1993 The Regents of the University of California.
  8. # Copyright (c) 1994-1996 Sun Microsystems, Inc.
  9. # Copyright (c) 1998-1999 by Scriptics Corporation.
  10. #
  11. # See the file "license.terms" for information on usage and redistribution
  12. # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  13. #
  14. # RCS: @(#) $Id: async.test,v 1.5 2000/04/10 17:18:56 ericm Exp $
  15. if {[lsearch [namespace children] ::tcltest] == -1} {
  16.     package require tcltest
  17.     namespace import -force ::tcltest::*
  18. }
  19. if {[info commands testasync] == {}} {
  20.     puts "This application hasn't been compiled with the "testasync""
  21.     puts "command, so I can't test Tcl_AsyncCreate et al."
  22.     ::tcltest::cleanupTests
  23.     return
  24. }
  25. proc async1 {result code} {
  26.     global aresult acode
  27.     set aresult $result
  28.     set acode $code
  29.     return "new result"
  30. }
  31. proc async2 {result code} {
  32.     global aresult acode
  33.     set aresult $result
  34.     set acode $code
  35.     return -code error "xyzzy"
  36. }
  37. proc async3 {result code} {
  38.     global aresult
  39.     set aresult "test pattern"
  40.     return -code $code $result
  41. }
  42. set handler1 [testasync create async1]
  43. set handler2 [testasync create async2]
  44. set handler3 [testasync create async3]
  45. test async-1.1 {basic async handlers} {
  46.     set aresult xxx
  47.     set acode yyy
  48.     list [catch {testasync mark $handler1 "original" 0} msg] $msg 
  49.    $acode $aresult
  50. } {0 {new result} 0 original}
  51. test async-1.2 {basic async handlers} {
  52.     set aresult xxx
  53.     set acode yyy
  54.     list [catch {testasync mark $handler1 "original" 1} msg] $msg 
  55.    $acode $aresult
  56. } {0 {new result} 1 original}
  57. test async-1.3 {basic async handlers} {
  58.     set aresult xxx
  59.     set acode yyy
  60.     list [catch {testasync mark $handler2 "old" 0} msg] $msg 
  61.    $acode $aresult
  62. } {1 xyzzy 0 old}
  63. test async-1.4 {basic async handlers} {
  64.     set aresult xxx
  65.     set acode yyy
  66.     list [catch {testasync mark $handler2 "old" 3} msg] $msg 
  67.    $acode $aresult
  68. } {1 xyzzy 3 old}
  69. test async-1.5 {basic async handlers} {
  70.     set aresult xxx
  71.     list [catch {testasync mark $handler3 "foobar" 0} msg] $msg $aresult
  72. } {0 foobar {test pattern}}
  73. test async-1.6 {basic async handlers} {
  74.     set aresult xxx
  75.     list [catch {testasync mark $handler3 "foobar" 1} msg] $msg $aresult
  76. } {1 foobar {test pattern}}
  77. proc mult1 {result code} {
  78.     global x
  79.     lappend x mult1
  80.     return -code 7 mult1
  81. }
  82. set hm1 [testasync create mult1]
  83. proc mult2 {result code} {
  84.     global x
  85.     lappend x mult2
  86.     return -code 9 mult2
  87. }
  88. set hm2 [testasync create mult2]
  89. proc mult3 {result code} {
  90.     global x hm1 hm2
  91.     lappend x [catch {testasync mark $hm2 serial2 0}]
  92.     lappend x [catch {testasync mark $hm1 serial1 0}]
  93.     lappend x mult3
  94.     return -code 11 mult3
  95. }
  96. set hm3 [testasync create mult3]
  97. test async-2.1 {multiple handlers} {
  98.     set x {}
  99.     list [catch {testasync mark $hm3 "foobar" 5} msg] $msg $x
  100. } {9 mult2 {0 0 mult3 mult1 mult2}}
  101. proc del1 {result code} {
  102.     global x hm1 hm2 hm3 hm4
  103.     lappend x [catch {testasync mark $hm3 serial2 0}]
  104.     lappend x [catch {testasync mark $hm1 serial1 0}]
  105.     lappend x [catch {testasync mark $hm4 serial1 0}]
  106.     testasync delete $hm1
  107.     testasync delete $hm2
  108.     testasync delete $hm3
  109.     lappend x del1
  110.     return -code 13 del1
  111. }
  112. proc del2 {result code} {
  113.     global x
  114.     lappend x del2
  115.     return -code 3 del2
  116. }
  117. testasync delete $handler1
  118. testasync delete $hm2
  119. testasync delete $hm3
  120. set hm2 [testasync create del1]
  121. set hm3 [testasync create mult2]
  122. set hm4 [testasync create del2]
  123. test async-3.1 {deleting handlers} {
  124.     set x {}
  125.     list [catch {testasync mark $hm2 "foobar" 5} msg] $msg $x
  126. } {3 del2 {0 0 0 del1 del2}}
  127. # cleanup
  128. testasync delete
  129. ::tcltest::cleanupTests
  130. return