summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorsimonbachmann <simonbachmann@bluewin.ch>2017-03-23 19:12:40 (GMT)
committersimonbachmann <simonbachmann@bluewin.ch>2017-03-23 19:12:40 (GMT)
commit5234049f9b7cab7c95ba9fc0ddaea86a860cc5ac (patch)
treec64f106f39315963c9d40a6adaf7327b7c310394 /tests
parentba477221d7bc5c8035b9c2ef056f00e2ec72be81 (diff)
downloadtk-5234049f9b7cab7c95ba9fc0ddaea86a860cc5ac.zip
tk-5234049f9b7cab7c95ba9fc0ddaea86a860cc5ac.tar.gz
tk-5234049f9b7cab7c95ba9fc0ddaea86a860cc5ac.tar.bz2
Added -withalpha option to [imageName get].
The list-of-lists-of-pixel-data format now is a registered format as the others. Thanks to this change, [imageName data] now can return data that includes the alpha channel. Changed the position of the '-alpha' and '-boolean' options to [imageName transparency set]. Updated doc Updated test suite
Diffstat (limited to 'tests')
-rw-r--r--tests/imgListFormat.test600
-rw-r--r--tests/imgPhoto.test938
2 files changed, 1106 insertions, 432 deletions
diff --git a/tests/imgListFormat.test b/tests/imgListFormat.test
new file mode 100644
index 0000000..b371421
--- /dev/null
+++ b/tests/imgListFormat.test
@@ -0,0 +1,600 @@
+# This file is a Tcl script to test out the default image data format
+# ("list format") implementend in the file tkImgListFormat.c.
+# It is organized in the standard fashion for Tcl tests.
+#
+# Copyright (c) ???
+# All rights reserved.
+#
+# Author: Simon Bachmann (simonbachmann@bluewin.ch)
+
+package require tcltest 2.2
+namespace import ::tcltest::*
+tcltest::configure {*}$argv
+tcltest::loadTestedCommands
+
+imageInit
+
+# find the teapot.ppm file for use in these tests
+set teapotPhotoFile [file join [file dirname [info script]] teapot.ppm]
+testConstraint hasTeapotPhoto [file exists $teapotPhotoFile]
+# let's see if we have the semi-transparent one as well
+set transpTeapotPhotoFile [file join [file dirname [info script]] teapotTransparent.png]
+testConstraint hasTranspTeapotPhoto [file exists $transpTeapotPhotoFile]
+
+# ---------------------------------------------------------------------
+
+
+test imgListFormat-1.1 {ParseFormatOptions: default values} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{red green} {blue black}}
+ lindex [photo1 data] 1 1
+} -cleanup {
+ imageCleanup
+} -result {#000000}
+test imgListFormat-1.2 {ParseFormatOptions: format name as first arg} -setup {
+ image create photo photo1
+} -body {
+ photo1 put #1256ef -format {default} -to 0 0 10 10
+} -cleanup {
+ imageCleanup
+} -result {}
+test imgListFormat-1.3 {ParseFormatOptions: unknown option} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -format {default -bogus}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {bad format option "-bogus": must be -colorformat}
+test imgListFormat-1.4 {ParseFormatOptions: option not allowed} -setup {
+ image create photo photo1
+} -body {
+ photo1 put yellow -format {default -colorformat rgb}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {bad format option "-colorformat": no options allowed}
+test imgListFormat-1.5 {ParseFormatOptions: bad -colorformat val #1} -setup {
+ image create photo photo1
+} -body {
+ photo1 put yellow
+ photo1 data -format {default -colorformat bogus}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {bad color format "bogus": must be rgb, argb, or list}
+test imgListFormat-1.6 {ParseFormatOptions: bad -colorformat val #2} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -format {default -colorformat tkcolor}
+} -returnCodes error -result \
+ {bad color format "tkcolor": must be rgb, argb, or list}
+test imgListFormat-1.7 {ParseFormatOptions: bad -colorformat #3} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -format {default -colorformat emptystring}
+} -returnCodes error -result \
+ {bad color format "emptystring": must be rgb, argb, or list}
+test imgListFormat-1.8 {ParseFormatOptions: bad -colorformat #4} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -format {default -colorformat rgb-short}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {bad color format "rgb-short": must be rgb, argb, or list}
+test imgListFormat-1.9 {ParseFormatOptions: bad -colorformat #5} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -format {default -colorformat argb-short}
+} -returnCodes error -result \
+ {bad color format "argb-short": must be rgb, argb, or list}
+test imgListFormat-1.10 {valid colorformats} -setup {
+ image create photo photo1
+} -body {
+ photo1 put white#78
+ set result {}
+ lappend result [photo1 data -format {default -colorformat rgb}]
+ lappend result [photo1 data -format {default -colorformat argb}]
+ lappend result [photo1 data -format {default -colorformat list}]
+ set result
+} -cleanup {
+ imageCleanup
+ unset result
+} -result {{{#ffffff}} {{#78ffffff}} {{{255 255 255 120}}}}
+
+# GetBadOptMsg: only use case already tested with imgListFormat-1.4
+
+test imgListFormat-3.1 {StringMatchDef: data is not a list} -body {
+ testphotostringmatch {not a " proper list}
+ # " (this comment is here only for editor highlighting)
+} -returnCodes error -result {unmatched open quote in list}
+# empty data case tested with imgPhoto-4.95 (imgPhoto.test)
+test imgListFormat-3.2 {StringMatchDef: \
+ list element not a proper list} -body {
+ testphotostringmatch {{red white} {not "} {blue green}}
+ # "
+} -returnCodes error -result {unmatched open quote in list}
+test imgListFormat-3.3 {StringMatchDef: \
+ sublists with differen lengths} -body {
+ testphotostringmatch {{#001122 #334455 #667788}
+ {#99AABB #CCDDEE}
+ {#FF0011 #223344 #556677}}
+} -returnCodes error -result \
+ {invalid row # 1: all rows must have the same number of elements}
+test imgListFormat-3.4 {StringMatchDef: base64 data is not parsed as valid \
+} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {
+ iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCA
+ YAAAEFsT2yAAAABGdBTUEAAYagMeiWXwAA
+ ABdJREFUCJkFwQEBAAAAgiD6P9pACRoqDk
+ fUBvt1wUFKAAAAAElFTkSuQmCC
+ } -format default
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {couldn't recognize image data}
+test imgListFormat-3.5 {StringMatchDef: valid data} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{blue green}
+ {yellow magenta}
+ {#000000 #FFFFFFFF}}
+ list [image width photo1] [image height photo1] \
+ [photo1 get 0 2 -withalpha]
+} -cleanup {
+ imageCleanup
+} -result {2 3 {0 0 0 255}}
+
+# ImgStringRead: most of the error cases cannot be tested with current code,
+# as the errors are detected by StringMatchDef
+test imgListFormat-4.1 {StringReadDef: use with -format opt} -setup {
+ image create photo photo1
+} -body {
+ photo1 put white -format "default"
+ photo1 get 0 0
+} -cleanup {
+ imageCleanup
+} -result {255 255 255}
+test imgListFormat-4.2 {StringReadDef: suboptions to format} -setup {
+ image create photo photo1
+} -body {
+ photo1 put white -format {default -bogus}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {bad format option "-bogus": no options allowed}
+test imgListFormat-4.3 {StringReadDef: erroneous non-option argument} -setup {
+ image create photo photo1
+} -body {
+ photo1 put orange -format {default bogus}
+} -returnCodes error -result {bad format option "bogus": no options allowed}
+test imgListFormat-4.4 {StringReadDef: normal use case} -constraints {
+ hasTeapotPhoto
+} -setup {
+ image create photo photo1 -file $teapotPhotoFile
+ image create photo photo2
+} -body {
+ set imgData [photo1 data]
+ photo2 put $imgData
+ string equal [photo1 data] [photo2 data]
+} -cleanup {
+ imageCleanup
+ unset imgData
+} -result {1}
+test imgListFormat-4.5 {StringReadDef: correct compositing rule} -constraints {
+ hasTranspTeapotPhoto
+} -setup {
+ image create photo photo1 -file $transpTeapotPhotoFile
+ image create photo photo2
+} -body {
+ photo2 put #FF0000 -to 0 0 50 50
+ photo2 put [photo1 data -format {default -colorformat argb}] -to 10 10 40 40
+ list [photo2 get 0 0 -withalpha] [photo2 get 20 25 -withalpha] \
+ [photo2 get 49 49 -withalpha]
+} -cleanup {
+ imageCleanup
+} -result {{255 0 0 255} {0 78 185 225} {255 0 0 255}}
+
+test imgListFormat-5.1 {StringWriteDef: format options not a list} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -format {default " bogus}
+ # "
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {unmatched open quote in list}
+test imgListFormat-5.2 {StringWriteDef: invalid format option} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -format {default -bogus}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {bad format option "-bogus": must be -colorformat}
+test imgListFormat-5.3 {StringWriteDef: non-option arg in format} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -format {default -colorformat list bogus}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {bad format option "bogus": must be -colorformat}
+test imgListFormat-5.4 {StringWriteDef: empty image} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -format {default -colorformat argb}
+} -cleanup {
+ imageCleanup
+} -result {}
+test imgListFormat-5.5 {StirngWriteDef: size of data} -setup {
+ image create photo photo1
+} -body {
+ photo1 put blue -to 0 0 35 64
+ set imgData [photo1 data]
+ list [llength [lindex $imgData 0]] [llength $imgData]
+} -cleanup {
+ unset imgData
+ imageCleanup
+} -result {35 64}
+test imgListFormat-5.6 {StringWriteDef: test some pixels #1} -constraints {
+ hasTeapotPhoto
+} -setup {
+ set result {}
+ image create photo photo1 -file $teapotPhotoFile
+} -body {
+ set imgData [photo1 data]
+ # note: with [lindex], the coords are inverted (y x)
+ lappend result [lindex $imgData 0 0]
+ lappend result [lindex $imgData 3 2]
+ lappend result [lindex $imgData 107 53]
+ lappend result [lindex $imgData 203 157]
+ lappend result [lindex $imgData 255 255]
+ set result
+} -cleanup {
+ unset result
+ unset imgData
+ imageCleanup
+} -result {{#135cc0} #135cc0 #a06d52 #e1c8ba #135cc0}
+test imgListFormat-5.7 {StringWriteDef: test some pixels #2} -constraints {
+ hasTeapotPhoto
+} -setup {
+ set result {}
+ image create photo photo1 -file $teapotPhotoFile
+} -body {
+ set imgData [photo1 data -format {default -colorformat argb}]
+ # note: with [lindex], the coords are inverted (y x)
+ lappend result [lindex $imgData 0 0]
+ lappend result [lindex $imgData 3 2]
+ lappend result [lindex $imgData 107 53]
+ lappend result [lindex $imgData 203 157]
+ lappend result [lindex $imgData 255 255]
+ set result
+} -cleanup {
+ unset result
+ unset imgData
+ imageCleanup
+} -result {{#ff135cc0} #ff135cc0 #ffa06d52 #ffe1c8ba #ff135cc0}
+test imgListFormat-5.8 {StringWriteDef: test some pixels #3} -constraints {
+ hasTranspTeapotPhoto
+} -setup {
+ image create photo photo1 -file $transpTeapotPhotoFile
+} -body {
+ set imgData [photo1 data -format {default -colorformat rgb}]
+ set result {}
+ lappend result [lindex $imgData 3 2]
+ lappend result [lindex $imgData 107 53]
+ lappend result [lindex $imgData 203 157]
+ set result
+} -cleanup {
+ unset result
+ unset imgData
+ imageCleanup
+} -result {{#004eb9} #a14100 #ffca9f}
+test imgListFormat-5.9 {StringWriteDef: test some pixels #4} -constraints {
+ hasTranspTeapotPhoto
+} -setup {
+ image create photo photo1 -file $transpTeapotPhotoFile
+} -body {
+ set imgData [photo1 data -format {default -colorformat argb}]
+ set result [lindex $imgData 3 2]
+ lappend result [lindex $imgData 107 53]
+ lappend result [lindex $imgData 203 157]
+ set result
+} -cleanup {
+ unset result
+ unset imgData
+ imageCleanup
+} -result {{#e1004eb9} #aaa14100 #afffca9f}
+test imgListFormat-5.10 {StringWriteDef: test some pixels #5} -constraints {
+ hasTranspTeapotPhoto
+} -setup {
+ image create photo photo1 -file $transpTeapotPhotoFile
+} -body {
+ set imgData [photo1 data -format {default -colorformat list}]
+ set result {}
+ lappend result [lindex $imgData 3 2]
+ lappend result [lindex $imgData 107 53]
+ lappend result [lindex $imgData 203 157]
+ set result
+} -cleanup {
+ unset imgData
+ unset result
+ imageCleanup
+} -result {{0 78 185 225} {161 65 0 170} {255 202 159 175}}
+
+test imgListFormat-6.1 {ParseColor: list format} -setup {
+ image create photo photo1
+} -body {
+ photo1 put [list [list [list 255 255 255]]]
+ photo1 get 0 0 -withalpha
+} -cleanup {
+ imageCleanup
+} -result {255 255 255 255}
+test imgListFormat-6.2 {ParseColor: string format in list rep} -setup {
+ image create photo photo1
+} -body {
+ photo1 put [list [list [list white]]]
+ photo1 get 0 0 -withalpha
+} -cleanup {
+ imageCleanup
+} -result {255 255 255 255}
+test imgListFormat-6.3 {ParseColor: empty string} -setup {
+ image create photo photo1
+ set result {}
+} -body {
+ photo1 put {{"" ""} {"" ""}}
+ lappend result [image width photo1]
+ lappend result [image height photo1]
+ lappend result [photo1 get 1 1 -withalpha]
+ set result
+} -cleanup {
+ unset result
+ imageCleanup
+} -result {2 2 {0 0 0 0}}
+test imgListFormat-6.4 {ImgPhotoParsecolor: empty string, mixed} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{black white} {{} white}}
+ list [photo1 get 0 0 -withalpha] [photo1 get 0 1 -withalpha]
+} -cleanup {
+ imageCleanup
+} -result {{0 0 0 255} {0 0 0 0}}
+test imgListFormat-6.5 {ParseColor: invalid hex digit} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {#ABCD #ABCZ}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {invalid color name "#ABCZ"}
+test imgListFormat-6.6 {ParseColor: valid #ARGB color} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{#0d9bd502 #F7ac}}
+ list [photo1 get 0 0 -withalpha] [photo1 get 1 0 -withalpha]
+} -cleanup {
+ imageCleanup
+} -result {{155 213 2 13} {119 170 204 255}}
+test imgListFormat-6.7 {ParseColor: Tk color, valid suffixes} -setup {
+ image create photo photo1
+ set result {}
+} -body {
+ photo1 put {{blue@0.711 #114433#C} {#8D4#1A magenta}}
+ lappend result [photo1 get 0 0 -withalpha]
+ lappend result [photo1 get 1 0 -withalpha]
+ lappend result [photo1 get 0 1 -withalpha]
+ lappend result [photo1 get 1 1 -withalpha]
+ set result
+} -cleanup {
+ unset result
+ imageCleanup
+} -result {{0 0 255 181} {17 68 51 204} {136 221 68 26} {255 0 255 255}}
+test imgListFormat-6.8 {ParseColor: Tk color with and w/o suffixes} -setup {
+ image create photo photo1
+ set result {}
+} -body {
+ photo1 put {{#52D8a0 #2B5} {#E47@0.01 maroon#4}}
+ lappend result [photo1 get 0 0 -withalpha]
+ lappend result [photo1 get 1 0 -withalpha]
+ lappend result [photo1 get 0 1 -withalpha]
+ lappend result [photo1 get 1 1 -withalpha]
+ set result
+} -cleanup {
+ unset result
+ imageCleanup
+} -result {{82 216 160 255} {34 187 85 255} {238 68 119 3} {128 0 0 68}}
+test imgListFormat-6.9 {ParseColor: @A suffix, not a float} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{blue@0.5 blue@bogus}}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {invalid alpha suffix "@bogus": expected floating-point value}
+test imgListFormat-6.10 {ParseColor: @A, value too low} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {green@.1 green@-0.1}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {invalid alpha suffix "@-0.1": value must be in the range from 0 to 1}
+test imgListFormat-6.11 {ParseColor: @A, value too high} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {#000000@0 #000000@1.0001}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {invalid alpha suffix "@1.0001": value must be in the range from 0 to 1}
+test imgListFormat-6.12 {ParseColor: @A suffix, edge values} -setup {
+ imageCleanup
+ image create photo photo1
+} -body {
+ photo1 put {{yellow@1e-22 yellow@0.12352941 yellow@0.12352942 \
+ yellow@0.9999999}}
+ list [photo1 get 0 0 -withalpha] [photo1 get 1 0 -withalpha] \
+ [photo1 get 2 0 -withalpha] [photo1 get 3 0 -withalpha]
+} -cleanup {
+ imageCleanup
+} -result {{255 255 0 0} {255 255 0 31} {255 255 0 32} {255 255 0 255}}
+test imgListFormat-6.13 {ParseColor: # suffix, no hex digits} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{black#f} {black#}}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {invalid alpha suffix "#"}
+test imgListFormat-6.14 {ParseColor: # suffix, too many digits} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{#ABC#12 #ABC#123}}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {invalid alpha suffix "#123"}
+test imgListFormat-6.15 {ParseColor: invalid digit in #X suffix} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {#000#a #000#g}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {invalid alpha suffix "#g": expected hex digit}
+test imgListFormat-6.16 {ParseColor: invalid digit in #XX suffix} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {green#2 green#2W}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {invalid alpha suffix "#2W": expected hex digit}
+test imgListFormat-6.17 {ParseColor: list format, string rep} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{"111 222 33 44"}}
+ photo1 get 0 0 -withalpha
+} -cleanup {
+ imageCleanup
+} -result {111 222 33 44}
+test imgListFormat-6.18 {ParseColor: invalid color: wrong digit #} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{#000 #00}}
+} -returnCodes error -result {invalid color name "#00"}
+test imgListFormat-6.19 {ParseColor: invalid color: not a hex digit} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {#ABCDEF@.99 #ABCDEG@.99}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {invalid color name "#ABCDEG@.99"}
+test imgListFormat-6.20 {ParseColor: suffix not allowed #1} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {#ABC@.5 #ABCD@0.5}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {invalid color name "#ABCD@0.5"}
+test imgListFormat-6.21 {ParseColor: suffix not allowed #2} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{{100 100 100} {100 100 100#FE}}}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {invalid color name "100 100 100#FE"}
+test imgListFormat-6.22 {ParseColor: suffix not allowed #3} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {#1111 #1111#1}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {invalid color name "#1111#1"}
+test imgListFormat-6.23 {ParseColor: overall test} -setup {
+ image create photo photo1
+ set result {}
+} -body {
+ photo1 put {
+ {snow@0.5 snow#80 snow#8 #fffffafafafa@0.5 #fffffabbfacc#8}
+ {#fffffafffaff#80 #ffffaafaa@.5 #ffffaafaa#8 #ffffaafaa#80 #fee#8}
+ {#fee#80 #fee@0.5 #fffafa@0.5 #fffafa#8 #fffafa#80}
+ {{0xff 250 0xfa 128} {255 250 250} #8fee #80fffafa snow}}
+ for {set y 0} {$y < 4} {incr y} {
+ for {set x 0} {$x < 5} {incr x} {
+ lappend result [photo1 get $x $y -withalpha]
+ }
+ }
+ set result
+} -cleanup {
+ imageCleanup
+ unset result
+} -result \
+{{255 250 250 128} {255 250 250 128} {255 250 250 136} {255 250 250 128}\
+{255 250 250 136} {255 250 250 128} {255 250 250 128} {255 250 250 136}\
+{255 250 250 128} {255 238 238 136} {255 238 238 128} {255 238 238 128}\
+{255 250 250 128} {255 250 250 136} {255 250 250 128} {255 250 250 128}\
+{255 250 250 255} {255 238 238 136} {255 250 250 128} {255 250 250 255}}
+
+# Note: the error messages from ParseColorAsList are currently discarded. All
+# we'll ever get is a "invalid color mame xx" message.
+test imgListFormat-7.1 {ParseColorAsListAsList: invalid list} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{{123 45 67 89} {123 45 " 67}}}
+ #"
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {invalid color name "123 45 " 67"}
+#"
+test imgListFormat-7.2 {ParseColorAsList: too few elements in list} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{{0 255 0 255} {0 255}}}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {invalid color name "0 255"}
+test imgListFormat-7.3 {ParseColorAsList: too many elements in list} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{{0 100 200 255} {0 100 200 255 0}}}
+} -returnCodes error -result {invalid color name "0 100 200 255 0"}
+test imgListFormat-7.4 {ParseColorAsList: not an integer value} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{{9 0xf3 87 65} {43 21 10 1.0}}}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {invalid color name "43 21 10 1.0"}
+test imgListFormat-7.5 {ParseColorAsList: negative value in list} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{{121 121 121} {121 121 -1}}}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {invalid color name "121 121 -1"}
+test imgListFormat-7.6 {ParseColorAsList: value in list too large} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{{0 1 2 3} {254 255 256}}}
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {invalid color name "254 255 256"}
+test imgListFormat-7.7 {ParseColorAsList: valid list form} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{{0x0 0x10 0xfe 0xff} {0 100 254}}
+ {{30 30 30 0} {1 1 254 1}}}
+ list [photo1 get 0 0 -withalpha] [photo1 get 1 0 -withalpha] \
+ [photo1 get 0 1 -withalpha] [photo1 get 1 1 -withalpha]
+} -cleanup {
+ imageCleanup
+} -result {{0 16 254 255} {0 100 254 255} {30 30 30 0} {1 1 254 1}}
+
+
+# ---------------------------------------------------------------------
+
+imageFinish
+
+# cleanup
+cleanupTests
+return
diff --git a/tests/imgPhoto.test b/tests/imgPhoto.test
index 268700a..d1692a8 100644
--- a/tests/imgPhoto.test
+++ b/tests/imgPhoto.test
@@ -10,14 +10,82 @@
#
# Author: Paul Mackerras (paulus@cs.anu.edu.au)
+#
+# This file is somewhat caothic: the order of the tests does not
+# really follow the order of the corresponding functions in
+# tkImgPhoto.c. Probably, because early versions had only a few tests
+# and over time test cases were added in bits and pieces.
+# To be noted, also, that this file is not complete: large portions of
+# code in tkImgPhoto.c have no test coverage.
+#
+# To help keeping the overview, the table below lists where to find
+# tests for each of the functions in tkImgPhoto.c. The function are
+# listed in the order as they appear in the source file.
+#
+
+#
+# Function name Tests for function
+#--------------------------------------------------------------------------
+# PhotoFormatThreadExitProc no tests
+# Tk_Create*PhotoImageFormat no tests
+# ImgPhotoCreate imgPhoto-2.*
+# ImgPhotoCmd imgPhoto-4.*, imgPhoto-17.*
+# GetExtension: no tests
+# ParseSubcommandOptions: imgPhoto-1.*
+# ImgPhotoConfigureMaster: imgPhoto-3.*, imgPhoto-15.*
+# toggleComplexAlphaIfNeeded: no tests
+# ImgPhotoDelete: imgPhoto-8.*
+# ImgPhotoCmdDeleteProc: imgPhoto-9.*
+# ImgPhotoSetSize: no tests
+# MatchFileFormat: imgPhoto-18.*
+# MatchSringFormat: imgPhoto-19.*
+# Tk_FindPhoto: imgPhoto-11.*
+# Tk_PhotoPutBlock: imgPhoto-10.*, imgPhoto-16.*
+# Tk_PhotoPutZoomedBlock: imgPhoto-12.*
+# Tk_DitherPhoto: no tets
+# Tk_PhotoBlank: no tests
+# Tk_PhotoExpand: no tests
+# Tk_PhotoGetSize: no tests
+# Tk_PhotoSetSize: no tests
+# TkGetPhotoValidRegion: no tests
+# ImgGetPhoto: no tests
+# Tk_PhotoGetImage no tests
+# ImgPostscriptPhoto no tests
+# Tk_PhotoPutBlock_NoComposite no tests, probably none needed
+# Tk_PhotoPutZoomedBlock_NoComposite no tests, probably none needed
+# Tk_PhotoExpand_Panic no tests, probably none needed
+# Tk_PhotoPutBlock_Panic no tests, probably none needed
+# Tk_PhotoPutZoomedBlock_Panic no tests, probably none needed
+# Tk_PhotoSetSize_Panic no tests, probably none needed
+#--------------------------------------------------------------------------
+#
+
+#
+# Some tests are not specific to a function in tkImgPhoto.c. They are:
+#
+
+#
+# Test name(s) Description
+#--------------------------------------------------------------------------
+# imgPhoto-5.* Do not really belong to this file. ImgPhotoGet and
+# ImgPhotoFree are defined in tkImgPhInstance.c.
+# imgPhoto-6.* Do not really belong to this file. ImgPhotoDisplay
+# is defined in tkImgPhInstance.c.
+# imgPhoto-7.* Do not really belong to this file. ImgPhotoFree is
+# defined in tkImgPhInstance.c.
+# imgPhoto-13.* Tests for separation in different interpreters
+# imgPhoto-14.* Test GIF format. Would belong to imgGIF.test
+# - which does not exist.
+#
+
package require tcltest 2.2
namespace import ::tcltest::*
tcltest::configure {*}$argv
tcltest::loadTestedCommands
-
-# Used for 4.65 - 4.73 tests
-# Now for some heftier testing, checking that setting and resetting of pixels'
-# transparency status doesn't "leak" with any one-off errors.
+
+#
+# Used for imgPhoto-4.65 - imgPhoto-4.73
+#
proc foreachPixel {img xVar yVar script} {
upvar 1 $xVar x $yVar y
set width [image width $img]
@@ -61,7 +129,7 @@ testConstraint hasTeapotPhoto [file exists $teapotPhotoFile]
# let's see if we have the semi-transparent one as well
set transpTeapotPhotoFile [file join [file dirname [info script]] teapotTransparent.png]
testConstraint hasTranspTeapotPhoto [file exists $transpTeapotPhotoFile]
-
+
# ----------------------------------------------------------------------
test imgPhoto-1.1 {options for photo images} -body {
@@ -112,7 +180,31 @@ test imgPhoto-1.10 {options for photo images - error case} -body {
test imgPhoto-1.11 {options for photo images - error case} -body {
image create photo photo1 -format
} -returnCodes error -result {value for "-format" missing}
-
+test imgPhoto-1.12 {option -alpha, normal use} -setup {
+ image create photo photo1
+} -body {
+ photo1 put "white" -to 0 0
+ photo1 transparency get 0 0 -alpha
+} -cleanup {
+ imageCleanup
+} -result {255}
+test imgPhoto-1.13 {option -boolean, normal use} -setup {
+ image create photo photo1
+} -body {
+ photo1 put "green" -to 0 0
+ photo1 transparency set 0 0 1 -boolean
+} -cleanup {
+ imageCleanup
+} -result {}
+test imgPhoto-1.14 {option -withalpha, normal use} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{blue green}}
+ photo1 get 1 0 -withalpha
+} -cleanup {
+ imageCleanup
+} -result {0 128 0 255}
+
test imgPhoto-2.1 {ImgPhotoCreate procedure} -setup {
imageCleanup
} -body {
@@ -135,7 +227,7 @@ test imgPhoto-2.2 {ImgPhotoCreate procedure} -setup {
# photo1 copy photo2
# set msg
# } {couldn't open "bogus.img": no such file or directory}
-
+
test imgPhoto-3.1 {ImgPhotoConfigureMaster procedure} -constraints {
hasTeapotPhoto
} -body {
@@ -171,7 +263,40 @@ test imgPhoto-3.3 {ImgPhotoConfigureMaster procedure} -constraints {
destroy .c
image delete photo1
} -result {256 256 {10 10 266 266} {300 10 556 266}}
-
+test imgPhoto-3.4 {ImgPhotoConfigureMaster: -data <ppm>} -constraints {
+ hasTeapotPhoto
+} -setup {
+ image create photo photo1 -file $teapotPhotoFile
+ image create photo photo2
+} -body {
+ photo2 configure -data [photo1 data -format ppm -from 100 100 120 120]
+ list [image width photo2] [image height photo2]
+} -cleanup {
+ imageCleanup
+} -result {20 20}
+test imgPhoto-3.5 {ImgPhotoConfigureMaster: -data <png>} -constraints {
+ hasTeapotPhoto
+} -setup {
+ image create photo photo1 -file $teapotPhotoFile
+ image create photo photo2
+} -body {
+ photo2 configure -data [photo1 data -format png -from 120 120 140 140]
+ list [image width photo2] [image height photo2]
+} -cleanup {
+ imageCleanup
+} -result {20 20}
+test imgPhoto-3.6 {ImgPhotoConfigureMaster: -data <default>} -constraints {
+ hasTeapotPhoto
+} -setup {
+ image create photo photo1 -file $teapotPhotoFile
+ image create photo photo2
+} -body {
+ photo2 configure -data [photo1 data -from 80 90 100 110]
+ list [image width photo2] [image height photo2]
+} -cleanup {
+ imageCleanup
+} -result {20 20}
+
test imgPhoto-4.1 {ImgPhotoCmd procedure} -setup {
image create photo photo1
} -body {
@@ -249,7 +374,7 @@ test imgPhoto-4.10 {ImgPhotoCmd procedure: copy option} -constraints {
list [image width photo1] [image height photo1] [photo1 get 100 100]
} -cleanup {
image delete photo1 photo2
-} -result {256 256 {169 117 90 255}}
+} -result {256 256 {169 117 90}}
test imgPhoto-4.11 {ImgPhotoCmd procedure: copy option} -setup {
image create photo photo1
} -body {
@@ -291,7 +416,7 @@ test imgPhoto-4.15 {ImgPhotoCmd procedure: copy option} -constraints {
list [image width photo1] [image height photo1] [photo1 get 20 10]
} -cleanup {
image delete photo1 photo2
-} -result {60 50 {215 154 120 255}}
+} -result {60 50 {215 154 120}}
test imgPhoto-4.16 {ImgPhotoCmd procedure: copy option} -constraints {
hasTeapotPhoto
} -setup {
@@ -302,7 +427,7 @@ test imgPhoto-4.16 {ImgPhotoCmd procedure: copy option} -constraints {
list [image width photo1] [image height photo1] [photo1 get 40 80]
} -cleanup {
image delete photo1 photo2
-} -result {80 100 {19 92 192 255}}
+} -result {80 100 {19 92 192}}
test imgPhoto-4.17 {ImgPhotoCmd procedure: copy option} -constraints {
hasTeapotPhoto
} -setup {
@@ -313,7 +438,7 @@ test imgPhoto-4.17 {ImgPhotoCmd procedure: copy option} -constraints {
list [image width photo1] [image height photo1] [photo1 get 80 60]
} -cleanup {
image delete photo1 photo2
-} -result {100 100 {215 154 120 255}}
+} -result {100 100 {215 154 120}}
test imgPhoto-4.18 {ImgPhotoCmd procedure: copy option} -constraints {
hasTeapotPhoto
} -setup {
@@ -324,7 +449,7 @@ test imgPhoto-4.18 {ImgPhotoCmd procedure: copy option} -constraints {
list [image width photo1] [image height photo1] [photo1 get 100 50]
} -cleanup {
image delete photo1 photo2
-} -result {120 100 {169 99 47 255}}
+} -result {120 100 {169 99 47}}
test imgPhoto-4.19 {ImgPhotoCmd procedure: copy option} -constraints {
hasTeapotPhoto
} -setup {
@@ -335,7 +460,7 @@ test imgPhoto-4.19 {ImgPhotoCmd procedure: copy option} -constraints {
list [image width photo1] [image height photo1] [photo1 get 100 50]
} -cleanup {
image delete photo1 photo2
-} -result {120 100 {169 99 47 255}}
+} -result {120 100 {169 99 47}}
test imgPhoto-4.20 {ImgPhotoCmd procedure: copy option} -constraints {
hasTeapotPhoto
} -setup {
@@ -346,7 +471,7 @@ test imgPhoto-4.20 {ImgPhotoCmd procedure: copy option} -constraints {
list [image width photo1] [image height photo1] [photo1 get 50 30]
} -cleanup {
image delete photo1 photo2
-} -result {90 80 {207 146 112 255}}
+} -result {90 80 {207 146 112}}
test imgPhoto-4.21 {ImgPhotoCmd procedure: copy option} -constraints {
hasTeapotPhoto
} -setup {
@@ -370,16 +495,19 @@ test imgPhoto-4.21 {ImgPhotoCmd procedure: copy option} -constraints {
} -cleanup {
image delete photo1 photo2
} -result {256 256 49 51 49 51 49 51 10 51 10 10}
+# tests for <imageName> data: imgPhoto-4.
test imgPhoto-4.22 {ImgPhotoCmd procedure: get option} -constraints {
hasTranspTeapotPhoto
} -setup {
image create photo photo1
} -body {
photo1 read $transpTeapotPhotoFile
- list [photo1 get 100 100] [photo1 get 150 100] [photo1 get 100 150]
+ list [photo1 get 100 100 -withalpha] \
+ [photo1 get 150 100 -withalpha] \
+ [photo1 get 100 150] [photo1 get 150 150]
} -cleanup {
image delete photo1
-} -result {{175 71 0 162} {179 73 0 168} {14 8 0 219}}
+} -result {{175 71 0 162} {179 73 0 168} {14 8 0} {0 0 0}}
test imgPhoto-4.23 {ImgPhotoCmd procedure: get option} -setup {
image create photo photo1
} -body {
@@ -397,10 +525,12 @@ test imgPhoto-4.24 {ImgPhotoCmd procedure: get option} -setup {
test imgPhoto-4.25 {ImgPhotoCmd procedure: get option} -setup {
image create photo photo1
} -body {
- photo1 get
+ photo1 get 0
} -cleanup {
image delete photo1
-} -returnCodes error -result {wrong # args: should be "photo1 get x y"}
+} -returnCodes error -result \
+ {wrong # args: should be "photo1 get x y ?-withalpha?"}
+# more test for image get: 4.101-4.102
test imgPhoto-4.26 {ImgPhotoCmd procedure: put option} -setup {
image create photo photo1
} -body {
@@ -414,27 +544,28 @@ test imgPhoto-4.27 {ImgPhotoCmd procedure: put option} -setup {
photo1 put {{white} {white white}}
} -returnCodes error -cleanup {
image delete photo1
-} -result {invalid row # 1: all rows must have the same number of elements}
+} -result {couldn't recognize image data}
test imgPhoto-4.28 {ImgPhotoCmd procedure: put option} -setup {
image create photo photo1
} -body {
photo1 put {{blahgle}}
} -cleanup {
image delete photo1
-} -returnCodes error -result {can't parse color "blahgle"}
+} -returnCodes error -result {couldn't recognize image data}
test imgPhoto-4.29 {ImgPhotoCmd procedure: put option} -setup {
image create photo photo1
} -body {
# SB: odd thing - this test passed with tk 8.6.6, even if the data
- # is in the wrong position!
+ # is in the wrong position:
#photo1 put -to 10 10 20 20 {{white}}
+
# this is how it's supposed to be:
photo1 put {{white}} -to 10 10 20 20
photo1 get 19 19
} -cleanup {
image delete photo1
-} -result {255 255 255 255}
-# more tests for image put: 4.90-4.94
+} -result {255 255 255}
+# more tests for image put: 4.90-4.100
test imgPhoto-4.30 {ImgPhotoCmd procedure: read option} -setup {
image create photo photo1
} -body {
@@ -483,7 +614,7 @@ test imgPhoto-4.35 {ImgPhotoCmd procedure: read option} -constraints {
list [image width photo1] [image height photo1] [photo1 get 120 120]
} -cleanup {
image delete photo1
-} -result {256 256 {161 109 82 255}}
+} -result {256 256 {161 109 82}}
test imgPhoto-4.36 {ImgPhotoCmd procedure: read option} -constraints {
hasTeapotPhoto
} -setup {
@@ -493,7 +624,7 @@ test imgPhoto-4.36 {ImgPhotoCmd procedure: read option} -constraints {
list [image width photo1] [image height photo1] [photo1 get 29 19]
} -cleanup {
image delete photo1
-} -result {70 60 {244 180 144 255}}
+} -result {70 60 {244 180 144}}
test imgPhoto-4.37 {ImgPhotoCmd procedure: redither option} -setup {
image create photo photo1
} -body {
@@ -516,6 +647,7 @@ test imgPhoto-4.39 {ImgPhotoCmd procedure: write option} -setup {
} -cleanup {
image delete photo1
} -returnCodes error -result {image file format "bogus" is unknown}
+# more tests on "imageName write": imgPhoto-17.*
test imgPhoto-4.40 {ImgPhotoCmd procedure: transparency option} -setup {
image create photo photo1
} -body {
@@ -540,7 +672,7 @@ test imgPhoto-4.42 {ImgPhotoCmd procedure: transparency get option} -setup {
test imgPhoto-4.43 {ImgPhotoCmd procedure: transparency get option} -setup {
image create photo photo1
} -body {
- photo1 transparency get 0 0 -boolean 0
+ photo1 transparency get 0 0 0 -boolean
} -returnCodes error -cleanup {
image delete photo1
} -result {wrong # args: should be "photo1 transparency get x y ?-option?"}
@@ -603,35 +735,39 @@ test imgPhoto-4.51 {ImgPhotoCmd procedure: transparency get option} -setup {
} -cleanup {
image delete photo1
} -result 1
-# more tests for transparency get: 4.65, 4.66, 4.75-4.80
+# more tests for transparency get: 4.65, 4.66, 4.76-4.81
test imgPhoto-4.52 {ImgPhotoCmd procedure: transparency set option} -setup {
image create photo photo1
} -body {
photo1 transparency set
} -returnCodes error -cleanup {
image delete photo1
-} -result {wrong # args: should be "photo1 transparency set x y ?-option? newVal"}
+} -result \
+ {wrong # args: should be "photo1 transparency set x y newVal ?-option?"}
test imgPhoto-4.53 {ImgPhotoCmd procedure: transparency set option} -setup {
image create photo photo1
} -body {
photo1 transparency set 0
} -returnCodes error -cleanup {
image delete photo1
-} -result {wrong # args: should be "photo1 transparency set x y ?-option? newVal"}
+} -result \
+ {wrong # args: should be "photo1 transparency set x y newVal ?-option?"}
test imgPhoto-4.54 {ImgPhotoCmd procedure: transparency set option} -setup {
image create photo photo1
} -body {
photo1 transparency set 0 0
} -returnCodes error -cleanup {
image delete photo1
-} -result {wrong # args: should be "photo1 transparency set x y ?-option? newVal"}
+} -result \
+ {wrong # args: should be "photo1 transparency set x y newVal ?-option?"}
test imgPhoto-4.55 {ImgPhotoCmd procedure: transparency set option} -setup {
image create photo photo1
} -body {
- photo1 transparency set 0 0 -boolean 0 0
+ photo1 transparency set 0 0 0 0 -boolean
} -returnCodes error -cleanup {
image delete photo1
-} -result {wrong # args: should be "photo1 transparency set x y ?-option? newVal"}
+} -result \
+ {wrong # args: should be "photo1 transparency set x y newVal ?-option?"}
test imgPhoto-4.56 {ImgPhotoCmd procedure: transparency set option} -setup {
image create photo photo1
} -body {
@@ -648,6 +784,7 @@ test imgPhoto-4.57 {ImgPhotoCmd procedure: transparency set option} -setup {
} -returnCodes error -result {expected integer but got "bogus"}
test imgPhoto-4.58 {ImgPhotoCmd procedure: transparency set option} -setup {
image create photo photo1
+ photo1 put blue
} -body {
photo1 transparency set 0 0 bogus
} -cleanup {
@@ -699,7 +836,7 @@ test imgPhoto-4.64 {ImgPhotoCmd procedure: transparency set option} -setup {
} -cleanup {
image delete photo1
} -result 1
-# more tests for transparency set: 4.67, 4.68, 4.81-4.88
+# more tests for transparency set: 4.67, 4.68, 4.82-4.89
# Now for some heftier testing, checking that setting and resetting of pixels'
# transparency status doesn't "leak" with any one-off errors.
test imgPhoto-4.65 {ImgPhotoCmd procedure: transparency get option} -setup {
@@ -824,9 +961,7 @@ test imgPhoto-4.75 {<photo> read command: filename starting with '-'} -constrain
image delete photo1
file delete ./-teapotPhotoFile
} -result {}
-
-test imgPhoto-4.75 {ImgPhotoCmd procedure: transparancy get} -setup {
- imageCleanup
+test imgPhoto-4.76 {ImgPhotoCmd, transparancy get: too many options} -setup {
image create photo photo1
} -body {
photo1 put white -to 0 0 1 1
@@ -835,8 +970,7 @@ test imgPhoto-4.75 {ImgPhotoCmd procedure: transparancy get} -setup {
imageCleanup
} -returnCodes error -result \
{wrong # args: should be "photo1 transparency get x y ?-option?"}
-test imgPhoto-4.76 {ImgPhotoCmd procedure: transparency get} -setup {
- imageCleanup
+test imgPhoto-4.77 {ImgPhotoCmd, transparency get: invalid option} -setup {
image create photo photo1
} -body {
photo1 put white -to 0 0 1 1
@@ -844,9 +978,8 @@ test imgPhoto-4.76 {ImgPhotoCmd procedure: transparency get} -setup {
} -cleanup {
imageCleanup
} -returnCodes error -result \
- {unknown option "-bogus": must be -alpha or -boolean}
-test imgPhoto-4.77 {ImgPhotoCmd procedure: transparency get} -setup {
- imageCleanup
+ {unrecognized option "-bogus": must be -alpha, or -boolean}
+test imgPhoto-4.78 {ImgPhotoCmd, transparency get: normal use} -setup {
image create photo photo1
} -body {
photo1 put white -to 0 0 1 1
@@ -855,7 +988,7 @@ test imgPhoto-4.77 {ImgPhotoCmd procedure: transparency get} -setup {
} -cleanup {
imageCleanup
} -result {0 255}
-test imgPhoto-4.78 {ImgPhotoCmd procedure: transparency get} -constraints {
+test imgPhoto-4.79 {ImgPhotoCmd, transparency get: no option} -constraints {
hasTranspTeapotPhoto
} -setup {
image create photo photo1 -file $transpTeapotPhotoFile
@@ -869,7 +1002,8 @@ test imgPhoto-4.78 {ImgPhotoCmd procedure: transparency get} -constraints {
} -cleanup {
imageCleanup
} -result {0 1 0 0 0}
-test imgPhoto-4.79 {ImgPhotoCmd procedure: transparency get} -constraints {
+test imgPhoto-4.80 {ImgPhotoCmd, transparency get: -boolean option\
+} -constraints {
hasTranspTeapotPhoto
} -setup {
image create photo photo1 -file $transpTeapotPhotoFile
@@ -883,7 +1017,7 @@ test imgPhoto-4.79 {ImgPhotoCmd procedure: transparency get} -constraints {
} -cleanup {
imageCleanup
} -result {0 1 0 0 0}
-test imgPhoto-4.80 {ImgPhotoCmd procedure: transparency get} -constraints {
+test imgPhoto-4.81 {ImgPhotoCmd, transparency get: -alpha} -constraints {
hasTranspTeapotPhoto
} -setup {
image create photo photo1 -file $transpTeapotPhotoFile
@@ -897,135 +1031,170 @@ test imgPhoto-4.80 {ImgPhotoCmd procedure: transparency get} -constraints {
} -cleanup {
imageCleanup
} -result {255 0 1 254 206}
-test imgPhoto-4.81 {ImgPhotoCmd procedure: transparency set} -setup {
+test imgPhoto-4.82 {ImgPhotoCmd, transparency set: too many opts} -setup {
image create photo photo1
} -body {
photo1 transparency set 0 0 -alpha -boolean 1
} -cleanup {
imageCleanup
} -returnCodes error -result \
- {wrong # args: should be "photo1 transparency set x y ?-option? newVal"}
-test imgPhoto-4.82 {ImgPhotoCmd procedure: transparency set} -setup {
- image create photo photo1
+ {wrong # args: should be "photo1 transparency set x y newVal ?-option?"}
+test imgPhoto-4.83 {ImgPhotoCmd, transparency set: invalid opt} -setup {
+ image create photo photo1 -data black
} -body {
- photo1 transparency set 0 0 -bogus 0
+ photo1 transparency set 0 0 0 -bogus
} -cleanup {
imageCleanup
-} -returnCodes error -result {unknown option "-bogus": must be -alpha or -boolean}
-test imgPhoto-4.83 {ImgPhotoCmd procedure: transparency set} -setup {
- image create photo photo1
+} -returnCodes error -result \
+ {unrecognized option "-bogus": must be -alpha, or -boolean}
+test imgPhoto-4.84 {ImgPhotoCmd, transparency set: invalid newVal} -setup {
+ image create photo photo1 -data white
} -body {
- photo1 transparency set 0 0 -alpha bogus
+ photo1 transparency set 0 0 bogus -alpha
} -cleanup {
imageCleanup
} -returnCodes error -result {expected integer but got "bogus"}
-test imgPhoto-4.84 {ImgPhotoCmd procedure: transparency set} -setup {
- image create photo photo1
+test imgPhoto-4.85 {ImgPhotoCmd, transparency set: invalid newVal} -setup {
+ image create photo photo1 -data red
} -body {
- photo1 transparency set 0 0 -alpha -1
+ photo1 transparency set 0 0 -1 -alpha
} -returnCodes error -result \
{invalid alpha value "-1": must be integer between 0 and 255}
-test imgPhoto-4.85 {ImgPhotoCmd procedure: transparency set} -setup {
- image create photo photo1
+test imgPhoto-4.86 {ImgPhotoCmd, transparency set: invalid newVal} -setup {
+ image create photo photo1 -data green
} -body {
- photo1 transparency set 0 0 -alpha 256
+ photo1 transparency set 0 0 256 -alpha
} -cleanup {
imageCleanup
} -returnCodes error -result \
{invalid alpha value "256": must be integer between 0 and 255}
-test imgPhoto-4.86 {ImgPhotoCmd procedure: transparency set} -setup {
+test imgPhoto-4.87 {ImgPhotoCmd, transparency set: no opt} -setup {
image create photo photo1
} -body {
photo1 put white -to 0 0 2 1
photo1 transparency set 0 0 0
photo1 transparency set 1 0 1
- list [photo1 transparency get 0 0 -alpha] [photo1 transparency get 1 0 -alpha]
+ list [photo1 transparency get 0 0 -alpha] \
+ [photo1 transparency get 1 0 -alpha]
} -cleanup {
imageCleanup
} -result {255 0}
-test imgPhoto-4.87 {ImgPhotoCmd procedure: transparency set} -setup {
+test imgPhoto-4.88 {ImgPhotoCmd, transparency set: -boolean} -setup {
image create photo photo1
} -body {
photo1 put white -to 0 0 2 1
- photo1 transparency set 0 0 -boolean 0
- photo1 transparency set 1 0 -boolean 1
- list [photo1 transparency get 0 0 -alpha] [photo1 transparency get 1 0 -alpha]
+ photo1 transparency set 0 0 0 -boolean
+ photo1 transparency set 1 0 1 -boolean
+ list [photo1 transparency get 0 0 -alpha] \
+ [photo1 transparency get 1 0 -alpha]
} -cleanup {
imageCleanup
} -result {255 0}
-test imgPhoto-4.88 {ImgPhotoCmd procedure: transparency set} -setup {
+test imgPhoto-4.89 {ImgPhotoCmd, transparency set: -alpha} -setup {
image create photo photo1
} -body {
photo1 put white -to 0 0 2 2
- photo1 transparency set 0 0 -alpha 0
- photo1 transparency set 1 0 -alpha 1
- photo1 transparency set 0 1 -alpha 254
- photo1 transparency set 1 1 -alpha 255
+ photo1 transparency set 0 0 0 -alpha
+ photo1 transparency set 1 0 1 -alpha
+ photo1 transparency set 0 1 254 -alpha
+ photo1 transparency set 1 1 255 -alpha
list [photo1 transparency get 0 0] [photo1 transparency get 1 0] \
[photo1 transparency get 0 1] [photo1 transparency get 1 1]
} -cleanup {
imageCleanup
} -result {1 0 0 0}
-test imgPhoto-4.89 {ImgPhotoCmd procdeure: put option} -constraints {
+test imgPhoto-4.90 {ImgPhotoCmd put: existing but not allowed opt} -setup {
+ image create photo photo1
+} -body {
+ photo1 put yellow -from 0 0 1 1
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {unrecognized option "-from": must be -format, or -to}
+test imgPhoto-4.91 {ImgPhotoCmd put: invalid option} -setup {
+ image create photo photo1
+} -body {
+ photo1 put {{0 1 2 3}} -bogus x
+} -returnCodes error -result \
+ {unrecognized option "-bogus": must be -format, or -to}
+test imgPhoto-4.92 {ImgPhotocmd put: missing data} -setup {
+ image create photo photo1
+} -body {
+ photo1 put -to 0 0
+} -returnCodes error -result \
+ {wrong # args: should be "photo1 put data ?-option value ...?"}
+test imgPhoto-4.93 {ImgPhotoCmd put: data in ppm format} -constraints {
hasTeapotPhoto
} -setup {
image create photo photo1 -file $teapotPhotoFile
image create photo photo2
} -body {
- # put data in a registered format
set imgdata [photo1 data -format ppm]
photo2 put $imgdata -format ppm
set result {}
if {[image width photo1] != [image width photo2] \
- || [image height photo1] != [image height photo2]} {
- lappend result [list [image width photo2] [image height photo2]]
+ || [image height photo1] != [image height photo2]} {
+ lappend result [list [image width photo2] [image height photo2]]
} else {
- lappend result 1
+ lappend result 1
}
foreach point {{206 125} {67 12} {13 46} {19 184}} {
- if {[photo1 get {*}$point] ne [photo2 get {*}$point]} {
- lappend result [photo2 get {*}$point]
- } else {
- lappend result 1
- }
+ if {[photo1 get {*}$point] ne [photo2 get {*}$point]} {
+ lappend result [photo2 get {*}$point]
+ } else {
+ lappend result 1
+ }
}
set result
} -cleanup {
imageCleanup
} -result {1 1 1 1 1}
-test imgPhoto-4.90 {ImgPhotoCmd procedure: put option} -setup {
- imageCleanup
+test imgPhoto-4.94 {ImgPhotoCmd put: unknown format} -setup {
image create photo photo1
} -body {
- # unknown format
photo1 put {no real data} -format bogus
} -cleanup {
imageCleanup
} -returnCodes error -result {image format "bogus" is not supported}
-test imgPhoto-4.91 {ImgPhotoCmd procedure: put option} -setup {
- imageCleanup
+test imgPhoto-4.95 {ImgPhotoCmd put: default fmt, invalid data} -setup {
image create photo photo1
} -body {
- # default format, invalid data error case
- photo1 put "not a \{ proper list"
+ photo1 put {{red green blue} {red " blue}}
+ #"
} -cleanup {
imageCleanup
-} -returnCodes error -result {unmatched open brace in list}
-test imgPhoto-4.92 {ImgPhotoCmd procedure: put option} -setup {
+} -returnCodes error -result {couldn't recognize image data}
+test imgPhoto-4.96 {ImgPhotoCmd put: "default" handler is selected} -setup {
+ image create photo photo1
+ image create photo photo2
+ set imgData {{{1 2 3 4} {5 6 7 8} {9 10 11 12}}
+ {{13 14 15 15} {17 18 19 20} {21 22 23 24}}}
+} -body {
+ photo1 put $imgData
+ photo2 put $imgData -format default
+ set result {}
+ lappend result [list [image width photo1] [image height photo1]]
+ lappend result [list [image width photo2] [image height photo2]]
+ lappend result [string equal \
+ [photo1 data -format "default -colorformat argb"] \
+ [photo2 data -format "default -colorformat argb"]]
+ set result
+} -cleanup {
imageCleanup
+ unset result
+ unset imgData
+} -result {{3 2} {3 2} 1}
+test imgPhoto-4.97 {ImgPhotoCmd put: image size} -setup {
image create photo photo1
} -body {
- # no -to option, image size is data size
photo1 put {{red green blue} {blue red green}}
list [image width photo1] [image height photo1]
} -cleanup {
imageCleanup
} -result {3 2}
-test imgPhoto-4.93 {ImgPhotoCmd procedure: put option} -setup {
- imageCleanup
+test imgPhoto-4.98 {ImgPhotoCmd put: -to with 2 coords} -setup {
image create photo photo1
} -body {
- # two coordinates for -to option
photo1 put {{"alice blue" "blanched almond"}
{"deep sky blue" "ghost white"}
{#AABBCC #AABBCCDD}} -to 5 6
@@ -1033,14 +1202,12 @@ test imgPhoto-4.93 {ImgPhotoCmd procedure: put option} -setup {
} -cleanup {
imageCleanup
} -result {7 9}
-test imgPhoto-4.94 {ImgPhotoCmd procedure: put option} -setup {
- imageCleanup
+test imgPhoto-4.99 {ImgPhotoCmd put: -to with 4 coords} -setup {
image create photo photo1
} -body {
- # 4 coordinates for -to option, data gets tiled
photo1 put {{#123 #456 #678} {#9AB #CDE #F01}} -to 1 2 20 21
set result {}
- lappend result [photo1 get 19 20]
+ lappend result [photo1 get 19 20 -withalpha]
lappend result [string equal \
[photo1 data -from 1 2 4 4] [photo1 data -from 4 2 7 4]]
lappend result [string equal \
@@ -1049,11 +1216,9 @@ test imgPhoto-4.94 {ImgPhotoCmd procedure: put option} -setup {
} -cleanup {
imageCleanup
} -result {{17 34 51 255} 1 1}
-test imgPhoto-4.95 {ImgPhotoCmd procedure: put option} -setup {
- imageCleanup
+test imgPhoto-4.100 {ImgPhotoCmd put: no changes on empty data} -setup {
image create photo photo1
} -body {
- # empty data does not cause changes
photo1 put {{brown blue} {cyan coral}}
set imgData [photo1 data]
photo1 put {}
@@ -1061,7 +1226,170 @@ test imgPhoto-4.95 {ImgPhotoCmd procedure: put option} -setup {
} -cleanup {
imageCleanup
} -result {1}
-
+test imgPhoto-4.101 {ImgPhotoCmd get: too many args} -setup {
+ image create photo photo1
+} -body {
+ photo1 get 0 0 -withalpha bogus
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {wrong # args: should be "photo1 get x y ?-withalpha?"}
+test imgPhoto-4.102 {ImgPhotoCmd get: invalid option} -setup {
+ image create photo photo1
+} -body {
+ photo1 get 0 0 -bogus
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {unrecognized option "-bogus": must be -withalpha}
+test imgPhoto-4.103 {ImgPhotoCmd data: accepted opts} -setup {
+ image create photo photo1 -data black
+} -body {
+ photo1 data -format default -from 0 0 -grayscale -background blue
+} -cleanup {
+ imageCleanup
+} -result {{#000000}}
+test imgPhoto-4.104 {ImgPhotoCmd data: existing but not accepted opt} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -to
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+{unrecognized option "-to": must be -background, -format, -from, or -grayscale}
+test imgPhoto-4.105 {ImgPhotoCmd data: invalid option} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -bogus
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+{unrecognized option "-bogus": must be -background, -format, -from, or -grayscale}
+test imgPhoto-4.106 {ImgPhotoCmd data: extra arg before options} -setup {
+ image create photo photo1
+} -body {
+ photo1 data bogus -grayscale
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {wrong # args: should be "photo1 data ?-option value ...?"}
+test imgPhoto-4.107 {ImgPhotoCmd data: extra arg after options} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -format default bogus
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {wrong # args: should be "photo1 data ?-option value ...?"}
+test imgPhoto-4.108 {ImgPhotoCmd data: invalid -from coords #1} -setup {
+ image create photo photo1 -data blue
+} -body {
+ photo1 data -from 2 0
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {coordinates for -from option extend outside image}
+test imgPhoto-4.109 {ImgPhotoCmd data: invalid -from coords #2} -setup {
+ image create photo photo1 -data blue
+} -body {
+ photo1 data -from 0 2
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {coordinates for -from option extend outside image}
+test imgPhoto-4.110 {ImgPhotoCmd data: invalid -from coords #3} -setup {
+ image create photo photo1 -data blue
+} -body {
+ photo1 data -from 0 0 2 1
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {coordinates for -from option extend outside image}
+test imgPhoto-4.111 {ImgPhotoCmd data: invalid -from coords #4} -setup {
+ image create photo photo1 -data blue
+} -body {
+ photo1 data -from 0 0 1 2
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result \
+ {coordinates for -from option extend outside image}
+test imgPhoto-4.112 {ImgPhotoCmd data: -from with 2 coords} -setup {
+ image create photo photo1 -data {
+ {black black black black black}
+ {white white white white white}
+ {green green green green green}}
+} -body {
+ set imgData [photo1 data -from 2 1]
+ list [llength [lindex $imgData 0]] [llength $imgData]
+} -cleanup {
+ imageCleanup
+ unset imgData
+} -result {3 2}
+test imgPhoto-4.113 {ImgPhotoCmd data: default is rgb format} -setup {
+ image create photo photo1 -data red
+} -body {
+ photo1 data
+} -cleanup {
+ imageCleanup
+} -result {{#ff0000}}
+test imgPhoto-4.114 {ImgPhotoCmd data: unknown format} -setup {
+ image create photo photo1
+} -body {
+ photo1 data -format bogus
+} -cleanup {
+ imageCleanup
+} -returnCodes error -result {image string format "bogus" is unknown}
+test imgPhoto-4.115 {ImgPhotoCmd data: rgb colorformat} -setup {
+ image create photo photo1 -data {{red#a green#b} {blue#c white}}
+} -body {
+ photo1 data -format {default -colorformat rgb}
+} -result {{#ff0000 #008000} {#0000ff #ffffff}}
+test imgPhoto-4.116 {ImgPhotoCmd data: argb colorformat} -setup {
+ image create photo photo1 -data {{red green} {blue white}}
+} -body {
+ photo1 data -format {default -colorformat argb}
+} -result {{#ffff0000 #ff008000} {#ff0000ff #ffffffff}}
+test imgPhoto-4.117 {ImgPhotoCmd data: list colorformat} -setup {
+ image create photo photo1 -data {{red#a green} {blue#c white#d}}
+} -body {
+ photo1 data -format {default -colorformat list}
+} -result {{{255 0 0 170} {0 128 0 255}} {{0 0 255 204} {255 255 255 221}}}
+test imgPhoto-4.118 {ImgPhotoCmd data: using data for new image
+ results in same image as orignial } -constraints {
+ hasTeapotPhoto
+ hasTranspTeapotPhoto
+} -setup {
+ image create photo teapot -file $teapotPhotoFile
+ teapot copy teapot -from 50 60 70 80 -shrink
+ image create photo teapotTransp -file $transpTeapotPhotoFile
+ teapotTransp copy teapotTransp -from 100 110 120 130 -shrink
+ image create photo photo1
+} -body {
+ set result {}
+ # We don't test gif here, as there seems to be a problem with
+ # <imgName> data and gif format ("too many colors", probably a bug)
+ foreach fmt {ppm png {default -colorformat argb} \
+ {default -colorformat list}} {
+ set imgData [teapotTransp data -format $fmt]
+ photo1 blank
+ photo1 put $imgData
+ if { ! [string equal [photo1 data] [teapotTransp data]]} {
+ lappend result $fmt
+ }
+ }
+ set imgData [teapot data -format default]
+ photo1 blank
+ photo1 put $imgData
+ if { ! [string equal [photo1 data] [teapot data]]} {
+ lappend result default
+ }
+ set result
+} -cleanup {
+ unset imgData
+ unset result
+ imageCleanup
+} -result {}
+
test imgPhoto-5.1 {ImgPhotoGet/Free procedures, shared instances} -constraints {
hasTeapotPhoto
} -setup {
@@ -1084,7 +1412,7 @@ test imgPhoto-5.1 {ImgPhotoGet/Free procedures, shared instances} -constraints {
} -cleanup {
destroy .c
} -result {}
-
+
test imgPhoto-6.1 {ImgPhotoDisplay procedure, blank display} -setup {
destroy .c
pack [canvas .c]
@@ -1098,7 +1426,7 @@ test imgPhoto-6.1 {ImgPhotoDisplay procedure, blank display} -setup {
destroy .c
image delete photo1
} -result {}
-
+
test imgPhoto-7.1 {ImgPhotoFree procedure, resource freeing} -constraints {
hasTeapotPhoto
} -setup {
@@ -1159,7 +1487,7 @@ test imgPhoto-7.3 {ImgPhotoFree procedures, multiple visuals} -constraints {
destroy .f
image delete photo1
} -result {}
-
+
test imgPhoto-8.1 {ImgPhotoDelete procedure} -constraints hasTeapotPhoto -body {
image create photo photo2 -file $teapotPhotoFile
image delete photo2
@@ -1183,7 +1511,7 @@ test imgPhoto-8.3 {ImgPhotoDelete procedure, name cleanup} -body {
} -returnCodes error -cleanup {
imageCleanup
} -result {image "photo2" doesn't exist or is not a photo image}
-
+
test imgPhoto-9.1 {ImgPhotoCmdDeletedProc procedure} -constraints {
hasTeapotPhoto
} -body {
@@ -1191,7 +1519,7 @@ test imgPhoto-9.1 {ImgPhotoCmdDeletedProc procedure} -constraints {
rename photo2 {}
list [lsearch -exact [imageNames] photo2] [catch {photo2 foo} msg] $msg
} -result {-1 1 {invalid command name "photo2"}}
-
+
test imgPhoto-10.1 {Tk_ImgPhotoPutBlock procedure} -setup {
imageCleanup
} -body {
@@ -1199,8 +1527,8 @@ test imgPhoto-10.1 {Tk_ImgPhotoPutBlock procedure} -setup {
photo1 put "{#ff0000 #ff0000 #ff0000 #ff0000 #ff0000 #ff0000 #ff0000 #ff0000}" -to 0 0
photo1 put "{#00ff00 #00ff00}" -to 2 0
list [photo1 get 2 0] [photo1 get 3 0] [photo1 get 4 0]
-} -result {{0 255 0 255} {0 255 0 255} {255 0 0 255}}
-
+} -result {{0 255 0} {0 255 0} {255 0 0}}
+
test imgPhoto-11.1 {Tk_FindPhoto} -setup {
imageCleanup
} -body {
@@ -1210,7 +1538,7 @@ test imgPhoto-11.1 {Tk_FindPhoto} -setup {
} -cleanup {
imageCleanup
} -returnCodes error -result {image "i1" doesn't exist or is not a photo image}
-
+
test imgPhoto-12.1 {Tk_PhotoPutZoomedBlock} -constraints hasTeapotPhoto -body {
image create photo p3 -file $teapotPhotoFile
set result [list [p3 get 50 50] [p3 get 100 100]]
@@ -1218,8 +1546,8 @@ test imgPhoto-12.1 {Tk_PhotoPutZoomedBlock} -constraints hasTeapotPhoto -body {
lappend result [image width p3] [image height p3] [p3 get 100 100]
} -cleanup {
image delete p3
-} -result {{19 92 192 255} {169 117 90 255} 512 512 {19 92 192 255}}
-
+} -result {{19 92 192} {169 117 90} 512 512 {19 92 192}}
+
test imgPhoto-13.1 {check separation of images in different interpreters} -setup {
imageCleanup
set data {
@@ -1264,7 +1592,7 @@ test imgPhoto-13.1 {check separation of images in different interpreters} -setup
interp delete x1
interp delete x2
} -result T1_data
-
+
test imgPhoto-14.1 {GIF writes work correctly} -setup {
set data {
R0lGODlhYwA5APcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgAysnGy8hKzM
@@ -1357,7 +1685,7 @@ test imgPhoto-14.4 {GIF buffer overflow} -setup {
} -cleanup {
image delete $i
} -returnCodes error -result {malformed image}
-
+
test imgPhoto-15.1 {photo images can fail to allocate memory gracefully} -constraints {
nonPortable
} -body {
@@ -1365,7 +1693,7 @@ test imgPhoto-15.1 {photo images can fail to allocate memory gracefully} -constr
# free memory available...
image create photo -width 32000 -height 32000
} -returnCodes error -result {not enough free memory for image buffer}
-
+
test imgPhoto-16.1 {copying to self doesn't access freed memory} -setup {
set i [image create photo]
} -body {
@@ -1376,7 +1704,7 @@ test imgPhoto-16.1 {copying to self doesn't access freed memory} -setup {
} -cleanup {
image delete $i
} -result {}
-
+
# Check that we can guess our supported output formats [Bug 2983824]
test imgPhoto-17.1 {photo write: format guessing from filename} -setup {
set i [image create photo -width 3 -height 3]
@@ -1415,364 +1743,110 @@ test imgPhoto-17.3 {photo write: format guessing from filename} -setup {
image delete $i
catch {removeFile $f}
} -result "P6\n"
-
-test imgPhoto-18.1 {ImgStringMatch: data is not a list} -setup {
- imageCleanup
- image create photo photo1
+test imgPhoto-17.4 {photo write: default format not supported} -setup {
+ image create photo photo1 -data {{blue blue} {red red} {green green}}
+ set f [makeFile {} test.txt]
} -body {
- photo1 put {not a " proper list}
- # " (this comment is here only for editor highlighting)
+ photo1 write $f -format default
} -cleanup {
imageCleanup
-} -returnCodes error -result {unmatched open quote in list}
-# empty data case tested with imgPhoto-4.95
-test imgPhoto-18.2 {ImgStringMatch: list element not a proper list} -setup {
- imageCleanup
- image create photo photo1
+ catch {removeFile $f}
+ unset f
+} -returnCodes error -result \
+ {image file format "default" has no file writing capability}
+test imgPhoto-17.5 {photo write: file with extension .default} -setup {
+ image create photo photo1 -data {{black}}
+ set f [makeFile {} test.default]
} -body {
- photo1 put {{red white} {not "} {blue green}}
- # "
+ photo1 write $f
} -cleanup {
- imageCleanup
-} -returnCodes error -result {unmatched open quote in list}
-test imgPhoto-18.3 {ImgStringMatch: sublists with differen lengths} -setup {
imageCleanup
+ catch {removeFile $f}
+ unset f
+} -returnCodes error -result \
+ {image file format "default" has no file writing capability}
+
+test imgPhoto-18.1 {MatchFileFormat: "default" format not supported} -setup {
image create photo photo1
+ set f [makeFile {} test.txt]
} -body {
- photo1 put {{#001122 #334455 #667788}
- {#99AABB #CCDDEE}
- {#FF0011 #223344 #556677}}
+ photo1 read $f -format default
} -cleanup {
imageCleanup
-} -returnCodes error -result \
- {invalid row # 1: all rows must have the same number of elements}
-test imgPhoto-18.4 {ImgStringMatch: valid data} -setup {
- imageCleanup
+ catch {removeFile $f}
+ unset f
+} -returnCodes error -result {-file option isn't supported for default images}
+
+test imgPhoto-19.1 {MatchStringFormat: with "-format default"} -setup {
image create photo photo1
} -body {
- photo1 put {{blue green}
- {yellow magenta}
- {#000000 #FFFFFFFF}}
- list [image width photo1] [image height photo1] [photo1 get 0 2]
+ photo1 put {{red blue red} {yellow green yellow}} -format default
+ list [image width photo1] [image height photo1]
} -cleanup {
imageCleanup
-} -result {2 3 {0 0 0 255}}
-# ImgStringRead: most of the error cases cannot be tested with current code,
-# as the errors are detected by ImgStringMatch
-test imgPhoto-19.1 {ImgStringRead: normal use case} -constraints {
- hasTeapotPhoto
-} -setup {
- imageCleanup
- image create photo photo1 -file $teapotPhotoFile
- image create photo photo2
-} -body {
- set imgData [photo1 data]
- photo2 put $imgData
- string equal [photo1 data] [photo2 data]
+} -result {3 2}
+test imgPhoto-19.2 {MatchStringFormat: without -format option,
+ default fmt} -body {
+ image create photo photo1
+ photo1 put {{red} {green}}
+ list [image width photo1] [image height photo1]
} -cleanup {
imageCleanup
- unset imgData
-} -result {1}
-test imgPhoto-19.2 {ImgStringRead: correct compositing rule} -constraints {
- hasTranspTeapotPhoto
-} -setup {
- imageCleanup
- image create photo photo1 -file $transpTeapotPhotoFile
+} -result {1 2}
+test imgPhoto-19.3 {MatchStringFormat: "-format ppm"} -setup {
+ image create photo photo1
image create photo photo2
+ photo2 put {cyan cyan}
+ set imgData [photo2 data -format ppm]
} -body {
- # currently, this test is pointless, as [imageName data] does not include
- # transparency information. To be considered as a placeholder.
- photo2 put #FF0000 -to 0 0 50 50
- photo2 put [photo1 data] -to 10 10 40 40
- list [photo2 get 0 0] [photo2 get 20 25] [photo2 get 49 49]
+ photo1 put $imgData -format ppm
+ list [image width photo1] [image height photo1]
} -cleanup {
+ unset imgData
imageCleanup
-} -result {{255 0 0 255} {0 78 185 255} {255 0 0 255}}
-test imgPhoto-20.1 {ImgStringWrite: test some pixels} -constraints {
+} -result {1 2}
+test imgPhoto-19.4 {MatchStringFormat: ppm fmt, without opt} -constraints {
hasTeapotPhoto
} -setup {
- set result {}
- imageCleanup
image create photo photo1 -file $teapotPhotoFile
+ image create photo photo2
} -body {
- set imgData [photo1 data]
- # note: with [lindex], the coords are inverted (y x)
- lappend result [lindex $imgData 3 2]
- lappend result [lindex $imgData 107 53]
- lappend result [lindex $imgData 203 157]
- set result
-} -cleanup {
- unset result
- unset imgData
- imageCleanup
-} -result {{#135cc0} #a06d52 #e1c8ba}
-test imgPhoto-21.1 {ImgPhotoParseColor: valid suffixes} -setup {
- imageCleanup
- image create photo photo1
- set result {}
-} -body {
- photo1 put {{blue@0.711 #114433#C} {#8D4#1A magenta}}
- lappend result [photo1 get 0 0]
- lappend result [photo1 get 1 0]
- lappend result [photo1 get 0 1]
- lappend result [photo1 get 1 1]
- set result
-} -cleanup {
- unset result
- imageCleanup
-} -result {{0 0 255 181} {17 68 51 204} {136 221 68 26} {255 0 255 255}}
-test imgPhoto-21.2 {ImgPhotoParseColor: valid suffixes, no suffix} -setup {
- imageCleanup
- image create photo photo1
- set result {}
-} -body {
- photo1 put {{#52D8a0 #2B5} {#E47@0.01 maroon#4}}
- lappend result [photo1 get 0 0]
- lappend result [photo1 get 1 0]
- lappend result [photo1 get 0 1]
- lappend result [photo1 get 1 1]
- set result
-} -cleanup {
- unset result
- imageCleanup
-} -result {{82 216 160 255} {34 187 85 255} {238 68 119 3} {128 0 0 68}}
-test imgPhoto-21.3 {ImgPhotoParseColor: # suffix, no hex digits} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{black#}}
-} -cleanup {
- imageCleanup
-} -returnCodes error -result {invalid alpha suffix "#"}
-test imgPhoto-21.4 {ImgPhotoParseColor: # suffix, too many digists} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{#ABC#123}}
-} -cleanup {
- imageCleanup
-} -returnCodes error -result \
- {invalid alpha suffix "#123"}
-test imgPhoto-21.5 {ImgPhotoParseColor: wrong digit count for color} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{#00}}
-} -returnCodes error -result {invalid color name "#00"}
-test imgPhoto-21.6 {ImgPhotoParseColor: invalid hex digit #1} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put #ABCDEG@.99
-} -cleanup {
- imageCleanup
-} -returnCodes error -result {invalid color name "#ABCDEG"}
-test imgPhoto-21.7 {ImgPhotoParseColor: invalid hex digit #2} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {#ABCZ}
-} -cleanup {
- imageCleanup
-} -returnCodes error -result {invalid color name "#ABCZ"}
-test imgPhoto-21.8 {ImgPhotoParseColor: valid #ARGB color} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{#0d9bd502 #F7ac}}
- list [photo1 get 0 0] [photo1 get 1 0]
-} -cleanup {
- imageCleanup
-} -result {{155 213 2 13} {119 170 204 255}}
-test imgPhoto-21.9 {ImgPhotoParseColor: empty string} -setup {
- imageCleanup
- image create photo photo1
- set result {}
-} -body {
- photo1 put {{"" ""} {"" ""}}
- lappend result [image width photo1]
- lappend result [image height photo1]
- lappend result [photo1 get 1 1]
- set result
-} -cleanup {
- unset result
- imageCleanup
-} -result {2 2 {0 0 0 0}}
-test imgPhoto-21.10 {ImgPhotoParsecolor: empty string, mixed} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{black white} {{} white}}
- list [photo1 get 0 0] [photo1 get 0 1]
-} -cleanup {
- imageCleanup
-} -result {{0 0 0 255} {0 0 0 0}}
-test imgPhoto-21.9 {ImgPhotoParseColor: list form, invalid list} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{{123 45 67 "}}}
- # "
-} -cleanup {
- imageCleanup
-} -returnCodes error -result {can't parse color "123 45 67 ""}
-test imgPhoto-21.10 {ImgPhotoParseColor: too few elements in list} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{{0 255}}}
-} -cleanup {
- imageCleanup
-} -returnCodes error -result {can't parse color "0 255"}
-test imgPhoto-21.11 {ImgPhotoParseColor: too many elements in list} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{{0 100 200 255 0}}}
-} -returnCodes error -result {can't parse color "0 100 200 255 0"}
-test imgPhoto-21.12 {ImgPhotoParseColor: not an integer value} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{{9 0xf3 87 65} {43 21 10 1.0}}}
-} -cleanup {
- imageCleanup
-} -returnCodes error -result {expected integer but got "1.0"}
-test imgPhoto-21.13 {ImgPhotoParseColor: negative value in list} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{{121 121 -1}}}
-} -cleanup {
- imageCleanup
-} -returnCodes error -result \
- {invalid color "121 121 -1": expected integers in the range from 0 to 255}
-test imgPhoto-21.14 {ImgPhotoParseColor: value in list too large} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{{254 255 256}}}
-} -cleanup {
- imageCleanup
-} -returnCodes error -result \
- {invalid color "254 255 256": expected integers in the range from 0 to 255}
-test imgPhoto-21.15 {ImgPhotoParseColor: valid list form} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{{0x0 0x10 0xfe 0xff} {0 100 254}}
- {{30 30 30 0} {1 1 254 1}}}
- list [photo1 get 0 0] [photo1 get 1 0] [photo1 get 0 1] [photo1 get 1 1]
-} -cleanup {
- imageCleanup
-} -result {{0 16 254 255} {0 100 254 255} {30 30 30 0} {1 1 254 1}}
-test imgPhoto-21.16 {ImgPhotoParseColor: suffix not allowed #1} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put #ABCD@0.5
-} -cleanup {
- imageCleanup
-} -returnCodes error -result \
- {invalid color "#ABCD@0.5": format does not allow alpha suffix}
-test imgPhoto-21.17 {ImgPhotoParseColor: suffix not allowed #2} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put {{{100 100 100#FE}}}
-} -cleanup {
- imageCleanup
-} -returnCodes error -result \
- {invalid color "100 100 100#FE": format does not allow alpha suffix}
-test ImgPoto-21.18 {ImgPhotoParseColor: suffix not allowed #3} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put #1111#1
-} -cleanup {
- imageCleanup
-} -returnCodes error -result \
- {invalid color "#1111#1": format does not allow alpha suffix}
-test imgPhoto-21.19 {ImgPhotoParseColor: @A, not a float} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put blue@bogus
-} -cleanup {
- imageCleanup
-} -returnCodes error -result \
- {invalid alpha suffix "@bogus": expected floating-point value}
-test imgPhoto-21.20 {ImgPhotoParseColor: @A, value too low} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put green@-0.1
-} -cleanup {
- imageCleanup
-} -returnCodes error -result \
- {invalid alpha suffix "@-0.1": value must be in the range from 0 to 1}
-test imgPhoto-21.21 {ImgPhotoParseColor: @A, value too high} -setup {
- imageCleanup
- image create photo photo1
-} -body {
- photo1 put #000000@1.0001
+ set imgData [photo1 data -format ppm]
+ photo2 put $imgData
+ list [image width photo2] [image height photo2]
} -cleanup {
imageCleanup
-} -returnCodes error -result \
- {invalid alpha suffix "@1.0001": value must be in the range from 0 to 1}
-test imgPhoto-21.22 {ImgPhotoParseColor: @A, edge values} -setup {
- imageCleanup
+ unset imgData
+} -result {256 256}
+test imgPhoto-19.5 {MatchStirngFormat: unknown -format} -setup {
image create photo photo1
} -body {
- photo1 put {{yellow@1e-22 yellow@0.12352941 yellow@0.12352942 \
- yellow@0.9999999}}
- list [photo1 get 0 0] [photo1 get 1 0] [photo1 get 2 0] [photo1 get 3 0]
+ photo1 put {} -format bogus
} -cleanup {
imageCleanup
-} -result {{255 255 0 0} {255 255 0 31} {255 255 0 32} {255 255 0 255}}
-test imgPhoto-21.23 {ImgPhotoParseColor: invalid digit in #X suffix} -setup {
- imageCleanup
+} -returnCodes error -result {image format "bogus" is not supported}
+test imgPhoto-19.6 {MatchStringFormat: invalid data for default} -setup {
image create photo photo1
} -body {
- photo1 put #000#g
+ photo1 put bogus
} -cleanup {
imageCleanup
-} -returnCodes error -result {invalid alpha suffix "#g": expected hex digit}
-test imgPhoto-21.24 {ImgPhotoParseColor: invalid digit in #XX suffix} -setup {
- imageCleanup
+} -returnCodes error -result {couldn't recognize image data}
+test imgPhoto-19.7 {MatchStringFormat: invalid data for default} -setup {
image create photo photo1
} -body {
- photo1 put green#2W
+ photo1 put bogus -format dEFault
} -cleanup {
imageCleanup
-} -returnCodes error -result {invalid alpha suffix "#2W": expected hex digit}
-test imgPhoto-21.25 {ImgPhotoParseColor: overall test - all color / suffix
- combinations} -setup {
- imageCleanup
+} -returnCodes error -result {couldn't recognize image data}
+test imgPhoto-19.8 {MatchStirngFormat: invalid data for gif} -setup {
image create photo photo1
- set result {}
} -body {
- photo1 put {
- {snow@0.5 snow#80 snow#8 #fffffafafafa@0.5 #fffffabbfacc#8}
- {#fffffafffaff#80 #ffffaafaa@.5 #ffffaafaa#8 #ffffaafaa#80 #fee#8}
- {#fee#80 #fee@0.5 #fffafa@0.5 #fffafa#8 #fffafa#80}
- {{0xff 250 0xfa 128} {255 250 250} #8fee #80fffafa snow}}
- for {set y 0} {$y < 4} {incr y} {
- for {set x 0} {$x < 5} {incr x} {
- lappend result [photo1 get $x $y]
- }
- }
- set result
+ photo1 put bogus -format giF
} -cleanup {
imageCleanup
- unset result
-} -result \
-{{255 250 250 128} {255 250 250 128} {255 250 250 136} {255 250 250 128}\
-{255 250 250 136} {255 250 250 128} {255 250 250 128} {255 250 250 136}\
-{255 250 250 128} {255 238 238 136} {255 238 238 128} {255 238 238 128}\
-{255 250 250 128} {255 250 250 136} {255 250 250 128} {255 250 250 128}\
-{255 250 250 255} {255 238 238 136} {255 250 250 128} {255 250 250 255}}
-
+} -returnCodes error -result {couldn't recognize image data}
+
# ----------------------------------------------------------------------
catch {rename foreachPixel {}}