1
0
Fork 0
gimp/plug-ins/script-fu/test/tests/PDB/file/file.scm
Daniel Baumann 554424e00a
Adding upstream version 3.0.4.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-23 00:14:50 +02:00

169 lines
No EOL
3.9 KiB
Scheme

; Test gimp-file-<foo> PDB procedures
;
; gimp-file-load is tested elsewhere
; (gimp-file-load RUN-NONINTERACTIVE (path-to-test-images "gimp-logo.png")))
; gimp-image-thumbnail is private to libgimp
; gimp-<foo>-export is tested elsewhere
(script-fu-use-v3)
; setup
; This also tests gimp-file-load
(define testImage (testing:load-test-image-basic-v3))
(assert `(gimp-image-id-is-valid ,testImage))
(test! "get temp file name")
; this is a "file" method but name is not gimp-file- ?
(define tempFilename (gimp-temp-file "xyz"))
; The named file does not exist.
(assert `(not (file-exists? ,tempFilename)))
; The name is unique among repeated calls, but we don't test that.
(test! "load thumbnail of file")
; It is not clear whether this loads the file and creates a thumbnail,
; or finds a thumbnail stored separately, for the desktop.
; We don't do this, because the framework doesn't handle quoted lists.
; FIXME This fails with illegal function, but works in the SF Console
; (define (testThumbnail) (gimp-file-load-thumbnail (path-to-test-images "gimp-logo.png")))
; (assert `(list? ,testThumbnail))
; testThumbnail is list
(assert `(list? (gimp-file-load-thumbnail (,path-to-test-images "gimp-logo.png"))))
; first element is width, 128
; third element is 50k vector of bytes, RGB data
(test! "load layer from file")
; the image in the file becomes one layer in the image
; !!! This is rare: a PDB internal function that takes a run mode
(define testLayer (gimp-file-load-layer
RUN-NONINTERACTIVE
testImage
(path-to-test-images "gimp-logo.png")))
; testLayer is-a layer
(assert `(gimp-item-id-is-layer ,testLayer))
; it is not insert into any image yet
(test! "load layers from file")
; All the layers in the image in the file
; become multiple layers in the image.
; Note testImage only has one layer.
(define testLayers (gimp-file-load-layers
RUN-NONINTERACTIVE
testImage
(path-to-test-images "gimp-logo.png")))
; testLayers is-a vector of one
(assert `(vector? ,testLayers))
; the one layer in the vector is-a layer
(assert `(gimp-item-id-is-layer
(vector-ref ,testLayers 0)))
; it is not insert into any image yet
(test! "create thumbnail for existing file")
; FIXME this fails for unknown reasons
; This file already has a thumbnail.
;;(assert `(gimp-file-create-thumbnail
;; ,testImage
;; (path-to-test-images "gimp-logo.png")))
(test! "create thumbnail for newly saved image")
; Thumbnails don't exist for newly created files unless you create them
(define testNewImage (gimp-image-new 21 22 RGB))
(assert `(gimp-file-save
RUN-NONINTERACTIVE
,testNewImage
"/tmp/testSaveNewImage.xcf"
-1 )) ; NULL export options
; The file does not have a thumbnail yet???
; FIXME shouldn't this call succeed instead of error?
(assert-error `(gimp-file-create-thumbnail
,testNewImage
"/tmp/testSaveNewImage.xcf")
"Procedure execution of gimp-file-create-thumbnail failed")
(test! "file save")
; The image is not dirty, but saving under a different suffix
; does write the file.
(assert `(gimp-file-save
RUN-NONINTERACTIVE
,testImage
"/tmp/testSaveImage.xcf"
-1 )) ; NULL export options
; The file exists
(assert `(file-exists? "/tmp/testSaveImage.xcf"))
; TODO test gimp-file-save on a non-dirty image
; does or does not write the file?
; Is error to omit a suffix indicating image format
(assert-error
`(gimp-file-save
RUN-NONINTERACTIVE
,testImage
"/tmp/testSaveImage"
-1 ) ; NULL export options
"Procedure execution of gimp-file-save failed: Unknown file type")
; cleanup
; Delete image but not the created file.
(gimp-image-delete testImage)
(script-fu-use-v2)