summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorfvogel <fvogelnew1@free.fr>2012-02-28 20:44:34 (GMT)
committerfvogel <fvogelnew1@free.fr>2012-02-28 20:44:34 (GMT)
commit5f980e90395c85af59bb9286b197a620d8ba911f (patch)
treed62de6938569517afd6274d9096c99eadec78078 /tests
parent9893c7fae421e1414f8e19acd5059350093c49c3 (diff)
parent220b6aecbb178564d3ee630cf19c6aa8ae93a67d (diff)
downloadtk-5f980e90395c85af59bb9286b197a620d8ba911f.zip
tk-5f980e90395c85af59bb9286b197a620d8ba911f.tar.gz
tk-5f980e90395c85af59bb9286b197a620d8ba911f.tar.bz2
[Bug-1630262], [Bug-1615425]: segfault when deleting lines or tagging outside of the -startline/-endline range with peer text widgets. [Bug-3487407]: Weird text indices.
Diffstat (limited to 'tests')
-rw-r--r--tests/text.test94
-rw-r--r--tests/textMark.test7
-rw-r--r--tests/textTag.test13
3 files changed, 114 insertions, 0 deletions
diff --git a/tests/text.test b/tests/text.test
index 2225481..f8cb3d7 100644
--- a/tests/text.test
+++ b/tests/text.test
@@ -6650,6 +6650,100 @@ test text-34.1 {peer widget -start, -end and selection} -setup {
destroy .t
} -result {{10.0 20.0} {6.0 16.0} {6.0 11.0} {1.0 6.0} {1.0 2.0} {} {10.0 20.0}}
+test text-32.2 {peer widget -start, -end and deletion (bug 1630262)} -setup {
+ destroy .t .pt
+ set res {}
+} -body {
+ text .t
+ .t peer create .pt
+ for {set i 1} {$i < 100} {incr i} {
+ .t insert end "Line $i\n"
+ }
+ .t configure -startline 5
+ # none of the following delete shall crash
+ # (all did before fixing bug 1630262)
+ # 1. delete on the same line: line1 == line2 in DeleteIndexRange,
+ # and resetView is true neither for .t not for .pt
+ .pt delete 2.0 2.2
+ # 2. delete just one line: line1 < line2 in DeleteIndexRange,
+ # and resetView is true only for .t, not for .pt
+ .pt delete 2.0 3.0
+ # 3. delete several lines: line1 < line2 in DeleteIndexRange,
+ # and resetView is true only for .t, not for .pt
+ .pt delete 2.0 5.0
+ # 4. delete to the end line: line1 < line2 in DeleteIndexRange,
+ # and resetView is true only for .t, not for .pt
+ .pt delete 2.0 end
+ # this test succeeds provided there is no crash
+ set res 1
+} -cleanup {
+ destroy .pt
+} -result {1}
+
+test text-32.3 {peer widget -start, -end and deletion (bug 1630262)} -setup {
+ destroy .t .pt
+ set res {}
+} -body {
+ text .t
+ .t peer create .pt
+ for {set i 1} {$i < 100} {incr i} {
+ .t insert end "Line $i\n"
+ }
+ .t configure -startline 5
+ .pt configure -startline 3
+ # the following delete shall not crash
+ # (it did before fixing bug 1630262)
+ .pt delete 2.0 3.0
+ # moreover -startline shall be correct
+ # (was wrong before fixing bug 1630262)
+ lappend res [.t cget -start] [.pt cget -start]
+} -cleanup {
+ destroy .pt
+} -result {4 3}
+
+test text-32.4 {peer widget -start, -end and deletion (bug 1630262)} -setup {
+ destroy .t .pt
+ set res {}
+} -body {
+ text .t
+ .t peer create .pt
+ for {set i 1} {$i < 100} {incr i} {
+ .t insert end "Line $i\n"
+ }
+ .t configure -startline 5 -endline 15
+ .pt configure -startline 8 -endline 12
+ # .pt now shows a range entirely inside the range of .pt
+ # from .t, delete lines located after [.pt cget -end]
+ .t delete 9.0 10.0
+ # from .t, delete lines straddling [.pt cget -end]
+ .t delete 6.0 9.0
+ lappend res [.t cget -start] [.t cget -end] [.pt cget -start] [.pt cget -end]
+ .t configure -startline 5 -endline 12
+ .pt configure -startline 8 -endline 12
+ # .pt now shows again a range entirely inside the range of .pt
+ # from .t, delete lines located before [.pt cget -start]
+ .t delete 2.0 3.0
+ # from .t, delete lines straddling [.pt cget -start]
+ .t delete 2.0 5.0
+ lappend res [.t cget -start] [.t cget -end] [.pt cget -start] [.pt cget -end]
+ .t configure -startline 22 -endline 31
+ .pt configure -startline 42 -endline 51
+ # .t now shows a range entirely before the range of .pt
+ # from .t, delete some lines, then do it from .pt
+ .t delete 2.0 3.0
+ .t delete 2.0 5.0
+ .pt delete 2.0 5.0
+ lappend res [.t cget -start] [.t cget -end] [.pt cget -start] [.pt cget -end]
+ .t configure -startline 55 -endline 75
+ .pt configure -startline 60 -endline 70
+ # .pt now shows a range entirely inside the range of .t
+ # from .t, delete a range straddling the entire range of .pt
+ .t delete 3.0 18.0
+ lappend res [.t cget -start] [.t cget -end] [.pt cget -start] [.pt cget -end]
+} -cleanup {
+ destroy .pt .t
+} -result {5 11 8 10 5 8 6 8 22 27 38 44 55 60 57 57}
+
test text-35.1 {widget dump -command alters tags} -setup {
proc Dumpy {key value index} {
#puts "KK: $key, $value"
diff --git a/tests/textMark.test b/tests/textMark.test
index 6e0f8a0..edd0e92 100644
--- a/tests/textMark.test
+++ b/tests/textMark.test
@@ -175,6 +175,13 @@ test textMark-6.4 {TkTextMarkNameToIndex, with mark outside -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-7.1 {MarkFindNext - invalid mark name} -body {
.t mark next bogus
diff --git a/tests/textTag.test b/tests/textTag.test
index 34ce003..fed073a 100644
--- a/tests/textTag.test
+++ b/tests/textTag.test
@@ -404,6 +404,19 @@ test textTag-2.12 {TkTextTagCmd - "add" option} -constraints {
} -cleanup {
.t tag remove sel 1.0 end
} -result {1.1 1.5 2.4 2.5}
+test textTag-2.14 {tag add before -startline - Bug 1615425} haveCourier12 {
+ text .tt
+ for {set i 1} {$i <10} {incr i} {
+ .tt insert end "Line $i\n"
+ }
+ .tt tag configure mytag -font {Courier 12 bold}
+ .tt peer create .ptt
+ .ptt configure -startline 3 -endline 7
+ # the test succeeds if next line does not crash
+ .tt tag add mytag 1.0 1.end
+ destroy .ptt .tt
+ set res 1
+} {1}
test textTag-3.1 {TkTextTagCmd - "bind" option} -constraints {