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