Initial checkin of Pika from heckimp
This commit is contained in:
54
plug-ins/script-fu/test/tests/PDB/image/image-grayscale.scm
Normal file
54
plug-ins/script-fu/test/tests/PDB/image/image-grayscale.scm
Normal file
@ -0,0 +1,54 @@
|
||||
; test Image of mode grayscale methods of PDB
|
||||
|
||||
; !!! Note inconsistent use in PIKA of GRAY versus GRAYSCALE
|
||||
|
||||
|
||||
|
||||
; Basic grayscale tests
|
||||
|
||||
|
||||
; setup
|
||||
|
||||
(define testImage (car (pika-image-new 21 22 RGB)))
|
||||
|
||||
|
||||
|
||||
|
||||
; method pika-image-convert-grayscale does not error
|
||||
(assert `(pika-image-convert-grayscale ,testImage))
|
||||
|
||||
; conversion was effective:
|
||||
; basetype of grayscale is GRAY
|
||||
(assert `(=
|
||||
(car (pika-image-get-base-type ,testImage))
|
||||
GRAY))
|
||||
|
||||
; conversion was effective:
|
||||
; grayscale image has-a colormap
|
||||
; colormap is-a vector of length zero, when image has no drawable.
|
||||
; FIXME doc says num-bytes is returned, obsolete since GBytes
|
||||
(assert `(=
|
||||
(vector-length
|
||||
(car (pika-image-get-colormap ,testImage)))
|
||||
0))
|
||||
|
||||
; grayscale images have precision PRECISION-U8-NON-LINEAR
|
||||
; FIXME annotation of PDB procedure says PIKA_PRECISION_U8
|
||||
(assert `(=
|
||||
(car (pika-image-get-precision ,testImage))
|
||||
PRECISION-U8-NON-LINEAR ))
|
||||
|
||||
; TODO
|
||||
; drawable of grayscale image is also grayscale
|
||||
;(assert `(car (pika-drawable-is-grayscale
|
||||
; ()
|
||||
; ,testImage)
|
||||
|
||||
; convert precision of grayscale image succeeds
|
||||
(assert `(pika-image-convert-precision
|
||||
,testImage
|
||||
PRECISION-DOUBLE-GAMMA))
|
||||
|
||||
|
||||
|
||||
|
128
plug-ins/script-fu/test/tests/PDB/image/image-indexed.scm
Normal file
128
plug-ins/script-fu/test/tests/PDB/image/image-indexed.scm
Normal file
@ -0,0 +1,128 @@
|
||||
; test Image of mode indexed methods of PDB
|
||||
|
||||
; Now independent of image ID
|
||||
|
||||
|
||||
; Basic indexed tests
|
||||
|
||||
|
||||
; an empty image for testing
|
||||
(define newTestImage (car (pika-image-new 21 22 RGB)))
|
||||
|
||||
; Load test image that already has drawable
|
||||
(define testImage (testing:load-test-image "wilber.png"))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; testImage is mode RGB
|
||||
(assert `(=
|
||||
(car (pika-image-get-base-type ,testImage))
|
||||
RGB))
|
||||
|
||||
|
||||
; method pika-image-convert-indexed yields truthy (now yields (#t) )
|
||||
(assert `(pika-image-convert-indexed
|
||||
,testImage
|
||||
CONVERT-DITHER-NONE
|
||||
CONVERT-PALETTE-GENERATE
|
||||
2 ; color count
|
||||
1 ; alpha-dither. FUTURE: #t
|
||||
1 ; remove-unused. FUTURE: #t
|
||||
"myPalette" ; ignored
|
||||
))
|
||||
|
||||
; method pika-image-convert-indexed works even on empty image
|
||||
(assert `(pika-image-convert-indexed
|
||||
,newTestImage
|
||||
CONVERT-DITHER-NONE
|
||||
CONVERT-PALETTE-GENERATE
|
||||
25 ; color count
|
||||
1 ; alpha-dither. FUTURE: #t
|
||||
1 ; remove-unused. FUTURE: #t
|
||||
"myPalette" ; ignored
|
||||
))
|
||||
|
||||
; conversion was effective:
|
||||
; basetype of indexed image is INDEXED
|
||||
(assert `(=
|
||||
(car (pika-image-get-base-type ,testImage))
|
||||
INDEXED))
|
||||
|
||||
; conversion was effective:
|
||||
; basetype of indexed image is INDEXED
|
||||
(assert `(=
|
||||
(car (pika-image-get-base-type ,newTestImage))
|
||||
INDEXED))
|
||||
|
||||
|
||||
; testImage has a layer named same as file "wilber.png"
|
||||
; TODO Why does "Background" work but app shows "wilber.png"
|
||||
|
||||
; drawable of indexed image is also indexed
|
||||
(assert `(= (car (pika-drawable-is-indexed
|
||||
; unwrap the drawable ID
|
||||
(car (pika-image-get-layer-by-name ,testImage "Background"))))
|
||||
1)) ; FUTURE #t
|
||||
|
||||
|
||||
|
||||
; colormaps of indexed images
|
||||
|
||||
; conversion was effective:
|
||||
; indexed image has-a colormap
|
||||
|
||||
; colormap is-a vector of length zero, when image has no drawable.
|
||||
; get-colormap returns (#( <bytes of color>))
|
||||
; FIXME doc says num-bytes is returned, obsolete since GBytes
|
||||
(assert `(=
|
||||
(vector-length
|
||||
(car (pika-image-get-colormap ,newTestImage)))
|
||||
0))
|
||||
|
||||
; colormap is-a vector of length 3*<color count given during conversion>,
|
||||
; when image has a drawable.
|
||||
; 3*2=6
|
||||
; FIXME doc says num-bytes is returned, obsolete since GBytes
|
||||
(assert `(=
|
||||
(vector-length
|
||||
(car (pika-image-get-colormap ,testImage)))
|
||||
(* 3 2)))
|
||||
|
||||
; set-colormap succeeds
|
||||
; This tests marshalling of GBytes to PDB
|
||||
(assert `(pika-image-set-colormap ,testImage #(1 1 1 9 9 9)))
|
||||
|
||||
; TODO set-colormap effective
|
||||
; colormap vector is same as given
|
||||
(assert `(equal?
|
||||
(car (pika-image-get-colormap ,testImage))
|
||||
#(1 1 1 9 9 9)))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; precision of indexed images
|
||||
|
||||
; indexed images have precision PRECISION-U8-NON-LINEAR
|
||||
; FIXME annotation of PDB procedure says PIKA_PRECISION_U8
|
||||
(assert `(=
|
||||
(car (pika-image-get-precision ,testImage))
|
||||
PRECISION-U8-NON-LINEAR ))
|
||||
|
||||
|
||||
|
||||
|
||||
; !!! This depends on ID 4 for image
|
||||
|
||||
; convert precision of indexed images yields error
|
||||
(assert-error `(car (pika-image-convert-precision
|
||||
,newTestImage
|
||||
PRECISION-DOUBLE-GAMMA))
|
||||
"Procedure execution of pika-image-convert-precision failed on invalid input arguments: ")
|
||||
; "Image '[Untitled]' (4) must not be of type 'indexed'"
|
||||
|
||||
|
||||
|
58
plug-ins/script-fu/test/tests/PDB/image/image-layers.scm
Normal file
58
plug-ins/script-fu/test/tests/PDB/image/image-layers.scm
Normal file
@ -0,0 +1,58 @@
|
||||
; test Image methods of PDB
|
||||
; where methods deal with layers owned by image.
|
||||
|
||||
|
||||
; setup
|
||||
; Load test image that already has drawable
|
||||
(define testImage (testing:load-test-image "wilber.png"))
|
||||
|
||||
|
||||
|
||||
; get-layers
|
||||
; procedure returns (1 #(<layerID>)) ....in the REPL
|
||||
|
||||
|
||||
; the testImage has one layer
|
||||
(assert `(= (car (pika-image-get-layers ,testImage ))
|
||||
1))
|
||||
|
||||
; get-layers returns second result a vector of ID's
|
||||
; !!! use cadr to get second result
|
||||
(assert `(vector? (cadr (pika-image-get-layers ,testImage ))))
|
||||
|
||||
; the vector also has one element
|
||||
(assert `(= (vector-length (cadr (pika-image-get-layers ,testImage )))
|
||||
1))
|
||||
|
||||
; the vector can be indexed at first element
|
||||
; and is a numeric ID
|
||||
(assert `(number?
|
||||
(vector-ref (cadr (pika-image-get-layers ,testImage ))
|
||||
0)))
|
||||
|
||||
; store the layer ID
|
||||
(define testLayer (vector-ref (cadr (pika-image-get-layers testImage ))
|
||||
0))
|
||||
|
||||
; FIXME seems to fail??? because name is actually "Background"
|
||||
|
||||
; the same layer can be got by name
|
||||
; FIXME app shows layer name is "wilber.png" same as image name
|
||||
(assert `(= (car (pika-image-get-layer-by-name ,testImage "Background"))
|
||||
,testLayer))
|
||||
|
||||
; the single layer's position is zero
|
||||
; pika-image-get-layer-position is deprecated
|
||||
(assert `(= (car (pika-image-get-item-position ,testImage ,testLayer))
|
||||
0))
|
||||
|
||||
|
||||
; TODO pika-image-get-layer-by-tattoo
|
||||
|
||||
; the single layer is selected in freshly opened image
|
||||
(assert `(= (car (pika-image-get-selected-layers ,testImage ))
|
||||
1))
|
||||
|
||||
; TODO test selected layer is same layer
|
||||
|
||||
|
148
plug-ins/script-fu/test/tests/PDB/image/image-new.scm
Normal file
148
plug-ins/script-fu/test/tests/PDB/image/image-new.scm
Normal file
@ -0,0 +1,148 @@
|
||||
; test Image methods of PDB
|
||||
|
||||
; loading this file changes testing state
|
||||
|
||||
; Using numeric equality operator '=' on numeric ID's
|
||||
|
||||
|
||||
; setup
|
||||
|
||||
; method new from fresh PIKA state returns ID 1
|
||||
(define testImage (car (pika-image-new 21 22 RGB)))
|
||||
|
||||
|
||||
|
||||
|
||||
; FUTURE method is_valid on new image yields #t
|
||||
; method is_valid on new image yields 1 i.e. true
|
||||
(assert `(=
|
||||
(car (pika-image-id-is-valid ,testImage))
|
||||
1))
|
||||
|
||||
; Ensure attributes of new image are correct
|
||||
|
||||
; method is_dirty on new image is true
|
||||
(assert `(=
|
||||
(car (pika-image-is-dirty ,testImage))
|
||||
1))
|
||||
|
||||
; method get_width on new image yields same width given when created
|
||||
(assert `(=
|
||||
(car (pika-image-get-width ,testImage))
|
||||
21))
|
||||
|
||||
; method get_height on new image yields same height given when created
|
||||
(assert `(=
|
||||
(car (pika-image-get-height ,testImage))
|
||||
22))
|
||||
|
||||
; method get-base-type yields same image type given when created
|
||||
(assert `(=
|
||||
(car (pika-image-get-base-type ,testImage))
|
||||
RGB))
|
||||
|
||||
; new image is known to pika
|
||||
; Returns (<length> #(1))
|
||||
(assert `(= (car (pika-get-images))
|
||||
,testImage))
|
||||
|
||||
|
||||
; new image has no components
|
||||
|
||||
; new image has zero layers
|
||||
(assert `(= (car (pika-image-get-layers ,testImage))
|
||||
0))
|
||||
|
||||
; new image has zero vectors
|
||||
(assert `(= (car (pika-image-get-vectors ,testImage))
|
||||
0))
|
||||
|
||||
; new image has no parasites
|
||||
(assert `(= (length
|
||||
(car (pika-image-get-parasite-list ,testImage)))
|
||||
0))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; new image has-a selection
|
||||
(assert `(pika-image-get-selection ,testImage))
|
||||
|
||||
; new image has no floating selection
|
||||
(assert `(=
|
||||
(car (pika-image-get-floating-sel ,testImage))
|
||||
-1))
|
||||
|
||||
; TODO floating-sel-attached-to
|
||||
|
||||
|
||||
|
||||
; new image has unit having ID 1
|
||||
(assert `(=
|
||||
(car (pika-image-get-unit ,testImage))
|
||||
1))
|
||||
|
||||
; new image has name
|
||||
(assert `(string=?
|
||||
(car (pika-image-get-name ,testImage))
|
||||
"[Untitled]"))
|
||||
|
||||
; new image has empty metadata string
|
||||
(assert `(string=?
|
||||
(car (pika-image-get-metadata ,testImage))
|
||||
""))
|
||||
|
||||
; has an effective color profile
|
||||
(assert `(pika-image-get-effective-color-profile ,testImage))
|
||||
|
||||
|
||||
|
||||
; new image has no associated files
|
||||
|
||||
; GFile is string in ScriptFu
|
||||
|
||||
; no file, xcf file, imported file, or exported file
|
||||
(assert `(string=? (car (pika-image-get-file ,testImage)) ""))
|
||||
(assert `(string=? (car (pika-image-get-xcf-file ,testImage)) ""))
|
||||
(assert `(string=? (car (pika-image-get-imported-file ,testImage)) ""))
|
||||
(assert `(string=? (car (pika-image-get-exported-file ,testImage)) ""))
|
||||
|
||||
|
||||
|
||||
; Test delete method.
|
||||
; !!! ID 1 is no longer valid
|
||||
|
||||
; method delete succeeds on new image
|
||||
; returns 1 for true. FUTURE returns #t
|
||||
(assert `(car (pika-image-delete ,testImage)))
|
||||
|
||||
; ensure id invalid for deleted image
|
||||
; returns 0 for false. FUTURE returns #f
|
||||
(assert `(=
|
||||
(car (pika-image-id-is-valid ,testImage))
|
||||
0))
|
||||
|
||||
; deleted image is not in pika
|
||||
; Returns (<length> #())
|
||||
; FUTURE Returns empty list `()
|
||||
(assert `(=
|
||||
(car (pika-get-images))
|
||||
0))
|
||||
; !!! This only passes when testing is from fresh Pika restart
|
||||
|
||||
|
||||
; Test abnormal args to image-new
|
||||
|
||||
|
||||
; Dimension zero yields error
|
||||
; It does NOT yield invalid ID -1
|
||||
(assert-error `(pika-image-new 0 0 RGB)
|
||||
(string-append
|
||||
"Procedure execution of pika-image-new failed on invalid input arguments: "
|
||||
"Procedure 'pika-image-new' has been called with value '0' for argument 'width' (#1, type gint)."))
|
||||
; " This value is out of range."
|
||||
|
||||
|
||||
|
||||
|
83
plug-ins/script-fu/test/tests/PDB/image/image-ops.scm
Normal file
83
plug-ins/script-fu/test/tests/PDB/image/image-ops.scm
Normal file
@ -0,0 +1,83 @@
|
||||
; Test various operations on image
|
||||
|
||||
|
||||
; setup
|
||||
(define testImage (car (pika-image-new 21 22 RGB)))
|
||||
|
||||
|
||||
; transformations
|
||||
|
||||
; flip
|
||||
(assert `(pika-image-flip ,testImage ORIENTATION-HORIZONTAL))
|
||||
(assert `(pika-image-flip ,testImage ORIENTATION-VERTICAL))
|
||||
; TODO rotate scale resize policy
|
||||
|
||||
(assert-error `(pika-image-flip ,testImage ORIENTATION-UNKNOWN)
|
||||
(string-append
|
||||
"Procedure execution of pika-image-flip failed on invalid input arguments: "
|
||||
"Procedure 'pika-image-flip' has been called with value 'PIKA_ORIENTATION_UNKNOWN'"
|
||||
" for argument 'flip-type' (#2, type PikaOrientationType). This value is out of range."))
|
||||
|
||||
; rotate
|
||||
(assert `(pika-image-rotate ,testImage ROTATE-90))
|
||||
(assert `(pika-image-rotate ,testImage ROTATE-180))
|
||||
(assert `(pika-image-rotate ,testImage ROTATE-270))
|
||||
|
||||
; scale
|
||||
; up
|
||||
(assert `(pika-image-scale ,testImage 100 100))
|
||||
|
||||
; down to min
|
||||
(assert `(pika-image-scale ,testImage 1 1))
|
||||
|
||||
; up to max
|
||||
; Performance:
|
||||
; This seems to work fast when previous scaled to 1,1
|
||||
; but then seems to slow down testing
|
||||
; unless we scale down afterwards.
|
||||
; This seems glacial if not scaled to 1,1 prior.
|
||||
(assert `(pika-image-scale ,testImage 524288 524288))
|
||||
|
||||
; down to min
|
||||
(assert `(pika-image-scale ,testImage 1 1))
|
||||
|
||||
|
||||
; policy ops
|
||||
|
||||
; 0 means non-interactive
|
||||
(assert `(pika-image-policy-color-profile ,testImage 0))
|
||||
(assert `(pika-image-policy-rotate ,testImage 0))
|
||||
|
||||
|
||||
|
||||
; freezing and unfreezing (avoid updates to dialogs)
|
||||
; Used for performance.
|
||||
(assert `(pika-image-freeze-channels ,testImage))
|
||||
(assert `(pika-image-freeze-layers ,testImage))
|
||||
(assert `(pika-image-freeze-vectors ,testImage))
|
||||
(assert `(pika-image-thaw-channels ,testImage))
|
||||
(assert `(pika-image-thaw-layers ,testImage))
|
||||
(assert `(pika-image-thaw-vectors ,testImage))
|
||||
|
||||
; clean-all makes image not dirty
|
||||
(assert `(pika-image-clean-all ,testImage))
|
||||
(assert `(=
|
||||
(car (pika-image-is-dirty ,testImage))
|
||||
0))
|
||||
|
||||
; TODO test flatten is effective
|
||||
; crop
|
||||
|
||||
|
||||
; painting ops
|
||||
; TODO
|
||||
; heal
|
||||
; erase
|
||||
; smudge
|
||||
; pencil
|
||||
; clone
|
||||
; airbrush
|
||||
|
||||
; cannot flatten empty image
|
||||
(assert-error `(pika-image-flatten ,testImage)
|
||||
"Procedure execution of pika-image-flatten failed: Cannot flatten an image without any visible layer.")
|
55
plug-ins/script-fu/test/tests/PDB/image/image-precision.scm
Normal file
55
plug-ins/script-fu/test/tests/PDB/image/image-precision.scm
Normal file
@ -0,0 +1,55 @@
|
||||
; test Image precision methods of PDB
|
||||
|
||||
; Using numeric equality operator '=' on numeric ID's
|
||||
|
||||
|
||||
; setup
|
||||
|
||||
(define testImage (car (pika-image-new 21 22 RGB)))
|
||||
|
||||
|
||||
; Basic precision tests
|
||||
|
||||
; method get_precision on new image yields PRECISION-U8-NON-LINEAR 150
|
||||
(assert `(=
|
||||
(car (pika-image-get-precision ,testImage))
|
||||
PRECISION-U8-NON-LINEAR ))
|
||||
|
||||
|
||||
|
||||
; Convert precision
|
||||
|
||||
; method convert-precision yields true, with side effect on image
|
||||
(assert `(car (pika-image-convert-precision
|
||||
,testImage
|
||||
PRECISION-U8-LINEAR)))
|
||||
|
||||
|
||||
; converted image is the precision
|
||||
(assert `(=
|
||||
(car (pika-image-get-precision ,testImage))
|
||||
PRECISION-U8-LINEAR ))
|
||||
|
||||
; converting to the same precision yields error message
|
||||
(assert-error `(pika-image-convert-precision
|
||||
,testImage
|
||||
PRECISION-U8-LINEAR)
|
||||
"Procedure execution of pika-image-convert-precision failed on invalid input arguments: ")
|
||||
; "Image '[Untitled]' (2) must not be of precision 'u8-linear'"
|
||||
|
||||
|
||||
|
||||
; Indexed images precision tested elsewhere
|
||||
|
||||
|
||||
|
||||
; New with precision
|
||||
|
||||
; setup
|
||||
(define testImageWithPrecision (car (pika-image-new-with-precision 21 22 RGB PRECISION-DOUBLE-GAMMA)))
|
||||
|
||||
|
||||
; image has given precision
|
||||
(assert `(=
|
||||
(car (pika-image-get-precision ,testImageWithPrecision))
|
||||
PRECISION-DOUBLE-GAMMA ))
|
Reference in New Issue
Block a user