RegressionTests__ImageTests.st
author Claus Gittinger <cg@exept.de>
Tue, 22 Aug 2017 18:53:22 +0200
changeset 1687 30597c99b668
parent 1686 976a342e6acf
child 1688 62ad31c3a464
permissions -rw-r--r--
#QUALITY by cg class: RegressionTests::ImageTests added: #test01_PixelValue1 #test02_PixelColor #test09_FillRectangle #test10_FillWhite removed: #testFillRectangle1 #testFillRectangle2 #testFillWhite

"{ Package: 'stx:goodies/regression' }"

"{ NameSpace: RegressionTests }"

TestCase subclass:#ImageTests
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'tests-Regression'
!

!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|

    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 colorAtX:0 y:0 put:(Color red).

    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 colorAtX:0 y:0 put:(Color red).

    self assert:(img bits at:1) == 0.     "/ alpha - ignored and 0
    self assert:(img bits at:2) == 16rFF. "/ red
    self assert:(img bits at:3) == 0.
    self assert:(img bits at:4) == 0.

    img colorAtX:0 y:0 put:(Color green).

    self assert:(img bits at:1) == 0.     "/ alpha - ignored and 0
    self assert:(img bits at:2) == 0.
    self assert:(img bits at:3) == 16rFF. "/ green
    self assert:(img bits at:4) == 0. 

    img colorAtX:0 y:0 put:(Color blue).

    self assert:(img bits at:1) == 0.     "/ alpha - ignored and 0
    self assert:(img bits at:2) == 0.
    self assert:(img bits at:3) == 0. 
    self assert:(img bits at:4) == 16rFF. "/ blue

    "/ ----------------------------------

    img := Image extent:1@1 depth:32.
    img photometric:#rgba.    
    img createPixelStore.

    img colorAtX:0 y:0 put:(Color red).

    self assert:(img bits at:1) == 16rFF. "/ red
    self assert:(img bits at:2) == 0.     "/ green 
    self assert:(img bits at:3) == 0.     "/ blue 
    self assert:(img bits at:4) == 16rFF. "/ alpha 

    img colorAtX:0 y:0 put:(Color green).

    self assert:(img bits at:1) == 0.     "/ red
    self assert:(img bits at:2) == 16rFF. "/ green 
    self assert:(img bits at:3) == 0.     "/ blue 
    self assert:(img bits at:4) == 16rFF. "/ alpha 

    img colorAtX:0 y:0 put:(Color blue).

    self assert:(img bits at:1) == 0.     "/ red
    self assert:(img bits at:2) == 0.     "/ green 
    self assert:(img bits at:3) == 16rFF. "/ blue 
    self assert:(img bits at:4) == 16rFF. "/ alpha 

    "/ ----------------------------------

    img := Image extent:1@1 depth:32.
    img photometric:#argb.    
    img createPixelStore.

    img colorAtX:0 y:0 put:(Color red).

    self assert:(img bits at:1) == 16rFF. "/ alpha          
    self assert:(img bits at:2) == 16rFF. "/ red 
    self assert:(img bits at:3) == 0.     "/ green  
    self assert:(img bits at:4) == 0.     "/ blue

    img colorAtX:0 y:0 put:(Color green).

    self assert:(img bits at:1) == 16rFF. "/ alpha          
    self assert:(img bits at:2) == 0.     "/ red 
    self assert:(img bits at:3) == 16rFF. "/ green  
    self assert:(img bits at:4) == 0.     "/ blue

    img colorAtX:0 y:0 put:(Color blue).

    self assert:(img bits at:1) == 16rFF. "/ alpha          
    self assert:(img bits at:2) == 0.     "/ red 
    self assert:(img bits at:3) == 0.     "/ green  
    self assert:(img bits at:4) == 16rFF. "/ blue

    "Created: / 22-08-2017 / 18:46:14 / cg"
!

test09_FillRectangle
    |depths colors rectangle|

    "/ So far not really supported for other depths (at least not in this straightforward way).
    depths := { 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 | 
            img fillRectangle:rectangle withColor:color.
            self assert:((img colorAt:0 @ 0) = color).
        ].
    ].

    "Created: / 22-08-2017 / 18:45:44 / cg"
!

test10_FillWhite
    |depths colors rectangle|

    "/ So far not really supported for other depths (at least not in this straightforward way).
    depths := { 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 |
            img fillRectangle:rectangle withColor:color.
            self assert:((img colorAt:0@0) = color).
        ].
    ].

    "Created: / 22-08-2017 / 18:45:37 / cg"
! !

!ImageTests class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_CVS
    ^ '$Header$'
! !