"{ Package: 'stx:goodies/regression' }"
"{ NameSpace: RegressionTests }"
TestCase subclass:#ImageTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'tests-Regression-Graphics-Images'
!
!ImageTests class methodsFor:'documentation'!
documentation
"
Tests for the image classes in libview, i.e. Image,
Depth1Image, Depth2Image, etc.
[author:]
mawalch
[instance variables:]
[class variables:]
[see also:]
"
! !
!ImageTests methodsFor:'tests'!
test01_PixelValue1
|img|
img := Image extent:1@1 depth:24.
img photometric:#rgb. "/ that is: ignored,r,g,b
img createPixelStore.
self assert:(img bits at:1) == 0.
self assert:(img bits at:2) == 0.
self assert:(img bits at:3) == 0.
img pixelAtX:0 y:0 put:16rFF0000.
self assert:(img bits at:1) == 16rFF.
self assert:(img bits at:2) == 0.
self assert:(img bits at:3) == 0.
"/ ----------------------------------
img := Image extent:1@1 depth:32.
img photometric:#rgb. "/ that is: ignored,r,g,b
img createPixelStore.
self assert:(img bits at:1) == 0.
self assert:(img bits at:2) == 0.
self assert:(img bits at:3) == 0.
self assert:(img bits at:4) == 0.
img pixelAtX:0 y:0 put:16rFF0000.
self assert:(img bits at:1) == 0.
self assert:(img bits at:2) == 16rFF.
self assert:(img bits at:3) == 0.
self assert:(img bits at:4) == 0.
"Created: / 22-08-2017 / 18:43:04 / cg"
!
test02_PixelColor
|img bytes|
img := Image extent:1@1 depth:24.
img photometric:#rgb. "/ that is: r,g,b
img createPixelStore.
bytes := img bits.
self assert:(bytes at:1) == 0.
self assert:(bytes at:2) == 0.
self assert:(bytes at:3) == 0.
img colorAtX:0 y:0 put:(Color red).
self assert:(bytes at:1) == 16rFF.
self assert:(bytes at:2) == 0.
self assert:(bytes at:3) == 0.
"/ ----------------------------------
img := Image extent:1@1 depth:32.
img photometric:#rgb. "/ that is: r,g,b, ignoredAlpha
img createPixelStore.
bytes := img bits.
self assert:(bytes at:1) == 0.
self assert:(bytes at:2) == 0.
self assert:(bytes at:3) == 0.
self assert:(bytes at:4) == 0.
img colorAtX:0 y:0 put:(Color red).
self assert:(bytes at:1) == 16rFF. "/ red
self assert:(bytes at:2) == 0.
self assert:(bytes at:3) == 0.
self assert:(bytes at:4) == 0. "/ alpha - ignored and 0
img colorAtX:0 y:0 put:(Color green).
self assert:(bytes at:1) == 0.
self assert:(bytes at:2) == 16rFF. "/ green
self assert:(bytes at:3) == 0.
self assert:(bytes at:4) == 0. "/ alpha - ignored and 0
img colorAtX:0 y:0 put:(Color blue).
self assert:(bytes at:1) == 0.
self assert:(bytes at:2) == 0.
self assert:(bytes at:3) == 16rFF. "/ blue
self assert:(bytes at:4) == 0. "/ alpha - ignored and 0
"/ ----------------------------------
img := Image extent:1@1 depth:32.
img photometric:#xrgb. "/ that is: alpha,r,g,b
img createPixelStore.
bytes := img bits.
self assert:(bytes at:1) == 0.
self assert:(bytes at:2) == 0.
self assert:(bytes at:3) == 0.
self assert:(bytes at:4) == 0.
img colorAtX:0 y:0 put:(Color red).
self assert:(bytes at:1) == 0. "/ alpha - ignored and 0
self assert:(bytes at:2) == 16rFF. "/ red
self assert:(bytes at:3) == 0.
self assert:(bytes at:4) == 0.
img colorAtX:0 y:0 put:(Color green).
self assert:(bytes at:1) == 0. "/ alpha - ignored and 0
self assert:(bytes at:2) == 0.
self assert:(bytes at:3) == 16rFF. "/ green
self assert:(bytes at:4) == 0.
img colorAtX:0 y:0 put:(Color blue).
self assert:(bytes at:1) == 0. "/ alpha - ignored and 0
self assert:(bytes at:2) == 0.
self assert:(bytes at:3) == 0.
self assert:(bytes at:4) == 16rFF. "/ blue
"/ ----------------------------------
img := Image extent:1@1 depth:32.
img photometric:#rgba.
img createPixelStore.
bytes := img bits.
img colorAtX:0 y:0 put:(Color red).
self assert:(bytes at:1) == 16rFF. "/ red
self assert:(bytes at:2) == 0. "/ green
self assert:(bytes at:3) == 0. "/ blue
self assert:(bytes at:4) == 16rFF. "/ alpha
img colorAtX:0 y:0 put:(Color green).
self assert:(bytes at:1) == 0. "/ red
self assert:(bytes at:2) == 16rFF. "/ green
self assert:(bytes at:3) == 0. "/ blue
self assert:(bytes at:4) == 16rFF. "/ alpha
img colorAtX:0 y:0 put:(Color blue).
self assert:(bytes at:1) == 0. "/ red
self assert:(bytes at:2) == 0. "/ green
self assert:(bytes at:3) == 16rFF. "/ blue
self assert:(bytes at:4) == 16rFF. "/ alpha
"/ ----------------------------------
img := Image extent:1@1 depth:32.
img photometric:#argb.
img createPixelStore.
bytes := img bits.
img colorAtX:0 y:0 put:(Color red).
self assert:(bytes at:1) == 16rFF. "/ alpha
self assert:(bytes at:2) == 16rFF. "/ red
self assert:(bytes at:3) == 0. "/ green
self assert:(bytes at:4) == 0. "/ blue
img colorAtX:0 y:0 put:(Color green).
self assert:(bytes at:1) == 16rFF. "/ alpha
self assert:(bytes at:2) == 0. "/ red
self assert:(bytes at:3) == 16rFF. "/ green
self assert:(bytes at:4) == 0. "/ blue
img colorAtX:0 y:0 put:(Color blue).
self assert:(bytes at:1) == 16rFF. "/ alpha
self assert:(bytes at:2) == 0. "/ red
self assert:(bytes at:3) == 0. "/ green
self assert:(bytes at:4) == 16rFF. "/ blue
"Created: / 22-08-2017 / 18:46:14 / cg"
"Modified: / 22-07-2019 / 14:05:29 / Claus Gittinger"
!
test09_FillRectangle
|depths colors rectangle|
depths := { 16 . 24 . 32 }.
colors := {
Color red.
Color green.
Color blue.
Color white.
Color black
}.
rectangle := Rectangle left:0 top:0 width:1 height:1.
depths do:[:depth |
|img|
img := Image extent:1 @ 1 depth:depth.
img createPixelStore.
colors do:[:color |
|colorRetrieved|
img fillRectangle:rectangle withColor:color.
colorRetrieved := img colorAt: 0@0.
self assert:(colorRetrieved = color)
message:('depth:%1; expected:%2 / got:%3'
bindWith:depth
with:color hexPrintString
with:colorRetrieved hexPrintString).
].
].
"Created: / 22-08-2017 / 18:45:44 / cg"
"Modified: / 22-07-2019 / 14:09:14 / Claus Gittinger"
!
test10_FillRectangle_palette
|img depths colors rectangle|
depths := { 2 . 4 . 8 }.
colors := {
Color red.
Color green.
Color blue.
Color white.
}.
rectangle := Rectangle left:0 top:0 width:1 height:1.
depths do:[:depth |
img := Image extent:1 @ 1 depth:depth.
img photometric:#palette.
img colorMap:colors.
img createPixelStore.
colors do:[:color |
img fillRectangle:rectangle withColor:color.
self assert:((img colorAt:0 @ 0) = color).
].
].
colors := {
Color red.
Color green.
}.
img := Image extent:1 @ 1 depth:1.
img photometric:#palette.
img colorMap:colors.
img createPixelStore.
colors do:[:color |
img fillRectangle:rectangle withColor:color.
self assert:((img colorAt:0 @ 0) = color).
].
"Created: / 22-08-2017 / 18:57:19 / cg"
! !
!ImageTests methodsFor:'tests - converting'!
test49_24bit
|img24|
img24 := Depth24Image
width:4
height:4
fromArray:#[
16rFF 16r00 16r00 16rFF 16r00 16r00 16rFF 16r00 16r00 16rFF 16r00 16r00
16r00 16rFF 16r00 16r00 16rFF 16r00 16r00 16rFF 16r00 16r00 16rFF 16r00
16r00 16r00 16rFF 16r00 16r00 16rFF 16r00 16r00 16rFF 16r00 16r00 16rFF
16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF 16rFF
].
img24 photometric:#rgb.
img24 samplesPerPixel:3.
img24 bitsPerSample:#(8 8 8).
self assert:(img24 pixelAtX:0 y:0) = 16rFF0000.
self assert:(img24 colorAtX:0 y:0) = Color red.
"Created: / 12-07-2019 / 14:34:50 / Stefan Reise"
!
test49_32bit
|img32|
img32 := Depth32Image
width:4
height:4
fromArray:#[
16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00
16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00
16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00
16rFF 16rFF 16rFF 16r00 16rFF 16rFF 16rFF 16r00 16rFF 16rFF 16rFF 16r00 16rFF 16rFF 16rFF 16r00
].
img32 photometric:#rgb.
img32 samplesPerPixel:4.
img32 bitsPerSample:#(8 8 8 8).
self assert:(img32 pixelAtX:0 y:0) = 16rFF000000.
self assert:(img32 colorAtX:0 y:0) = Color red.
"Created: / 12-07-2019 / 14:35:43 / Stefan Reise"
!
test50_32_to_24
|img32 img24|
img32 := Depth32Image
width:4
height:4
fromArray:#[
16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00
16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00
16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00 16r00 16r00 16rFF 16r00
16rFF 16rFF 16rFF 16r00 16rFF 16rFF 16rFF 16r00 16rFF 16rFF 16rFF 16r00 16rFF 16rFF 16rFF 16r00
].
img32 photometric:#rgb.
img32 samplesPerPixel:4.
img32 bitsPerSample:#(8 8 8 8).
self assert:(img32 pixelAtX:0 y:0) = 16rFF000000.
self assert:(img32 colorAtX:0 y:0) = Color red.
self assert:(img32 pixelAtX:0 y:1) = 16r00FF0000.
self assert:(img32 colorAtX:0 y:1) = Color green.
img24 := img32 asImageWithDepth:24.
self assert:(img24 pixelAtX:0 y:0) = 16r00FF0000.
self assert:(img24 colorAtX:0 y:0) = Color red.
self assert:(img24 pixelAtX:0 y:1) = 16r0000FF00.
self assert:(img24 colorAtX:0 y:1) = Color green.
"Created: / 12-07-2019 / 14:32:48 / Stefan Reise"
"Modified (format): / 22-07-2019 / 14:10:04 / Claus Gittinger"
! !
!ImageTests class methodsFor:'documentation'!
version
^ '$Header$'
!
version_CVS
^ '$Header$'
! !