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

通讯编程

开发平台:

Visual C++

  1. # Commands covered:  none
  2. #
  3. # This file contains a collection of tests for Tcl_GetCommandInfo,
  4. # Tcl_SetCommandInfo, Tcl_CreateCommand, Tcl_DeleteCommand, and
  5. # Tcl_NameOfCommand.  Sourcing this file into Tcl runs the tests
  6. # and generates output for errors.  No output means no errors were
  7. # found.
  8. #
  9. # Copyright (c) 1993 The Regents of the University of California.
  10. # Copyright (c) 1994-1996 Sun Microsystems, Inc.
  11. # Copyright (c) 1998-1999 by Scriptics Corporation.
  12. #
  13. # See the file "license.terms" for information on usage and redistribution
  14. # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  15. #
  16. # RCS: @(#) $Id: cmdInfo.test,v 1.7 2002/06/22 04:19:47 dgp Exp $
  17. if {[lsearch [namespace children] ::tcltest] == -1} {
  18.     package require tcltest 2
  19.     namespace import -force ::tcltest::*
  20. }
  21. ::tcltest::testConstraint testcmdinfo 
  22. [llength [info commands testcmdinfo]]
  23. ::tcltest::testConstraint testcmdtoken 
  24. [llength [info commands testcmdtoken]]
  25. test cmdinfo-1.1 {command procedure and clientData} {testcmdinfo} {
  26.     testcmdinfo create x1
  27.     testcmdinfo get x1
  28. } {CmdProc1 original CmdDelProc1 original :: stringProc}
  29. test cmdinfo-1.2 {command procedure and clientData} {testcmdinfo} {
  30.     testcmdinfo create x1
  31.     x1
  32. } {CmdProc1 original}
  33. test cmdinfo-1.3 {command procedure and clientData} {testcmdinfo} {
  34.     testcmdinfo create x1
  35.     testcmdinfo modify x1
  36.     testcmdinfo get x1
  37. } {CmdProc2 new_command_data CmdDelProc2 new_delete_data :: stringProc}
  38. test cmdinfo-1.4 {command procedure and clientData} {testcmdinfo} {
  39.     testcmdinfo create x1
  40.     testcmdinfo modify x1
  41.     x1
  42. } {CmdProc2 new_command_data}
  43. test cmdinfo-2.1 {command deletion callbacks} {testcmdinfo} {
  44.     testcmdinfo create x1
  45.     testcmdinfo delete x1
  46. } {CmdDelProc1 original}
  47. test cmdinfo-2.2 {command deletion callbacks} {testcmdinfo} {
  48.     testcmdinfo create x1
  49.     testcmdinfo modify x1
  50.     testcmdinfo delete x1
  51. } {CmdDelProc2 new_delete_data}
  52. test cmdinfo-3.1 {Tcl_Get/SetCommandInfo return values} {testcmdinfo} {
  53.     testcmdinfo get non_existent
  54. } {??}
  55. test cmdinfo-3.2 {Tcl_Get/SetCommandInfo return values} {testcmdinfo} {
  56.     testcmdinfo create x1
  57.     testcmdinfo modify x1
  58. } 1
  59. test cmdinfo-3.3 {Tcl_Get/SetCommandInfo return values} {testcmdinfo} {
  60.     testcmdinfo modify non_existent
  61. } 0
  62. test cmdinfo-4.1 {Tcl_GetCommandName/Tcl_GetCommandFullName procedures} 
  63. {testcmdtoken} {
  64.     set x [testcmdtoken create x1]
  65.     rename x1 newName
  66.     set y [testcmdtoken name $x]
  67.     rename newName x1
  68.     eval lappend y [testcmdtoken name $x]
  69. } {newName ::newName x1 ::x1}
  70. catch {rename newTestCmd {}}
  71. catch {rename newTestCmd2 {}}
  72. test cmdinfo-5.1 {Names for commands created when inside namespaces} 
  73. {testcmdtoken} {
  74.     # create namespace cmdInfoNs1
  75.     namespace eval cmdInfoNs1 {}   ;# creates namespace cmdInfoNs1
  76.     # create namespace cmdInfoNs1::cmdInfoNs2 and execute a script in it
  77.     set x [namespace eval cmdInfoNs1::cmdInfoNs2 {
  78.         # the following creates a cmd in the global namespace
  79.         testcmdtoken create testCmd
  80.     }]
  81.     set y [testcmdtoken name $x]
  82.     rename ::testCmd newTestCmd
  83.     eval lappend y [testcmdtoken name $x]
  84. } {testCmd ::testCmd newTestCmd ::newTestCmd}
  85. test cmdinfo-6.1 {Names for commands created when outside namespaces} 
  86. {testcmdtoken} {
  87.     set x [testcmdtoken create cmdInfoNs1::cmdInfoNs2::testCmd]
  88.     set y [testcmdtoken name $x]
  89.     rename cmdInfoNs1::cmdInfoNs2::testCmd newTestCmd2
  90.     eval lappend y [testcmdtoken name $x]
  91. } {testCmd ::cmdInfoNs1::cmdInfoNs2::testCmd newTestCmd2 ::newTestCmd2}
  92. # cleanup
  93. catch {namespace delete cmdInfoNs1::cmdInfoNs2 cmdInfoNs1}
  94. catch {rename x1 ""}
  95. ::tcltest::cleanupTests
  96. return