home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / tcl / tk3.3b1 / tests / btree.test < prev    next >
Encoding:
Text File  |  1993-04-24  |  19.4 KB  |  618 lines

  1. # This file is a Tcl script to test out the B-tree facilities of
  2. # Tk's text widget.  The file "text.test" contains additional tests
  3. # for the features of text widgets not directly involved in manipulating
  4. # B-trees.  This file is organized in the standard fashion for Tcl tests.
  5. #
  6. # Copyright (c) 1992-1993 The Regents of the University of California.
  7. # All rights reserved.
  8. #
  9. # Permission is hereby granted, without written agreement and without
  10. # license or royalty fees, to use, copy, modify, and distribute this
  11. # software and its documentation for any purpose, provided that the
  12. # above copyright notice and the following two paragraphs appear in
  13. # all copies of this software.
  14. #
  15. # IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
  16. # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
  17. # OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
  18. # CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  19. #
  20. # THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
  21. # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  22. # AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
  23. # ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
  24. # PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  25. #
  26. # $Header: /user6/ouster/wish/tests/RCS/btree.test,v 1.6 93/04/24 13:58:29 ouster Exp $ (Berkeley)
  27.  
  28. if {[string compare test [info procs test]] == 1} then \
  29.   {source defs}
  30.  
  31. catch {destroy .t}
  32. text .t
  33. .t debug on
  34.  
  35. test btree-1.1 {basic insertions} {
  36.     .t delete 1.0 100000.0
  37.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  38.     .t get 1.0 1000000.0
  39. } "Line 1\nLine 2\nLine 3\n"
  40. test btree-1.2 {basic insertions} {
  41.     .t delete 1.0 100000.0
  42.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  43.     .t insert 1.3 XXX
  44.     .t get 1.0 1000000.0
  45. } "LinXXXe 1\nLine 2\nLine 3\n"
  46. test btree-1.3 {basic insertions} {
  47.     .t delete 1.0 100000.0
  48.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  49.     .t insert 3.0 YYY
  50.     .t get 1.0 1000000.0
  51. } "Line 1\nLine 2\nYYYLine 3\n"
  52. test btree-1.4 {basic insertions} {
  53.     .t delete 1.0 100000.0
  54.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  55.     .t insert 2.1 X\nYY
  56.     .t get 1.0 1000000.0
  57. } "Line 1\nLX\nYYine 2\nLine 3\n"
  58. test btree-1.5 {basic insertions} {
  59.     .t delete 1.0 100000.0
  60.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  61.     .t insert 2.0 X\n\n\n
  62.     .t get 1.0 1000000.0
  63. } "Line 1\nX\n\n\nLine 2\nLine 3\n"
  64. test btree-1.6 {basic insertions} {
  65.     .t delete 1.0 100000.0
  66.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  67.     .t insert 2.6 X\n
  68.     .t get 1.0 1000000.0
  69. } "Line 1\nLine 2X\n\nLine 3\n"
  70. test btree-1.7 {insertion before start of text} {
  71.     .t delete 1.0 100000.0
  72.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  73.     .t insert 0.4 XXX
  74.     .t get 1.0 1000000.0
  75. } "XXXLine 1\nLine 2\nLine 3\n"
  76. test btree-1.8 {insertion past end of text} {
  77.     .t delete 1.0 100000.0
  78.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  79.     .t insert 100.0 ZZ
  80.     .t get 1.0 1000000.0
  81. } "Line 1\nLine 2\nLine 3ZZ\n"
  82. test btree-1.9 {insertion before start of line} {
  83.     .t delete 1.0 100000.0
  84.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  85.     .t insert 2.-3 Q
  86.     .t get 1.0 1000000.0
  87. } "Line 1\nQLine 2\nLine 3\n"
  88. test btree-1.10 {insertion past end of line} {
  89.     .t delete 1.0 100000.0
  90.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  91.     .t insert 2.40 XYZZY
  92.     .t get 1.0 1000000.0
  93. } "Line 1\nLine 2\nXYZZYLine 3\n"
  94. test btree-1.11 {insertion past end of last line} {
  95.     .t delete 1.0 100000.0
  96.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  97.     .t insert 3.40 ABC
  98.     .t get 1.0 1000000.0
  99. } "Line 1\nLine 2\nLine 3ABC\n"
  100.  
  101. test btree-2.1 {basic deletions} {
  102.     .t delete 1.0 100000.0
  103.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  104.     .t delete 1.0 1.3
  105.     .t get 1.0 1000000.0
  106. } "e 1\nLine 2\nLine 3\n"
  107. test btree-2.2 {basic deletions} {
  108.     .t delete 1.0 100000.0
  109.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  110.     .t delete 2.2
  111.     .t get 1.0 1000000.0
  112. } "Line 1\nLie 2\nLine 3\n"
  113. test btree-2.3 {deleting whole lines} {
  114.     .t delete 1.0 100000.0
  115.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  116.     .t delete 1.2 3.0
  117.     .t get 1.0 1000000.0
  118. } "LiLine 3\n"
  119. test btree-2.4 {deleting whole lines} {
  120.     .t delete 1.0 100000.0
  121.     .t insert 1.0 "Line 1\nLine 2\n\n\nLine 5"
  122.     .t delete 1.0 5.2
  123.     .t get 1.0 1000000.0
  124. } "ne 5\n"
  125. test btree-2.5 {deleting before start of file} {
  126.     .t delete 1.0 100000.0
  127.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  128.     .t delete 0.3 1.2
  129.     .t get 1.0 1000000.0
  130. } "ne 1\nLine 2\nLine 3\n"
  131. test btree-2.6 {deleting after end of file} {
  132.     .t delete 1.0 100000.0
  133.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  134.     .t delete 10.3
  135.     .t get 1.0 1000000.0
  136. } "Line 1\nLine 2\nLine 3\n"
  137. test btree-2.7 {deleting before start of line} {
  138.     .t delete 1.0 100000.0
  139.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  140.     .t delete 3.-1 3.3
  141.     .t get 1.0 1000000.0
  142. } "Line 1\nLine 2\ne 3\n"
  143. test btree-2.8 {deleting before start of line} {
  144.     .t delete 1.0 100000.0
  145.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  146.     .t delete 1.-1 1.0
  147.     .t get 1.0 1000000.0
  148. } "Line 1\nLine 2\nLine 3\n"
  149. test btree-2.9 {deleting after end of line} {
  150.     .t delete 1.0 100000.0
  151.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  152.     .t delete 1.8 2.1
  153.     .t get 1.0 1000000.0
  154. } "Line 1\nine 2\nLine 3\n"
  155. test btree-2.10 {deleting after end of last line} {
  156.     .t delete 1.0 100000.0
  157.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  158.     .t delete 3.8 4.1
  159.     .t get 1.0 1000000.0
  160. } "Line 1\nLine 2\nLine 3\n"
  161. test btree-2.11 {deleting before start of file} {
  162.     .t delete 1.0 100000.0
  163.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  164.     .t delete 1.8 0.0
  165.     .t get 1.0 1000000.0
  166. } "Line 1\nLine 2\nLine 3\n"
  167. test btree-2.12 {deleting past end of file} {
  168.     .t delete 1.0 100000.0
  169.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  170.     .t delete 1.8 4.0
  171.     .t get 1.0 1000000.0
  172. } "Line 1\n"
  173. test btree-2.13 {deleting with end before start of line} {
  174.     .t delete 1.0 100000.0
  175.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  176.     .t delete 1.3 2.-3
  177.     .t get 1.0 1000000.0
  178. } "LinLine 2\nLine 3\n"
  179. test btree-2.14 {deleting past end of line} {
  180.     .t delete 1.0 100000.0
  181.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  182.     .t delete 1.3 1.9
  183.     .t get 1.0 1000000.0
  184. } "LinLine 2\nLine 3\n"
  185. test btree-2.15 {deleting past end of line} {
  186.     .t delete 1.0 100000.0
  187.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  188.     .t delete 3.2 3.15
  189.     .t get 1.0 1000000.0
  190. } "Line 1\nLine 2\nLi\n"
  191. test btree-2.16 {deleting past end of line} {
  192.     .t delete 1.0 100000.0
  193.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  194.     .t delete 3.0 3.15
  195.     .t get 1.0 1000000.0
  196. } "Line 1\nLine 2\n"
  197. test btree-2.17 {deleting past end of line} {
  198.     .t delete 1.0 100000.0
  199.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  200.     .t delete 1.0 3.15
  201.     .t get 1.0 1000000.0
  202. } "\n"
  203. test btree-2.18 {deleting with negative range} {
  204.     .t delete 1.0 100000.0
  205.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  206.     .t delete 3.2 2.4
  207.     .t get 1.0 1000000.0
  208. } "Line 1\nLine 2\nLine 3\n"
  209. test btree-2.19 {deleting with negative range} {
  210.     .t delete 1.0 100000.0
  211.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  212.     .t delete 3.2 3.1
  213.     .t get 1.0 1000000.0
  214. } "Line 1\nLine 2\nLine 3\n"
  215. test btree-2.20 {deleting with negative range} {
  216.     .t delete 1.0 100000.0
  217.     .t insert 1.0 "Line 1\nLine 2\nLine 3"
  218.     .t delete 3.2 3.2
  219.     .t get 1.0 1000000.0
  220. } "Line 1\nLine 2\nLine 3\n"
  221.  
  222. proc setup {} {
  223.     .t delete 1.0 100000.0
  224.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  225.     .t tag add x 1.1
  226.     .t tag add x 1.5 1.13
  227.     .t tag add x 2.2 2.6
  228.     .t tag add y 1.5
  229. }
  230.  
  231. test btree-3.1 {inserting with tags} {
  232.     setup
  233.     .t insert 1.0 XXX
  234.     list [.t tag ranges x] [.t tag ranges y]
  235. } {{1.4 1.5 1.8 1.16 2.2 2.6} {1.8 1.9}}
  236. test btree-3.2 {inserting with tags} {
  237.     setup
  238.     .t insert 1.15 YYY
  239.     list [.t tag ranges x] [.t tag ranges y]
  240. } {{1.1 1.2 1.5 1.13 2.2 2.6} {1.5 1.6}}
  241. test btree-3.3 {inserting with tags} {
  242.     setup
  243.     .t insert 1.7 ZZZZ
  244.     list [.t tag ranges x] [.t tag ranges y]
  245. } {{1.1 1.2 1.5 1.17 2.2 2.6} {1.5 1.6}}
  246. test btree-3.4 {inserting with tags} {
  247.     setup
  248.     .t insert 1.7 \n\n
  249.     list [.t tag ranges x] [.t tag ranges y]
  250. } {{1.1 1.2 1.5 3.6 4.2 4.6} {1.5 1.6}}
  251. test btree-3.5 {inserting with tags} {
  252.     setup
  253.     .t insert 1.5 A\n
  254.     list [.t tag ranges x] [.t tag ranges y]
  255. } {{1.1 1.2 2.0 2.8 3.2 3.6} {2.0 2.1}}
  256.  
  257. test btree-4.1 {deleting with tags} {
  258.     setup
  259.     .t delete 1.6 1.9
  260.     list [.t tag ranges x] [.t tag ranges y]
  261. } {{1.1 1.2 1.5 1.10 2.2 2.6} {1.5 1.6}}
  262. test btree-4.2 {deleting with tags} {
  263.     setup
  264.     .t delete 1.1 2.3
  265.     list [.t tag ranges x] [.t tag ranges y]
  266. } {{1.1 1.4} {}}
  267. test btree-4.3 {deleting with tags} {
  268.     setup
  269.     .t delete 1.4 2.1
  270.     list [.t tag ranges x] [.t tag ranges y]
  271. } {{1.1 1.2 1.5 1.9} {}}
  272. test btree-4.4 {deleting with tags} {
  273.     setup
  274.     .t delete 1.14 2.1
  275.     list [.t tag ranges x] [.t tag ranges y]
  276. } {{1.1 1.2 1.5 1.13 1.15 1.19} {1.5 1.6}}
  277. test btree-4.5 {deleting with tags} {
  278.     setup
  279.     .t delete 1.0 2.10
  280.     list [.t tag ranges x] [.t tag ranges y]
  281. } {{} {}}
  282. test btree-4.6 {deleting with tags} {
  283.     setup
  284.     .t delete 1.0 1.5
  285.     list [.t tag ranges x] [.t tag ranges y]
  286. } {{1.0 1.8 2.2 2.6} {1.0 1.1}}
  287. test btree-4.7 {deleting with tags} {
  288.     setup
  289.     .t delete 1.6 1.9
  290.     list [.t tag ranges x] [.t tag ranges y]
  291. } {{1.1 1.2 1.5 1.10 2.2 2.6} {1.5 1.6}}
  292. test btree-4.8 {deleting with tags} {
  293.     setup
  294.     .t delete 1.5 1.13
  295.     list [.t tag ranges x] [.t tag ranges y]
  296. } {{1.1 1.2 2.2 2.6} {}}
  297.  
  298. set bigText1 {}
  299. for {set i 0} {$i < 10} {incr i} {
  300.     append bigText1 "Line $i\n"
  301. }
  302. set bigText2 {}
  303. for {set i 0} {$i < 200} {incr i} {
  304.     append bigText2 "Line $i\n"
  305. }
  306. test btree-5.1 {very large inserts, with tags} {
  307.     setup
  308.     .t insert 1.0 $bigText1
  309.     list [.t tag ranges x] [.t tag ranges y]
  310. } {{11.1 11.2 11.5 11.13 12.2 12.6} {11.5 11.6}}
  311. test btree-5.2 {very large inserts, with tags} {
  312.     setup
  313.     .t insert 1.2 $bigText2
  314.     list [.t tag ranges x] [.t tag ranges y]
  315. } {{1.1 201.0 201.3 201.11 202.2 202.6} {201.3 201.4}}
  316. test btree-5.3 {very large inserts, with tags} {
  317.     setup
  318.     for {set i 0} {$i < 200} {incr i} {
  319.     .t insert 1.8 "longer line $i\n"
  320.     }
  321.     list [.t tag ranges x] [.t tag ranges y] [.t get 1.0 1.100] [.t get 198.0 198.100]
  322. } {{1.1 1.2 1.5 201.5 202.2 202.6} {1.5 1.6} {Text forlonger line 199
  323. } {longer line 2
  324. }}
  325.  
  326. test btree-6.1 {very large deletes, with tags} {
  327.     setup
  328.     .t insert 1.1 $bigText2
  329.     .t delete 1.2 201.2
  330.     list [.t tag ranges x] [.t tag ranges y]
  331. } {{1.4 1.12 2.2 2.6} {1.4 1.5}}
  332. test btree-6.2 {very large deletes, with tags} {
  333.     setup
  334.     .t insert 1.1 $bigText2
  335.     for {set i 0} {$i < 200} {incr i} {
  336.     .t delete 1.2 2.2
  337.     }
  338.     list [.t tag ranges x] [.t tag ranges y]
  339. } {{1.4 1.12 2.2 2.6} {1.4 1.5}}
  340. test btree-6.3 {very large deletes, with tags} {
  341.     setup
  342.     .t insert 1.1 $bigText2
  343.     .t delete 2.3 10000.0
  344.     .t get 1.0 1000.0
  345. } {TLine 0
  346. Lin
  347. }
  348. test btree-6.4 {very large deletes, with tags} {
  349.     setup
  350.     .t insert 1.1 $bigText2
  351.     for {set i 0} {$i < 100} {incr i} {
  352.     .t delete 30.0 31.0
  353.     }
  354.     list [.t tag ranges x] [.t tag ranges y]
  355. } {{101.0 101.1 101.4 101.12 102.2 102.6} {101.4 101.5}}
  356. test btree-6.5 {very large deletes, with tags} {
  357.     setup
  358.     .t insert 1.1 $bigText2
  359.     for {set i 0} {$i < 100} {incr i} {
  360.     set j [expr $i+2]
  361.     set k [expr 1+2*$i]
  362.     .t tag add x $j.1 $j.3
  363.     .t tag add y $k.1 $k.6
  364.     }
  365.     .t delete 2.0 200.0
  366.     list [.t tag ranges x] [.t tag ranges y]
  367. } {{3.0 3.1 3.4 3.12 4.2 4.6} {1.1 1.6 3.4 3.5}}
  368. test btree-6.5 {very large deletes, with tags} {
  369.     setup
  370.     .t insert 1.1 $bigText2
  371.     for {set i 0} {$i < 100} {incr i} {
  372.     set j [expr $i+2]
  373.     set k [expr 1+2*$i]
  374.     .t tag add x $j.1 $j.3
  375.     .t tag add y $k.1 $k.6
  376.     }
  377.     for {set i 199} {$i >= 2} {incr i -1} {
  378.     .t delete $i.0 $i.100
  379.     }
  380.     list [.t tag ranges x] [.t tag ranges y]
  381. } {{3.0 3.1 3.4 3.12 4.2 4.6} {1.1 1.6 3.4 3.5}}
  382.  
  383. test btree-7.1 {tag addition and removal, weird ranges} {
  384.     .t delete 1.0 100000.0
  385.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  386.     .t tag add x 0.0 1.3
  387.     .t tag ranges x
  388. } {1.0 1.3}
  389. test btree-7.2 {tag addition and removal, weird ranges} {
  390.     .t delete 1.0 100000.0
  391.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  392.     .t tag add x 1.40 2.4
  393.     .t tag ranges x
  394. } {2.0 2.4}
  395. test btree-7.3 {tag addition and removal, weird ranges} {
  396.     .t delete 1.0 100000.0
  397.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  398.     .t tag add x 4.40 4.41
  399.     .t tag ranges x
  400. } {}
  401. test btree-7.4 {tag addition and removal, weird ranges} {
  402.     .t delete 1.0 100000.0
  403.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  404.     .t tag add x 5.1 5.2
  405.     .t tag ranges x
  406. } {}
  407. test btree-7.5 {tag addition and removal, weird ranges} {
  408.     .t delete 1.0 100000.0
  409.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  410.     .t tag add x 1.1 9.0
  411.     .t tag ranges x
  412. } {1.1 4.17}
  413. test btree-7.6 {tag addition and removal, weird ranges} {
  414.     .t delete 1.0 100000.0
  415.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  416.     .t tag add x 1.1 1.90
  417.     .t tag ranges x
  418. } {1.1 2.0}
  419. test btree-7.6 {tag addition and removal, weird ranges} {
  420.     .t delete 1.0 100000.0
  421.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  422.     .t tag add x 1.1 4.90
  423.     .t tag ranges x
  424. } {1.1 4.17}
  425. test btree-7.7 {tag addition and removal with other tags in range} {
  426.     .t delete 1.0 100000.0
  427.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  428.     .t tag add x 1.3 1.5
  429.     .t tag add x 1.10 1.12
  430.     .t tag add x 1.7 1.9
  431.     .t tag ranges x
  432. } {1.3 1.5 1.7 1.9 1.10 1.12}
  433. test btree-7.8 {tag addition and removal with other tags in range} {
  434.     .t delete 1.0 100000.0
  435.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  436.     .t tag add x 1.3 1.5
  437.     .t tag add x 1.10 1.12
  438.     .t tag add x 1.5 1.9
  439.     .t tag ranges x
  440. } {1.3 1.9 1.10 1.12}
  441. test btree-7.9 {tag addition and removal with other tags in range} {
  442.     .t delete 1.0 100000.0
  443.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  444.     .t tag add x 1.3 1.5
  445.     .t tag add x 1.10 1.12
  446.     .t tag add x 1.4 1.9
  447.     .t tag ranges x
  448. } {1.3 1.9 1.10 1.12}
  449. test btree-7.10 {tag addition and removal with other tags in range} {
  450.     .t delete 1.0 100000.0
  451.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  452.     .t tag add x 1.3 1.5
  453.     .t tag add x 1.10 1.12
  454.     .t tag add x 1.2 1.9
  455.     .t tag ranges x
  456. } {1.2 1.9 1.10 1.12}
  457. test btree-7.11 {tag addition and removal with other tags in range} {
  458.     .t delete 1.0 100000.0
  459.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  460.     .t tag add x 1.3 1.5
  461.     .t tag add x 1.10 1.12
  462.     .t tag add x 1.7 1.10
  463.     .t tag ranges x
  464. } {1.3 1.5 1.7 1.12}
  465. test btree-7.12 {tag addition and removal with other tags in range} {
  466.     .t delete 1.0 100000.0
  467.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  468.     .t tag add x 1.3 1.5
  469.     .t tag add x 1.10 1.12
  470.     .t tag add x 1.7 1.11
  471.     .t tag ranges x
  472. } {1.3 1.5 1.7 1.12}
  473. test btree-7.13 {tag addition and removal with other tags in range} {
  474.     .t delete 1.0 100000.0
  475.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  476.     .t tag add x 1.3 1.5
  477.     .t tag add x 1.10 1.12
  478.     .t tag add x 1.7 1.12
  479.     .t tag ranges x
  480. } {1.3 1.5 1.7 1.12}
  481. test btree-7.14 {tag addition and removal with other tags in range} {
  482.     .t delete 1.0 100000.0
  483.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  484.     .t tag add x 1.3 1.5
  485.     .t tag add x 1.10 1.12
  486.     .t tag add x 1.7 1.14
  487.     .t tag ranges x
  488. } {1.3 1.5 1.7 1.14}
  489. test btree-7.14 {tag addition and removal with other tags in range} {
  490.     .t delete 1.0 100000.0
  491.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  492.     .t tag add x 1.3 1.5
  493.     .t tag add x 1.10 1.12
  494.     .t tag add x 1.1 2.3
  495.     .t tag ranges x
  496. } {1.1 2.3}
  497.  
  498. test btree-8.1 {tag names} {
  499.     setup
  500.     .t tag names
  501. } {sel x y}
  502. test btree-8.2 {tag names} {
  503.     setup
  504.     .t tag add tag1 1.8
  505.     .t tag add tag2 1.8
  506.     .t tag add tag3 1.7 1.9
  507.     .t tag names 1.8
  508. } {x tag1 tag2 tag3}
  509. test btree-8.3 {lots of tag names} {
  510.     setup
  511.     .t insert 1.2 $bigText2
  512.     foreach i {tag1 foo ThisOne {x space} q r s t} {
  513.     .t tag add $i 150.2
  514.     }
  515.     foreach i {u tagA tagB tagC and more {$} \{} {
  516.     .t tag add $i 150.1 150.3
  517.     }
  518.     .t tag names 150.2
  519. } {x tag1 foo ThisOne {x space} q r s t u tagA tagB tagC and more {$} \{}
  520.  
  521. proc msetup {} {
  522.     .t delete 1.0 100000.0
  523.     .t insert 1.0 "Text for first line\nSecond line\n\nLast line of info"
  524.     .t mark set m1 1.2
  525.     .t mark set next 1.6
  526.     .t mark set x 1.6
  527.     .t mark set m2 2.0
  528.     .t mark set m3 2.100
  529.     .t tag add x 1.3 1.8
  530. }
  531. test btree-9.1 {basic mark facilities} {
  532.     msetup
  533.     list [lsort [.t mark names]] [.t index m1] [.t index m2] [.t index m3]
  534. } {{current insert m1 m2 m3 next x} 1.2 2.0 3.0}
  535. test btree-9.2 {basic mark facilities} {
  536.     msetup
  537.     .t mark unset m2
  538.     lsort [.t mark names]
  539. } {current insert m1 m3 next x}
  540. test btree-9.3 {basic mark facilities} {
  541.     msetup
  542.     .t mark set m2 1.8
  543.     list [lsort [.t mark names]] [.t index m1] [.t index m2] [.t index m3]
  544. } {{current insert m1 m2 m3 next x} 1.2 1.8 3.0}
  545.  
  546. test btree-10.1 {marks and inserts} {
  547.     msetup
  548.     .t insert 1.1 abcde
  549.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  550. } {1.7 1.11 1.11 2.0 3.0}
  551. test btree-10.2 {marks and inserts} {
  552.     msetup
  553.     .t insert 1.2 abcde
  554.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  555. } {1.7 1.11 1.11 2.0 3.0}
  556. test btree-10.3 {marks and inserts} {
  557.     msetup
  558.     .t insert 1.3 abcde
  559.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  560. } {1.2 1.11 1.11 2.0 3.0}
  561. test btree-10.4 {marks and inserts} {
  562.     msetup
  563.     .t insert 1.1 ab\n\ncde
  564.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  565. } {3.4 3.8 3.8 4.0 5.0}
  566. test btree-10.5 {marks and inserts} {
  567.     msetup
  568.     .t insert 1.4 ab\n\ncde
  569.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  570. } {1.2 3.5 3.5 4.0 5.0}
  571. test btree-10.6 {marks and inserts} {
  572.     msetup
  573.     .t insert 1.7 ab\n\ncde
  574.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  575. } {1.2 1.6 1.6 4.0 5.0}
  576.  
  577. test btree-11.1 {marks and deletes} {
  578.     msetup
  579.     .t delete 1.3 1.5
  580.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  581. } {1.2 1.4 1.4 2.0 3.0}
  582. test btree-11.2 {marks and deletes} {
  583.     msetup
  584.     .t delete 1.3 1.8
  585.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  586. } {1.2 1.3 1.3 2.0 3.0}
  587. test btree-11.3 {marks and deletes} {
  588.     msetup
  589.     .t delete 1.2 1.8
  590.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  591. } {1.2 1.2 1.2 2.0 3.0}
  592. test btree-11.4 {marks and deletes} {
  593.     msetup
  594.     .t delete 1.1 1.8
  595.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  596. } {1.1 1.1 1.1 2.0 3.0}
  597. test btree-11.5 {marks and deletes} {
  598.     msetup
  599.     .t delete 1.5 3.1
  600.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  601. } {1.2 1.5 1.5 1.5 1.5}
  602. test btree-11.6 {marks and deletes} {
  603.     msetup
  604.     .t mark set m2 4.5
  605.     .t delete 1.5 4.1
  606.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  607. } {1.2 1.5 1.5 1.9 1.5}
  608. test btree-11.7 {marks and deletes} {
  609.     msetup
  610.     .t mark set m2 4.5
  611.     .t mark set m3 4.5
  612.     .t mark set m1 4.7
  613.     .t delete 1.5 4.1
  614.     list [.t index m1] [.t index next] [.t index x] [.t index m2] [.t index m3]
  615. } {1.11 1.5 1.5 1.9 1.9}
  616.  
  617. destroy .t
  618.