155 lines
No EOL
4.6 KiB
Scheme
155 lines
No EOL
4.6 KiB
Scheme
; Test cut methods of Edit module of the PDB
|
|
|
|
; See elsewhere for other cases e.g. copy, paste
|
|
|
|
|
|
(script-fu-use-v3)
|
|
|
|
|
|
; setup
|
|
|
|
; Load test image that already has drawable
|
|
(define testImage (testing:load-test-image-basic-v3))
|
|
|
|
; get all the root layers
|
|
; testImage has exactly one root layer.
|
|
(define testLayers (gimp-image-get-layers testImage))
|
|
;testLayers is-a vector
|
|
(define testLayer (vector-ref testLayers 0))
|
|
|
|
; returns a new floating sel layer
|
|
;(define makeFloatingSel )
|
|
; paste when clipboard is not empty returns a vector of length one
|
|
;(assert `(= (vector-length (gimp-edit-paste ,testLayer TRUE)) ; paste-into
|
|
; 1))
|
|
|
|
; function to create a multi-layer image
|
|
; Defines globally: testImage, testLayer, testLayer2
|
|
(define (make-multi-layer-image)
|
|
(define testImage (testing:load-test-image-basic-v3))
|
|
; get root layers
|
|
(define testLayers (gimp-image-get-layers testImage))
|
|
;testLayers is-a vector
|
|
(define testLayer (vector-ref testLayers 0))
|
|
(assert `(= (vector-length (gimp-image-get-layers ,testImage))
|
|
1))
|
|
(define testLayer2 (testing:layer-new-inserted testImage))
|
|
(assert `(= (vector-length (gimp-image-get-layers ,testImage))
|
|
2)))
|
|
|
|
|
|
|
|
|
|
(test! "edit-cut when selection")
|
|
|
|
; setup, create a selection
|
|
(assert `(gimp-selection-all ,testImage))
|
|
(assert `(not (gimp-selection-is-empty ,testImage)))
|
|
|
|
; edit-cut requires a vector of drawables to cut from.
|
|
; Pass it only the first layer.
|
|
(assert `(gimp-edit-cut (vector ,testLayer)))
|
|
; There are still one layers in the image
|
|
(assert `(= (vector-length (gimp-image-get-layers ,testImage)) 1))
|
|
; !!! No API method is-clipboard-empty
|
|
|
|
|
|
(test! "edit-named-cut when selection does not remove the layer")
|
|
|
|
; setup: count current named buffers
|
|
; earlier tests left a buffer?
|
|
(define bufferCount (length (gimp-buffers-get-name-list ""))) ; empty regex string
|
|
|
|
(assert `(gimp-edit-named-cut (vector ,testLayer) "testBufferName2"))
|
|
; There are still one layers
|
|
(assert `(= (vector-length (gimp-image-get-layers ,testImage)) 1))
|
|
|
|
(test! "edit-named-cut when selection creates buffer")
|
|
; There is another named buffer
|
|
(assert `(= (length (gimp-buffers-get-name-list ""))
|
|
(+ ,bufferCount 1)))
|
|
|
|
|
|
(test! "cut from single layer image when no selection removes the layer")
|
|
|
|
; setup, delete selection
|
|
(assert `(gimp-selection-none ,testImage))
|
|
(assert `(gimp-selection-is-empty ,testImage))
|
|
|
|
; cut when no selection cuts given layers out of image
|
|
; Cut the only layer out.
|
|
; returns #t when succeeds
|
|
(assert `(gimp-edit-cut (vector ,testLayer)))
|
|
; effective: count layers now 0
|
|
(assert `(= (vector-length (gimp-image-get-layers ,testImage))
|
|
0))
|
|
|
|
|
|
|
|
(test! "cut a floating selection")
|
|
|
|
; Restore a layer to the image
|
|
(define testLayer2 (testing:layer-new-inserted testImage))
|
|
; assert layer is inserted in image
|
|
|
|
(define testFloatingSelInVector
|
|
; edit-paste returns a vector containing a floating-sel
|
|
(gimp-edit-paste
|
|
testLayer2
|
|
TRUE)); paste-into
|
|
|
|
; edit-cut takes that vector
|
|
(assert `(gimp-edit-cut ,testFloatingSelInVector))
|
|
|
|
; edit-cut effective: ID no longer valid
|
|
(assert `(not (gimp-item-id-is-valid
|
|
(vector-ref ,testFloatingSelInVector 0))))
|
|
|
|
|
|
(test! "sequential cuts from a multi layer image")
|
|
|
|
; setup restore the testImage
|
|
(define testImage (testing:load-test-image-basic-v3))
|
|
; get root layers
|
|
(define testLayers (gimp-image-get-layers testImage))
|
|
;testLayers is-a vector
|
|
(define testLayer (vector-ref testLayers 0))
|
|
(assert `(= (vector-length (gimp-image-get-layers ,testImage))
|
|
1))
|
|
(define testLayer2 (testing:layer-new-inserted testImage))
|
|
(assert `(= (vector-length (gimp-image-get-layers ,testImage))
|
|
2))
|
|
|
|
(gimp-selection-none testImage)
|
|
(assert `(gimp-selection-is-empty ,testImage))
|
|
|
|
; cut the original layer, one of two layers.
|
|
|
|
; cut when no selection cuts given layers out of image
|
|
; returns #t when succeeds
|
|
(assert `(gimp-edit-cut (vector ,testLayer)))
|
|
; effective: count layers now 1
|
|
(assert `(= (vector-length (gimp-image-get-layers ,testImage))
|
|
1))
|
|
|
|
; cut the second layer
|
|
(assert `(gimp-edit-cut (vector ,testLayer2)))
|
|
; effective: count layers now 0
|
|
(assert `(= (vector-length (gimp-image-get-layers ,testImage))
|
|
0))
|
|
|
|
|
|
(test! "multiple cuts at once from a multi layer image")
|
|
|
|
(make-multi-layer-image)
|
|
; edit-cut takes a vector of many layers
|
|
; FIXME: this should not throw an error? both layers ARE inserted?
|
|
(assert-error `(gimp-edit-cut (vector ,testLayer ,testLayer2))
|
|
"Procedure execution of gimp-edit-cut failed on invalid input arguments:")
|
|
; Item 'Background' (12) cannot be used because it has not been added to an image
|
|
|
|
|
|
;(gimp-display-new testImage)
|
|
|
|
|
|
(script-fu-use-v2) |