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

通讯编程

开发平台:

Visual C++

  1. # Commands covered:  list
  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) 1991-1993 The Regents of the University of California.
  8. # Copyright (c) 1994 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: list.test,v 1.5.24.1 2003/03/27 13:11:15 dkf Exp $
  15. if {[lsearch [namespace children] ::tcltest] == -1} {
  16.     package require tcltest
  17.     namespace import -force ::tcltest::*
  18. }
  19. # First, a bunch of individual tests
  20. test list-1.1 {basic tests} {list a b c} {a b c}
  21. test list-1.2 {basic tests} {list {a b} c} {{a b} c}
  22. test list-1.3 {basic tests} {list {a b c} {{a b c}
  23. test list-1.4 {basic tests} "list a{}} b{} c}" "a\{\}\} b{} c\}"
  24. test list-1.5 {basic tests} {list a[ b] } "{a[} b\]"
  25. test list-1.6 {basic tests} {list c  dt } "{c } {dt}"
  26. test list-1.7 {basic tests} {list en f$ } "{en} {f$}"
  27. test list-1.8 {basic tests} {list g; h\} {{g;} h\}
  28. test list-1.9 {basic tests} "list a\[} b\]} " "a\[\} b\]\}"
  29. test list-1.10 {basic tests} "list c\} d\t} " "c\} d\t\}"
  30. test list-1.11 {basic tests} "list e\n} f\$} " "e\n\} f\$\}"
  31. test list-1.12 {basic tests} "list g\;} h\\} " "g\;\} {h\}}"
  32. test list-1.13 {basic tests} {list a {{}} b} {a {{}} b}
  33. test list-1.14 {basic tests} {list a b xy\} "a b xy\\"
  34. test list-1.15 {basic tests} "list a b} e\" "a b\} e\\"
  35. test list-1.16 {basic tests} "list a b}\$ e\$\" "a b\}\$ e\$\\"
  36. test list-1.17 {basic tests} {list af {f} "{af} \{\f"
  37. test list-1.18 {basic tests} {list ar {r} "{ar} \{\r"
  38. test list-1.19 {basic tests} {list av {v} "{av} \{\v"
  39. test list-1.20 {basic tests} {list "}{} "\"\}\{"
  40. test list-1.21 {basic tests} {list a b c\nd} "a b c\\\nd"
  41. test list-1.22 {basic tests} {list "{ab}\"} \{ab\}\\
  42. test list-1.23 {basic tests} {list {} "\{"
  43. test list-1.24 {basic tests} {list} {}
  44. # For the next round of tests create a list and then pick it apart
  45. # with "index" to make sure that we get back exactly what went in.
  46. set num 0
  47. proc lcheck {testid a b c} {
  48.     global num d
  49.     set d [list $a $b $c]
  50.     test ${testid}-0 {what goes in must come out} {lindex $d 0} $a
  51.     test ${testid}-1 {what goes in must come out} {lindex $d 1} $b
  52.     test ${testid}-2 {what goes in must come out} {lindex $d 2} $c
  53. }
  54. lcheck list-2.1  a b c
  55. lcheck list-2.2  "a b" ctd enf
  56. lcheck list-2.3  {{a b}} {} {  }
  57. lcheck list-2.4  $ $ab ab$
  58. lcheck list-2.5  ; ;ab ab;
  59. lcheck list-2.6  [ [ab ab[
  60. lcheck list-2.7  \ \ab ab\
  61. lcheck list-2.8  {"} {"ab} {ab"} ;#" Stupid emacs highlighting!
  62. lcheck list-2.9  {a b} { ab} {ab }
  63. lcheck list-2.10 a{ a{b {ab
  64. lcheck list-2.11 a} a}b }ab
  65. lcheck list-2.12 a\} {a }b} {a {c}
  66. lcheck list-2.13 xyz \ 1\n2
  67. lcheck list-2.14 "{ab}\" "{ab}xy" abc
  68. concat {}
  69. # Check that tclListObj.c's SetListFromAny handles possible overlarge
  70. # string rep lengths in the source object.
  71. proc slowsort list {
  72.     set result {}
  73.     set last [expr [llength $list] - 1]
  74.     while {$last > 0} {
  75. set minIndex [expr [llength $list] - 1]
  76. set min [lindex $list $last]
  77. set i [expr $minIndex-1]
  78. while {$i >= 0} {
  79.     if {[string compare [lindex $list $i] $min] < 0} {
  80. set minIndex $i
  81. set min [lindex $list $i]
  82.     }
  83.     set i [expr $i-1]
  84. }
  85. set result [concat $result [list $min]]
  86. if {$minIndex == 0} {
  87.     set list [lrange $list 1 end]
  88. } else {
  89.     set list [concat [lrange $list 0 [expr $minIndex-1]] 
  90.   [lrange $list [expr $minIndex+1] end]]
  91. }
  92. set last [expr $last-1]
  93.     }
  94.     return [concat $result $list]
  95. }
  96. test list-3.1 {SetListFromAny and lrange/concat results} {
  97.     slowsort {fred julie alex carol bill annie}
  98. } {alex annie bill carol fred julie}
  99. # cleanup
  100. ::tcltest::cleanupTests
  101. return