gimp/plug-ins/script-fu/test/tests/PDB/selection/selection-by.scm

94 lines
2.9 KiB
Scheme

; test PDB methods that change selection by another object
; such as a color or a channel
(script-fu-use-v3)
; Function to reset the selection
(define (testResetSelection testImage)
(test! "Resetting selection to none")
(assert `(gimp-selection-none ,testImage))
(assert `(gimp-selection-is-empty ,testImage))
; The value of the selection mask at coords 64,64 is 0
; A value of the selection mask is in range [0,255]
(assert `(= (gimp-selection-value ,testImage 64 64)
0)))
; setup
(define testImage (testing:load-test-image-basic-v3))
(define testLayer (vector-ref (cadr (gimp-image-get-layers testImage ))
0))
; a layer mask from alpha
(define testLayerMask (gimp-layer-create-mask
testLayer
ADD-MASK-ALPHA))
(gimp-layer-add-mask testLayer testLayerMask)
(test! "new image has no initial selection")
; returns #t
(assert `(gimp-selection-is-empty ,testImage))
(test! "selection by given color")
; returns void
(assert `(gimp-image-select-color ,testImage CHANNEL-OP-ADD ,testLayer "black"))
; effective: test image has some black pixels, now selection is not empty
(assert `(not (gimp-selection-is-empty ,testImage)))
(testResetSelection testImage)
(test! "selection by picking coords")
; !!! This is not the same as the menu item Select>By Color
; That menu item selects all pixels of a picked color.
; The PDB procedure selects a contiguous area (not disconnected pixels)
; and is more affected by settings in the context particularly sample-transparent.
; This test fails if you pick a coord that is transparent,
; since sample-transparent defaults to false?
;
; The test image has a non-transparent pixel at 64,64
; but a transparent pixel at 125,125
; gimp-image-select-contiguous-color does not throw
(assert `(gimp-image-select-contiguous-color ,testImage CHANNEL-OP-ADD ,testLayer 64 64))
; effective, now selection is not empty
(assert `(not (gimp-selection-is-empty ,testImage)))
; effective, the selection value at the picked coords is "totally selected"
(assert `(= (gimp-selection-value ,testImage 64 64)
255))
(testResetSelection testImage)
(test! "selection from item same layer")
; selection from the layer itself: selects same as layer's alpha
(assert `(gimp-image-select-item ,testImage CHANNEL-OP-ADD ,testLayer))
; effective: selection is not empty
(assert `(not (gimp-selection-is-empty ,testImage)))
(testResetSelection testImage)
(test! "selection from layer mask")
; layer mask to selection succeeds
(assert `(gimp-image-select-item ,testImage CHANNEL-OP-ADD ,testLayerMask))
; effective: selection is not empty
(assert `(not (gimp-selection-is-empty ,testImage)))
; TODO selection from
; channel, vectors
; TODO selection from layer group? fails?
; for debugging individual test file:
; (gimp-display-new testImage)
(script-fu-use-v2)