1# This file is a Tcl script to test the code in the file tkTextMark.c. 2# This file is organized in the standard fashion for Tcl tests. 3# 4# Copyright (c) 1994 The Regents of the University of California. 5# Copyright (c) 1994 Sun Microsystems, Inc. 6# Copyright (c) 1998-1999 by Scriptics Corporation. 7# All rights reserved. 8# 9# RCS: @(#) $Id$ 10 11package require tcltest 2.1 12eval tcltest::configure $argv 13tcltest::loadTestedCommands 14 15catch {destroy .t} 16text .t -width 20 -height 10 17testConstraint haveCourier12 [expr {[catch { 18 .t configure -font {Courier 12} 19}] == 0}] 20pack append . .t {top expand fill} 21update 22.t debug on 23wm geometry . {} 24 25# The statements below reset the main window; it's needed if the window 26# manager is mwm to make mwm forget about a previous minimum size setting. 27 28wm withdraw . 29wm minsize . 1 1 30wm positionfrom . user 31wm deiconify . 32 33entry .t.e 34.t insert 1.0 "Line 1 35abcdefghijklm 3612345 37Line 4 38bOy GIrl .#@? x_yz 39!@#$% 40Line 7" 41 42test textMark-1.1 {TkTextMarkCmd - missing option} haveCourier12 { 43 list [catch {.t mark} msg] $msg 44} {1 {wrong # args: should be ".t mark option ?arg arg ...?"}} 45test textMark-1.2 {TkTextMarkCmd - bogus option} haveCourier12 { 46 list [catch {.t mark gorp} msg] $msg 47} {1 {bad mark option "gorp": must be gravity, names, next, previous, set, or unset}} 48test textMark-1.3 {TkTextMarkCmd - "gravity" option} haveCourier12 { 49 list [catch {.t mark gravity foo} msg] $msg 50} {1 {there is no mark named "foo"}} 51test textMark-1.4 {TkTextMarkCmd - "gravity" option} haveCourier12 { 52 .t mark unset x 53 .t mark set x 1.3 54 .t insert 1.3 x 55 list [.t mark gravity x] [.t index x] 56} {right 1.4} 57test textMark-1.5 {TkTextMarkCmd - "gravity" option} haveCourier12 { 58 .t mark unset x 59 .t mark set x 1.3 60 .t mark g x left 61 .t insert 1.3 x 62 list [.t mark gravity x] [.t index x] 63} {left 1.3} 64test textMark-1.6 {TkTextMarkCmd - "gravity" option} haveCourier12 { 65 .t mark unset x 66 .t mark set x 1.3 67 .t mark gravity x right 68 .t insert 1.3 x 69 list [.t mark gravity x] [.t index x] 70} {right 1.4} 71test textMark-1.7 {TkTextMarkCmd - "gravity" option} haveCourier12 { 72 list [catch {.t mark gravity x gorp} msg] $msg 73} {1 {bad mark gravity "gorp": must be left or right}} 74test textMark-1.8 {TkTextMarkCmd - "gravity" option} haveCourier12 { 75 list [catch {.t mark gravity} msg] $msg 76} {1 {wrong # args: should be ".t mark gravity markName ?gravity?"}} 77 78test textMark-2.1 {TkTextMarkCmd - "names" option} haveCourier12 { 79 list [catch {.t mark names 2} msg] $msg 80} {1 {wrong # args: should be ".t mark names"}} 81.t mark unset x 82test textMark-2.2 {TkTextMarkCmd - "names" option} haveCourier12 { 83 lsort [.t mark na] 84} {current insert} 85test textMark-2.3 {TkTextMarkCmd - "names" option} haveCourier12 { 86 .t mark set a 1.1 87 .t mark set "b c" 2.3 88 lsort [.t mark names] 89} {a {b c} current insert} 90 91test textMark-3.1 {TkTextMarkCmd - "set" option} haveCourier12 { 92 list [catch {.t mark set a} msg] $msg 93} {1 {wrong # args: should be ".t mark set markName index"}} 94test textMark-3.2 {TkTextMarkCmd - "set" option} haveCourier12 { 95 list [catch {.t mark s a b c} msg] $msg 96} {1 {wrong # args: should be ".t mark set markName index"}} 97test textMark-3.3 {TkTextMarkCmd - "set" option} haveCourier12 { 98 list [catch {.t mark set a @x} msg] $msg 99} {1 {bad text index "@x"}} 100test textMark-3.4 {TkTextMarkCmd - "set" option} haveCourier12 { 101 .t mark set a 1.2 102 .t index a 103} 1.2 104test textMark-3.5 {TkTextMarkCmd - "set" option} haveCourier12 { 105 .t mark set a end 106 .t index a 107} {8.0} 108 109test textMark-4.1 {TkTextMarkCmd - "unset" option} haveCourier12 { 110 list [catch {.t mark unset} msg] $msg 111} {0 {}} 112test textMark-4.2 {TkTextMarkCmd - "unset" option} haveCourier12 { 113 .t mark set a 1.2 114 .t mark set b 2.3 115 .t mark unset a b 116 list [catch {.t index a} msg] $msg [catch {.t index b} msg2] $msg2 117} {1 {bad text index "a"} 1 {bad text index "b"}} 118test textMark-4.3 {TkTextMarkCmd - "unset" option} haveCourier12 { 119 .t mark set a 1.2 120 .t mark set b 2.3 121 .t mark set 49ers 3.1 122 eval .t mark unset [.t mark names] 123 lsort [.t mark names] 124} {current insert} 125 126test textMark-5.1 {TkTextMarkCmd - miscellaneous} haveCourier12 { 127 list [catch {.t mark} msg] $msg 128} {1 {wrong # args: should be ".t mark option ?arg arg ...?"}} 129test textMark-5.2 {TkTextMarkCmd - miscellaneous} haveCourier12 { 130 list [catch {.t mark foo} msg] $msg 131} {1 {bad mark option "foo": must be gravity, names, next, previous, set, or unset}} 132 133test textMark-6.1 {TkTextMarkSegToIndex} haveCourier12 { 134 .t mark set a 1.2 135 .t mark set b 1.2 136 .t mark set c 1.2 137 .t mark set d 1.4 138 list [.t index a] [.t index b] [.t index c ] [.t index d] 139} {1.2 1.2 1.2 1.4} 140 141catch {eval {.t mark unset} [.t mark names]} 142test textMark-7.1 {MarkFindNext - invalid mark name} haveCourier12 { 143 catch {.t mark next bogus} x 144 set x 145} {bad text index "bogus"} 146test textMark-7.2 {MarkFindNext - marks at same location} haveCourier12 { 147 .t mark set insert 2.0 148 .t mark set current 2.0 149 .t mark next current 150} {insert} 151test textMark-7.3 {MarkFindNext - numerical starting mark} haveCourier12 { 152 .t mark set current 1.0 153 .t mark set insert 1.0 154 .t mark next 1.0 155} {insert} 156test textMark-7.4 {MarkFindNext - mark on the same line} haveCourier12 { 157 .t mark set current 1.0 158 .t mark set insert 1.1 159 .t mark next current 160} {insert} 161test textMark-7.5 {MarkFindNext - mark on the next line} haveCourier12 { 162 .t mark set current 1.end 163 .t mark set insert 2.0 164 .t mark next current 165} {insert} 166test textMark-7.6 {MarkFindNext - mark far away} haveCourier12 { 167 .t mark set current 1.2 168 .t mark set insert 7.0 169 .t mark next current 170} {insert} 171test textMark-7.7 {MarkFindNext - mark on top of end} haveCourier12 { 172 .t mark set current end 173 .t mark next end 174} {current} 175test textMark-7.8 {MarkFindNext - no next mark} haveCourier12 { 176 .t mark set current 1.0 177 .t mark set insert 3.0 178 .t mark next insert 179} {} 180test textMark-8.1 {MarkFindPrev - invalid mark name} haveCourier12 { 181 catch {.t mark prev bogus} x 182 set x 183} {bad text index "bogus"} 184test textMark-8.2 {MarkFindPrev - marks at same location} haveCourier12 { 185 .t mark set insert 2.0 186 .t mark set current 2.0 187 .t mark prev insert 188} {current} 189test textMark-8.3 {MarkFindPrev - numerical starting mark} haveCourier12 { 190 .t mark set current 1.0 191 .t mark set insert 1.0 192 .t mark prev 1.1 193} {current} 194test textMark-8.4 {MarkFindPrev - mark on the same line} haveCourier12 { 195 .t mark set current 1.0 196 .t mark set insert 1.1 197 .t mark prev insert 198} {current} 199test textMark-8.5 {MarkFindPrev - mark on the previous line} haveCourier12 { 200 .t mark set current 1.end 201 .t mark set insert 2.0 202 .t mark prev insert 203} {current} 204test textMark-8.6 {MarkFindPrev - mark far away} haveCourier12 { 205 .t mark set current 1.2 206 .t mark set insert 7.0 207 .t mark prev insert 208} {current} 209test textMark-8.7 {MarkFindPrev - mark on top of end} haveCourier12 { 210 .t mark set insert 3.0 211 .t mark set current end 212 .t mark prev end 213} {insert} 214test textMark-8.8 {MarkFindPrev - no previous mark} haveCourier12 { 215 .t mark set current 1.0 216 .t mark set insert 3.0 217 .t mark prev current 218} {} 219 220catch {destroy .t} 221 222# cleanup 223cleanupTests 224return 225