summaryrefslogtreecommitdiffstats
path: root/tests/textMark.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/textMark.test')
-rw-r--r--tests/textMark.test222
1 files changed, 222 insertions, 0 deletions
diff --git a/tests/textMark.test b/tests/textMark.test
new file mode 100644
index 0000000..39a0961
--- /dev/null
+++ b/tests/textMark.test
@@ -0,0 +1,222 @@
+# 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.
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# SCCS: @(#) textMark.test 1.8 97/10/20 11:13:00
+
+if {[string compare test [info procs test]] == 1} then \
+ {source defs}
+
+catch {destroy .t}
+if [catch {text .t -font {Courier 12} -width 20 -height 10}] {
+ puts "The font needed by these tests isn't available, so I'm"
+ puts "going to skip the tests."
+ return
+}
+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} {
+ list [catch {.t mark} msg] $msg
+} {1 {wrong # args: should be ".t mark option ?arg arg ...?"}}
+test textMark-1.2 {TkTextMarkCmd - bogus option} {
+ 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} {
+ list [catch {.t mark gravity foo} msg] $msg
+} {1 {there is no mark named "foo"}}
+test textMark-1.4 {TkTextMarkCmd - "gravity" option} {
+ .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} {
+ .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} {
+ .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} {
+ 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} {
+ list [catch {.t mark gravity} msg] $msg
+} {1 {wrong # args: should be ".t mark gravity markName ?gravity?"}}
+
+test textMark-2.1 {TkTextMarkCmd - "names" option} {
+ 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} {
+ lsort [.t mark n]
+} {current insert}
+test textMark-2.3 {TkTextMarkCmd - "names" option} {
+ .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} {
+ 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} {
+ 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} {
+ list [catch {.t mark set a @x} msg] $msg
+} {1 {bad text index "@x"}}
+test textMark-3.4 {TkTextMarkCmd - "set" option} {
+ .t mark set a 1.2
+ .t index a
+} 1.2
+test textMark-3.5 {TkTextMarkCmd - "set" option} {
+ .t mark set a end
+ .t index a
+} {8.0}
+
+test textMark-4.1 {TkTextMarkCmd - "unset" option} {
+ list [catch {.t mark unset} msg] $msg
+} {0 {}}
+test textMark-4.2 {TkTextMarkCmd - "unset" option} {
+ .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} {
+ .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} {
+ list [catch {.t mark} msg] $msg
+} {1 {wrong # args: should be ".t mark option ?arg arg ...?"}}
+test textMark-5.2 {TkTextMarkCmd - miscellaneous} {
+ 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} {
+ .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} {
+ catch {.t mark next bogus} x
+ set x
+} {bad text index "bogus"}
+test textMark-7.2 {MarkFindNext - marks at same location} {
+ .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} {
+ .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} {
+ .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} {
+ .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} {
+ .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} {
+ .t mark set current end
+ .t mark next end
+} {current}
+test textMark-7.8 {MarkFindNext - no next mark} {
+ .t mark set current 1.0
+ .t mark set insert 3.0
+ .t mark next insert
+} {}
+test textMark-8.1 {MarkFindPrev - invalid mark name} {
+ catch {.t mark prev bogus} x
+ set x
+} {bad text index "bogus"}
+test textMark-8.2 {MarkFindPrev - marks at same location} {
+ .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} {
+ .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} {
+ .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} {
+ .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} {
+ .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} {
+ .t mark set insert 3.0
+ .t mark set current end
+ .t mark prev end
+} {insert}
+test textMark-8.8 {MarkFindPrev - no previous mark} {
+ .t mark set current 1.0
+ .t mark set insert 3.0
+ .t mark prev current
+} {}
+
+catch {destroy .t}
+concat {}