# 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. # # RCS: @(#) $Id: textMark.test,v 1.5 2002/07/13 20:28:35 dgp Exp $ package require tcltest 2.1 namespace import -force tcltest::configure namespace import -force tcltest::testsDirectory configure -testdir [file join [pwd] [file dirname [info script]]] configure -loadfile [file join [testsDirectory] constraints.tcl] tcltest::loadTestedCommands catch {destroy .t} testConstraint courier12 [expr {[catch { text .t -font {Courier 12} -width 20 -height 10 }] == 0}] pack append . .t {top expand fill} update .t debug on wm geometry . {} # 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 . entry .t.e .t insert 1.0 "Line 1 abcdefghijklm 12345 Line 4 bOy GIrl .#@? x_yz !@#$% Line 7" test textMark-1.1 {TkTextMarkCmd - missing option} courier12 { list [catch {.t mark} msg] $msg } {1 {wrong # args: should be ".t mark option ?arg arg ...?"}} test textMark-1.2 {TkTextMarkCmd - bogus option} courier12 { list [catch {.t mark gorp} msg] $msg } {1 {bad mark option "gorp": must be gravity, names, next, previous, set, or unset}} test textMark-1.3 {TkTextMarkCmd - "gravity" option} courier12 { list [catch {.t mark gravity foo} msg] $msg } {1 {there is no mark named "foo"}} test textMark-1.4 {TkTextMarkCmd - "gravity" option} courier12 { .t mark unset x .t mark set x 1.3 .t insert 1.3 x list [.t mark gravity x] [.t index x] } {right 1.4} test textMark-1.5 {TkTextMarkCmd - "gravity" option} courier12 { .t mark unset x .t mark set x 1.3 .t mark g x left .t insert 1.3 x list [.t mark gravity x] [.t index x] } {left 1.3} test textMark-1.6 {TkTextMarkCmd - "gravity" option} courier12 { .t mark unset x .t mark set x 1.3 .t mark gravity x right .t insert 1.3 x list [.t mark gravity x] [.t index x] } {right 1.4} test textMark-1.7 {TkTextMarkCmd - "gravity" option} courier12 { list [catch {.t mark gravity x gorp} msg] $msg } {1 {bad mark gravity "gorp": must be left or right}} test textMark-1.8 {TkTextMarkCmd - "gravity" option} courier12 { list [catch {.t mark gravity} msg] $msg } {1 {wrong # args: should be ".t mark gravity markName ?gravity?"}} test textMark-2.1 {TkTextMarkCmd - "names" option} courier12 { list [catch {.t mark names 2} msg] $msg } {1 {wrong # args: should be ".t mark names"}} .t mark unset x test textMark-2.2 {TkTextMarkCmd - "names" option} courier12 { lsort [.t mark n] } {current insert} test textMark-2.3 {TkTextMarkCmd - "names" option} courier12 { .t mark set a 1.1 .t mark set "b c" 2.3 lsort [.t mark names] } {a {b c} current insert} test textMark-3.1 {TkTextMarkCmd - "set" option} courier12 { list [catch {.t mark set a} msg] $msg } {1 {wrong # args: should be ".t mark set markName index"}} test textMark-3.2 {TkTextMarkCmd - "set" option} courier12 { list [catch {.t mark s a b c} msg] $msg } {1 {wrong # args: should be ".t mark set markName index"}} test textMark-3.3 {TkTextMarkCmd - "set" option} courier12 { list [catch {.t mark set a @x} msg] $msg } {1 {bad text index "@x"}} test textMark-3.4 {TkTextMarkCmd - "set" option} courier12 { .t mark set a 1.2 .t index a } 1.2 test textMark-3.5 {TkTextMarkCmd - "set" option} courier12 { .t mark set a end .t index a } {8.0} test textMark-4.1 {TkTextMarkCmd - "unset" option} courier12 { list [catch {.t mark unset} msg] $msg } {0 {}} test textMark-4.2 {TkTextMarkCmd - "unset" option} courier12 { .t mark set a 1.2 .t mark set b 2.3 .t mark unset a b list [catch {.t index a} msg] $msg [catch {.t index b} msg2] $msg2 } {1 {bad text index "a"} 1 {bad text index "b"}} test textMark-4.3 {TkTextMarkCmd - "unset" option} courier12 { .t mark set a 1.2 .t mark set b 2.3 .t mark set 49ers 3.1 eval .t mark unset [.t mark names] lsort [.t mark names] } {current insert} test textMark-5.1 {TkTextMarkCmd - miscellaneous} courier12 { list [catch {.t mark} msg] $msg } {1 {wrong # args: should be ".t mark option ?arg arg ...?"}} test textMark-5.2 {TkTextMarkCmd - miscellaneous} courier12 { list [catch {.t mark foo} msg] $msg } {1 {bad mark option "foo": must be gravity, names, next, previous, set, or unset}} test textMark-6.1 {TkTextMarkSegToIndex} courier12 { .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] } {1.2 1.2 1.2 1.4} catch {eval {.t mark unset} [.t mark names]} test textMark-7.1 {MarkFindNext - invalid mark name} courier12 { catch {.t mark next bogus} x set x } {bad text index "bogus"} test textMark-7.2 {MarkFindNext - marks at same location} courier12 { .t mark set insert 2.0 .t mark set current 2.0 .t mark next current } {insert} test textMark-7.3 {MarkFindNext - numerical starting mark} courier12 { .t mark set current 1.0 .t mark set insert 1.0 .t mark next 1.0 } {insert} test textMark-7.4 {MarkFindNext - mark on the same line} courier12 { .t mark set current 1.0 .t mark set insert 1.1 .t mark next current } {insert} test textMark-7.5 {MarkFindNext - mark on the next line} courier12 { .t mark set current 1.end .t mark set insert 2.0 .t mark next current } {insert} test textMark-7.6 {MarkFindNext - mark far away} courier12 { .t mark set current 1.2 .t mark set insert 7.0 .t mark next current } {insert} test textMark-7.7 {MarkFindNext - mark on top of end} courier12 { .t mark set current end .t mark next end } {current} test textMark-7.8 {MarkFindNext - no next mark} courier12 { .t mark set current 1.0 .t mark set insert 3.0 .t mark next insert } {} test textMark-8.1 {MarkFindPrev - invalid mark name} courier12 { catch {.t mark prev bogus} x set x } {bad text index "bogus"} test textMark-8.2 {MarkFindPrev - marks at same location} courier12 { .t mark set insert 2.0 .t mark set current 2.0 .t mark prev insert } {current} test textMark-8.3 {MarkFindPrev - numerical starting mark} courier12 { .t mark set current 1.0 .t mark set insert 1.0 .t mark prev 1.1 } {current} test textMark-8.4 {MarkFindPrev - mark on the same line} courier12 { .t mark set current 1.0 .t mark set insert 1.1 .t mark prev insert } {current} test textMark-8.5 {MarkFindPrev - mark on the previous line} courier12 { .t mark set current 1.end .t mark set insert 2.0 .t mark prev insert } {current} test textMark-8.6 {MarkFindPrev - mark far away} courier12 { .t mark set current 1.2 .t mark set insert 7.0 .t mark prev insert } {current} test textMark-8.7 {MarkFindPrev - mark on top of end} courier12 { .t mark set insert 3.0 .t mark set current end .t mark prev end } {insert} test textMark-8.8 {MarkFindPrev - no previous mark} courier12 { .t mark set current 1.0 .t mark set insert 3.0 .t mark prev current } {} catch {destroy .t} # cleanup ::tcltest::cleanupTests return