318 lines
10 KiB
Plaintext
318 lines
10 KiB
Plaintext
# This file is a Tcl script to test the code in the file tkTextMark.c.
|
||
# This file is organized in the standard fashion for Tcl tests.
|
||
#
|
||
# Copyright (c) 1994 The Regents of the University of California.
|
||
# Copyright (c) 1994 Sun Microsystems, Inc.
|
||
# Copyright (c) 1998-1999 by Scriptics Corporation.
|
||
# All rights reserved.
|
||
|
||
package require tcltest 2.2
|
||
namespace import ::tcltest::*
|
||
tcltest::configure {*}$argv
|
||
tcltest::loadTestedCommands
|
||
|
||
destroy .t
|
||
text .t -width 20 -height 10
|
||
pack .t -expand 1 -fill both
|
||
update
|
||
.t debug on
|
||
wm geometry . {}
|
||
entry .t.e
|
||
.t peer create .pt
|
||
|
||
.t insert 1.0 "Line 1
|
||
abcdefghijklm
|
||
12345
|
||
Line 4
|
||
bOy GIrl .#@? x_yz
|
||
!@#$%
|
||
Line 7"
|
||
|
||
# The statements below reset the main window; it's needed if the window
|
||
# manager is mwm to make mwm forget about a previous minimum size setting.
|
||
|
||
wm withdraw .
|
||
wm minsize . 1 1
|
||
wm positionfrom . user
|
||
wm deiconify .
|
||
|
||
test textMark-1.1 {TkTextMarkCmd - missing option} -returnCodes error -body {
|
||
.t mark
|
||
} -result {wrong # args: should be ".t mark option ?arg ...?"}
|
||
test textMark-1.2 {TkTextMarkCmd - bogus option} -returnCodes error -body {
|
||
.t mark gorp
|
||
} -match glob -result {bad mark option "gorp": must be *}
|
||
test textMark-1.3 {TkTextMarkCmd - "gravity" option} -returnCodes error -body {
|
||
.t mark gravity foo
|
||
} -result {there is no mark named "foo"}
|
||
test textMark-1.4 {TkTextMarkCmd - "gravity" option} -body {
|
||
.t mark set x 1.3
|
||
.t insert 1.3 x
|
||
list [.t mark gravity x] [.t index x]
|
||
} -result {right 1.4}
|
||
test textMark-1.5 {TkTextMarkCmd - "gravity" option} -body {
|
||
.t mark set x 1.3
|
||
.t mark g x left
|
||
.t insert 1.3 x
|
||
list [.t mark gravity x] [.t index x]
|
||
} -result {left 1.3}
|
||
test textMark-1.6 {TkTextMarkCmd - "gravity" option} -body {
|
||
.t mark set x 1.3
|
||
.t mark gravity x right
|
||
.t insert 1.3 x
|
||
list [.t mark gravity x] [.t index x]
|
||
} -result {right 1.4}
|
||
test textMark-1.7 {TkTextMarkCmd - "gravity" option} -returnCodes error -body {
|
||
.t mark set x 1.3
|
||
.t mark gravity x gorp
|
||
} -result {bad mark gravity "gorp": must be left or right}
|
||
test textMark-1.8 {TkTextMarkCmd - "gravity" option} -returnCodes error -body {
|
||
.t mark gravity
|
||
} -result {wrong # args: should be ".t mark gravity markName ?gravity?"}
|
||
|
||
test textMark-2.1 {TkTextMarkCmd - "names" option} -body {
|
||
.t mark names 2
|
||
} -returnCodes error -result {wrong # args: should be ".t mark names"}
|
||
test textMark-2.2 {TkTextMarkCmd - "names" option} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
lsort [.t mark na]
|
||
} -result {current insert}
|
||
test textMark-2.3 {TkTextMarkCmd - "names" option} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set a 1.1
|
||
.t mark set "b c" 2.3
|
||
lsort [.t mark names]
|
||
} -result {a {b c} current insert}
|
||
|
||
test textMark-3.1 {TkTextMarkCmd - "set" option} -returnCodes error -body {
|
||
.t mark set a
|
||
} -result {wrong # args: should be ".t mark set markName index"}
|
||
test textMark-3.2 {TkTextMarkCmd - "set" option} -returnCodes error -body {
|
||
.t mark s a b c
|
||
} -result {wrong # args: should be ".t mark set markName index"}
|
||
test textMark-3.3 {TkTextMarkCmd - "set" option} -body {
|
||
.t mark set a @x
|
||
} -returnCodes error -result {bad text index "@x"}
|
||
test textMark-3.4 {TkTextMarkCmd - "set" option} -body {
|
||
.t mark set a 1.2
|
||
.t index a
|
||
} -result 1.2
|
||
test textMark-3.5 {TkTextMarkCmd - "set" option} -body {
|
||
.t mark set a end
|
||
.t index a
|
||
} -result {8.0}
|
||
|
||
test textMark-4.1 {TkTextMarkCmd - "unset" option} -body {
|
||
.t mark unset
|
||
} -result {}
|
||
test textMark-4.2 {TkTextMarkCmd - "unset" option} -body {
|
||
.t mark set a 1.2
|
||
.t mark set b 2.3
|
||
.t mark unset a b
|
||
.t index a
|
||
} -returnCodes error -result {bad text index "a"}
|
||
test textMark-4.2.1 {TkTextMarkCmd - "unset" option} -body {
|
||
.t mark set a 1.2
|
||
.t mark set b 2.3
|
||
.t mark unset a b
|
||
.t index b
|
||
} -returnCodes error -result {bad text index "b"}
|
||
test textMark-4.3 {TkTextMarkCmd - "unset" option} -body {
|
||
.t mark set a 1.2
|
||
.t mark set b 2.3
|
||
.t mark set 49ers 3.1
|
||
.t mark unset {*}[.t mark names]
|
||
lsort [.t mark names]
|
||
} -result {current insert}
|
||
|
||
test textMark-5.1 {TkTextMarkCmd - miscellaneous} -returnCodes error -body {
|
||
.t mark
|
||
} -result {wrong # args: should be ".t mark option ?arg ...?"}
|
||
test textMark-5.2 {TkTextMarkCmd - miscellaneous} -returnCodes error -body {
|
||
.t mark foo
|
||
} -result {bad mark option "foo": must be gravity, names, next, previous, set, or unset}
|
||
|
||
test textMark-6.1 {TkTextMarkSegToIndex} -body {
|
||
.t mark set a 1.2
|
||
.t mark set b 1.2
|
||
.t mark set c 1.2
|
||
.t mark set d 1.4
|
||
list [.t index a] [.t index b] [.t index c ] [.t index d]
|
||
} -result {1.2 1.2 1.2 1.4}
|
||
test textMark-6.2 {TkTextMarkNameToIndex, with mark outside -startline/-endline range - bug 1630271} -body {
|
||
.t mark set insert 1.0
|
||
.t configure -startline 2
|
||
set res [list [.t index insert] [.t index insert-1c] [.t get insert]]
|
||
.t mark set insert end
|
||
.t configure -endline 4
|
||
lappend res [.t index insert]
|
||
} -cleanup {
|
||
.t configure -startline {} -endline {}
|
||
} -result {1.0 1.0 a 2.5}
|
||
test textMark-6.3 {TkTextMarkNameToIndex, with mark outside -startline/-endline range - bug 1630271} -body {
|
||
.t mark set mymark 1.0
|
||
.t configure -startline 2
|
||
list [catch {.t index mymark} msg] $msg
|
||
} -cleanup {
|
||
.t configure -startline {} -endline {}
|
||
.t mark unset mymark
|
||
} -result {1 {bad text index "mymark"}}
|
||
test textMark-6.4 {TkTextMarkNameToIndex, with mark outside -startline/-endline range - bug 1630271} -body {
|
||
.t mark set mymark 1.0
|
||
.t configure -startline 2
|
||
set res [list [catch {.t index mymark} msg] $msg]
|
||
lappend res [.pt index mymark]
|
||
.t configure -startline {}
|
||
.pt configure -startline 4
|
||
lappend res [.t index mymark]
|
||
lappend res [catch {.pt index mymark} msg] $msg
|
||
lappend res [.t get mymark]
|
||
lappend res [catch {.pt get mymark} msg] $msg
|
||
} -cleanup {
|
||
.t configure -startline {} -endline {}
|
||
.pt configure -startline {} -endline {}
|
||
.t mark unset mymark
|
||
} -result {1 {bad text index "mymark"} 1.0 1.0 1 {bad text index "mymark"} L 1 {bad text index "mymark"}}
|
||
test textMark-6.5 {insert and current marks in an empty peer - bug 3487407} -body {
|
||
.t mark set insert 1.0
|
||
.t configure -start 5 -end 5
|
||
set res [.t index insert]
|
||
} -cleanup {
|
||
.t configure -startline {} -endline {}
|
||
} -result {1.0}
|
||
test textMark-6.6 {attempt to move the insert mark beyond peer -endline - bug 34db75c0ac} -body {
|
||
.t peer create .p -startline 1 -endline 2
|
||
pack .p
|
||
update
|
||
.p mark set insert 1.2
|
||
focus -force .p
|
||
event generate .p <<NextLine>> ; # shall not error out
|
||
set res [.p index insert]
|
||
} -cleanup {
|
||
destroy .p
|
||
} -result {1.9}
|
||
|
||
test textMark-7.1 {MarkFindNext - invalid mark name} -body {
|
||
.t mark next bogus
|
||
} -returnCodes error -result {bad text index "bogus"}
|
||
test textMark-7.2 {MarkFindNext - marks at same location} -body {
|
||
.t mark set insert 2.0
|
||
.t mark set current 2.0
|
||
.t mark next current
|
||
} -result {insert}
|
||
test textMark-7.3 {MarkFindNext - numerical starting mark} -body {
|
||
.t mark set current 1.0
|
||
.t mark set insert 1.0
|
||
.t mark next 1.0
|
||
} -result {insert}
|
||
test textMark-7.4 {MarkFindNext - mark on the same line} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set current 1.0
|
||
.t mark set insert 1.1
|
||
.t mark next current
|
||
} -result {insert}
|
||
test textMark-7.5 {MarkFindNext - mark on the next line} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set current 1.end
|
||
.t mark set insert 2.0
|
||
.t mark next current
|
||
} -result {insert}
|
||
test textMark-7.6 {MarkFindNext - mark far away} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set current 1.2
|
||
.t mark set insert 7.0
|
||
.t mark next current
|
||
} -result {insert}
|
||
test textMark-7.7 {MarkFindNext - mark on top of end} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set current end
|
||
.t mark next end
|
||
} -result {current}
|
||
test textMark-7.8 {MarkFindNext - no next mark} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set current 1.0
|
||
.t mark set insert 3.0
|
||
.t mark next insert
|
||
} -result {}
|
||
test textMark-7.9 {MarkFindNext - mark set in a text widget and retrieved from a peer} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set mymark 1.0
|
||
lsort [list [.pt mark next 1.0] [.pt mark next mymark] [.pt mark next insert]]
|
||
} -result {current insert mymark}
|
||
|
||
test textMark-8.1 {MarkFindPrev - invalid mark name} -body {
|
||
.t mark prev bogus
|
||
} -returnCodes error -result {bad text index "bogus"}
|
||
test textMark-8.2 {MarkFindPrev - marks at same location} -body {
|
||
.t mark set insert 2.0
|
||
.t mark set current 2.0
|
||
.t mark prev insert
|
||
} -result {current}
|
||
test textMark-8.3 {MarkFindPrev - numerical starting mark} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set current 1.0
|
||
.t mark set insert 1.0
|
||
.t mark prev 1.1
|
||
} -result {current}
|
||
test textMark-8.4 {MarkFindPrev - mark on the same line} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set current 1.0
|
||
.t mark set insert 1.1
|
||
.t mark prev insert
|
||
} -result {current}
|
||
test textMark-8.5 {MarkFindPrev - mark on the previous line} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set current 1.end
|
||
.t mark set insert 2.0
|
||
.t mark prev insert
|
||
} -result {current}
|
||
test textMark-8.6 {MarkFindPrev - mark far away} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set current 1.2
|
||
.t mark set insert 7.0
|
||
.t mark prev insert
|
||
} -result {current}
|
||
test textMark-8.7 {MarkFindPrev - mark on top of end} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set insert 3.0
|
||
.t mark set current end
|
||
.t mark prev end
|
||
} -result {insert}
|
||
test textMark-8.8 {MarkFindPrev - no previous mark} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set current 1.0
|
||
.t mark set insert 3.0
|
||
.t mark prev current
|
||
} -result {}
|
||
test textMark-8.9 {MarkFindPrev - mark set in a text widget and retrieved from a peer} -setup {
|
||
.t mark unset {*}[.t mark names]
|
||
} -body {
|
||
.t mark set mymark 1.0
|
||
lsort [list [.pt mark prev end] [.pt mark prev current] [.pt mark prev insert]]
|
||
} -result {current insert mymark}
|
||
|
||
destroy .pt
|
||
destroy .t
|
||
|
||
# cleanup
|
||
cleanupTests
|
||
return
|
||
|
||
# Local Variables:
|
||
# mode: tcl
|
||
# End:
|