RegressionTests__ImageTests.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 18:53:03 +0200
changeset 2327 bf482d49aeaf
parent 1689 a026f67f0767
child 2329 6763cf01c241
permissions -rw-r--r--
#QUALITY by exept class: RegressionTests::StringTests added: #test82c_expanding

"{ 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|

    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 | 
            img fillRectangle:rectangle withColor:color.
            self assert:((img colorAt:0 @ 0) = color).
        ].
    ].

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

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 class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_CVS
    ^ '$Header$'
! !