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

通讯编程

开发平台:

Visual C++

  1. # Commands covered:  none
  2. #
  3. # This file contains a collection of tests for Tcl's dynamic string
  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 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: dstring.test,v 1.5 2000/04/10 17:18:58 ericm Exp $
  15. if {[lsearch [namespace children] ::tcltest] == -1} {
  16.     package require tcltest
  17.     namespace import -force ::tcltest::*
  18. }
  19. if {[info commands testdstring] == {}} {
  20.     puts "This application hasn't been compiled with the "testdstring""
  21.     puts "command, so I can't test Tcl_DStringAppend et al."
  22.     ::tcltest::cleanupTests
  23.     return
  24. }
  25. test dstring-1.1 {appending and retrieving} {
  26.     testdstring free
  27.     testdstring append "abc" -1
  28.     list [testdstring get] [testdstring length]
  29. } {abc 3}
  30. test dstring-1.2 {appending and retrieving} {
  31.     testdstring free
  32.     testdstring append "abc" -1
  33.     testdstring append " xyzzy" 3
  34.     testdstring append " 12345" -1
  35.     list [testdstring get] [testdstring length]
  36. } {{abc xy 12345} 12}
  37. test dstring-1.3 {appending and retrieving} {
  38.     testdstring free
  39.     foreach l {a b c d e f g h i j k l m n o p} {
  40. testdstring append $l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$ln -1
  41.     }
  42.     list [testdstring get] [testdstring length]
  43. } {{aaaaaaaaaaaaaaaaaaaaa
  44. bbbbbbbbbbbbbbbbbbbbb
  45. ccccccccccccccccccccc
  46. ddddddddddddddddddddd
  47. eeeeeeeeeeeeeeeeeeeee
  48. fffffffffffffffffffff
  49. ggggggggggggggggggggg
  50. hhhhhhhhhhhhhhhhhhhhh
  51. iiiiiiiiiiiiiiiiiiiii
  52. jjjjjjjjjjjjjjjjjjjjj
  53. kkkkkkkkkkkkkkkkkkkkk
  54. lllllllllllllllllllll
  55. mmmmmmmmmmmmmmmmmmmmm
  56. nnnnnnnnnnnnnnnnnnnnn
  57. ooooooooooooooooooooo
  58. ppppppppppppppppppppp
  59. } 352}
  60. test dstring-2.1 {appending list elements} {
  61.     testdstring free
  62.     testdstring element "abc"
  63.     testdstring element "d e f"
  64.     list [testdstring get] [testdstring length]
  65. } {{abc {d e f}} 11}
  66. test dstring-2.2 {appending list elements} {
  67.     testdstring free
  68.     testdstring element "x"
  69.     testdstring element "{"
  70.     testdstring element "ab}"
  71.     testdstring get
  72. } {x { ab}}
  73. test dstring-2.3 {appending list elements} {
  74.     testdstring free
  75.     foreach l {a b c d e f g h i j k l m n o p} {
  76. testdstring element $l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l
  77.     }
  78.     testdstring get
  79. } {aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccc ddddddddddddddddddddd eeeeeeeeeeeeeeeeeeeee fffffffffffffffffffff ggggggggggggggggggggg hhhhhhhhhhhhhhhhhhhhh iiiiiiiiiiiiiiiiiiiii jjjjjjjjjjjjjjjjjjjjj kkkkkkkkkkkkkkkkkkkkk lllllllllllllllllllll mmmmmmmmmmmmmmmmmmmmm nnnnnnnnnnnnnnnnnnnnn ooooooooooooooooooooo ppppppppppppppppppppp}
  80. test dstring-2.4 {appending list elements} {
  81.     testdstring free
  82.     testdstring append "a{" -1
  83.     testdstring element abc
  84.     testdstring append " {" -1
  85.     testdstring element xyzzy
  86.     testdstring get
  87. } "a{ abc {xyzzy"
  88. test dstring-2.5 {appending list elements} {
  89.     testdstring free
  90.     testdstring append " {" -1
  91.     testdstring element abc
  92.     testdstring get
  93. } " {abc"
  94. test dstring-2.6 {appending list elements} {
  95.     testdstring free
  96.     testdstring append " " -1
  97.     testdstring element abc
  98.     testdstring get
  99. } { abc}
  100. test dstring-2.7 {appending list elements} {
  101.     testdstring free
  102.     testdstring append "\ " -1
  103.     testdstring element abc
  104.     testdstring get
  105. } "\  abc"
  106. test dstring-2.8 {appending list elements} {
  107.     testdstring free
  108.     testdstring append "x " -1
  109.     testdstring element abc
  110.     testdstring get
  111. } {x abc}
  112. test dstring-3.1 {nested sublists} {
  113.     testdstring free
  114.     testdstring start
  115.     testdstring element foo
  116.     testdstring element bar
  117.     testdstring end
  118.     testdstring element another
  119.     testdstring get
  120. } {{foo bar} another}
  121. test dstring-3.2 {nested sublists} {
  122.     testdstring free
  123.     testdstring start
  124.     testdstring start
  125.     testdstring element abc
  126.     testdstring element def
  127.     testdstring end
  128.     testdstring end
  129.     testdstring element ghi
  130.     testdstring get
  131. } {{{abc def}} ghi}
  132. test dstring-3.3 {nested sublists} {
  133.     testdstring free
  134.     testdstring start
  135.     testdstring start
  136.     testdstring start
  137.     testdstring element foo
  138.     testdstring element foo2
  139.     testdstring end
  140.     testdstring end
  141.     testdstring element foo3
  142.     testdstring end
  143.     testdstring element foo4
  144.     testdstring get
  145. } {{{{foo foo2}} foo3} foo4}
  146. test dstring-3.4 {nested sublists} {
  147.     testdstring free
  148.     testdstring element before
  149.     testdstring start
  150.     testdstring element during
  151.     testdstring element more
  152.     testdstring end
  153.     testdstring element last
  154.     testdstring get
  155. } {before {during more} last}
  156. test dstring-3.5 {nested sublists} {
  157.     testdstring free
  158.     testdstring element "{"
  159.     testdstring start
  160.     testdstring element first
  161.     testdstring element second
  162.     testdstring end
  163.     testdstring get
  164. } {{ {first second}}
  165. test dstring-4.1 {truncation} {
  166.     testdstring free
  167.     testdstring append "abcdefg" -1
  168.     testdstring trunc 3
  169.     list [testdstring get] [testdstring length]
  170. } {abc 3}
  171. test dstring-4.2 {truncation} {
  172.     testdstring free
  173.     testdstring append "xyzzy" -1
  174.     testdstring trunc 0
  175.     list [testdstring get] [testdstring length]
  176. } {{} 0}
  177. test dstring-5.1 {copying to result} {
  178.     testdstring free
  179.     testdstring append xyz -1
  180.     testdstring result
  181. } xyz
  182. test dstring-5.2 {copying to result} {
  183.     testdstring free
  184.     catch {unset a}
  185.     foreach l {a b c d e f g h i j k l m n o p} {
  186. testdstring append $l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$ln -1
  187.     }
  188.     set a [testdstring result]
  189.     testdstring append abc -1
  190.     list $a [testdstring get]
  191. } {{aaaaaaaaaaaaaaaaaaaaa
  192. bbbbbbbbbbbbbbbbbbbbb
  193. ccccccccccccccccccccc
  194. ddddddddddddddddddddd
  195. eeeeeeeeeeeeeeeeeeeee
  196. fffffffffffffffffffff
  197. ggggggggggggggggggggg
  198. hhhhhhhhhhhhhhhhhhhhh
  199. iiiiiiiiiiiiiiiiiiiii
  200. jjjjjjjjjjjjjjjjjjjjj
  201. kkkkkkkkkkkkkkkkkkkkk
  202. lllllllllllllllllllll
  203. mmmmmmmmmmmmmmmmmmmmm
  204. nnnnnnnnnnnnnnnnnnnnn
  205. ooooooooooooooooooooo
  206. ppppppppppppppppppppp
  207. } abc}
  208. test dstring-6.1 {Tcl_DStringGetResult} {
  209.     testdstring free
  210.     list [testdstring gresult staticsmall] [testdstring get]
  211. } {{} short}
  212. test dstring-6.2 {Tcl_DStringGetResult} {
  213.     testdstring free
  214.     foreach l {a b c d e f g h i j k l m n o p} {
  215. testdstring append $l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$ln -1
  216.     }
  217.     list [testdstring gresult staticsmall] [testdstring get]
  218. } {{} short}
  219. test dstring-6.3 {Tcl_DStringGetResult} {
  220.     set result {}
  221.     lappend result [testdstring gresult staticlarge]
  222.     testdstring append x 1
  223.     lappend result [testdstring get]
  224. } {{} {first0 first1 first2 first3 first4 first5 first6 first7 first8 first9
  225. second0 second1 second2 second3 second4 second5 second6 second7 second8 second9
  226. third0 third1 third2 third3 third4 third5 third6 third7 third8 third9
  227. fourth0 fourth1 fourth2 fourth3 fourth4 fourth5 fourth6 fourth7 fourth8 fourth9
  228. fifth0 fifth1 fifth2 fifth3 fifth4 fifth5 fifth6 fifth7 fifth8 fifth9
  229. sixth0 sixth1 sixth2 sixth3 sixth4 sixth5 sixth6 sixth7 sixth8 sixth9
  230. seventh0 seventh1 seventh2 seventh3 seventh4 seventh5 seventh6 seventh7 seventh8 seventh9
  231. x}}
  232. test dstring-6.4 {Tcl_DStringGetResult} {
  233.     set result {}
  234.     lappend result [testdstring gresult free]
  235.     testdstring append y 1
  236.     lappend result [testdstring get]
  237. } {{} {This is a malloc-ed stringy}}
  238. test dstring-6.5 {Tcl_DStringGetResult} {
  239.     set result {}
  240.     lappend result [testdstring gresult special]
  241.     testdstring append z 1
  242.     lappend result [testdstring get]
  243. } {{} {This is a specially-allocated stringz}}
  244. # cleanup
  245. testdstring free
  246. ::tcltest::cleanupTests
  247. return