From 77c12a205b8cd55e7affc0d8a027342f462ef15c Mon Sep 17 00:00:00 2001 From: bootchk Date: Mon, 11 Dec 2023 13:39:04 -0500 Subject: [PATCH] Add tests of PDB procedures gimp-image-set-selected-layer etc. --- plug-ins/script-fu/test/meson.build | 1 + .../tests/PDB/image/image-set-selected.scm | 110 ++++++++++++++++++ plug-ins/script-fu/test/tests/PDB/pdb.scm | 2 + 3 files changed, 113 insertions(+) create mode 100644 plug-ins/script-fu/test/tests/PDB/image/image-set-selected.scm diff --git a/plug-ins/script-fu/test/meson.build b/plug-ins/script-fu/test/meson.build index 46bab7fe3d..a8943d9f30 100644 --- a/plug-ins/script-fu/test/meson.build +++ b/plug-ins/script-fu/test/meson.build @@ -13,6 +13,7 @@ if not stable 'tests' / 'PDB' / 'image' / 'image-grayscale.scm', 'tests' / 'PDB' / 'image' / 'image-ops.scm', 'tests' / 'PDB' / 'image' / 'image-layers.scm', + 'tests' / 'PDB' / 'image' / 'image-set-selected.scm', 'tests' / 'PDB' / 'layer' / 'layer-new.scm', 'tests' / 'PDB' / 'layer' / 'layer-ops.scm', diff --git a/plug-ins/script-fu/test/tests/PDB/image/image-set-selected.scm b/plug-ins/script-fu/test/tests/PDB/image/image-set-selected.scm new file mode 100644 index 0000000000..5cf904099d --- /dev/null +++ b/plug-ins/script-fu/test/tests/PDB/image/image-set-selected.scm @@ -0,0 +1,110 @@ +; test Image set/get-selected-foo methods of PDB + +; These methods are not selecting an area in the image. +; They are selecting some of the image's objects +; in a chooser widget of the app. + +; !!! Note that user selecting drawables (e.g. layers) +; deselects any previously selected drawables (e.g. channels) +; While user can select a vectors (aka path) concurrently with a drawable. + +; Test getter right after setter. +; Test that the ID is the same as passed to setter. +; !!! Also test what should be deselected in some cases. + +; setup + +;(define testImage (car (gimp-image-new 21 22 RGB))) + +; Load test image that already has drawable +(define testImage (testing:load-test-image "wilber.png")) + +(define testLayers (cadr (gimp-image-get-layers testImage ))) +; assert testLayers is-a vector of length one +(define testLayer (vector-ref testLayers 0)) + +; create test channel +; The test image has no channels (RGB are not considered channels.) +(define testChannel (car (gimp-channel-new + testImage ; image + 23 24 ; width, height + "Test Channel" ; name + 50.0 ; opacity + "red" ))) ; compositing color +; a new channel is not in the image until added +(gimp-image-insert-channel testImage testChannel) +; get a vector that only has the new channel +(define testChannels (cadr (gimp-image-get-channels testImage ))) + +; create test path +(define testPath (car (gimp-vectors-new + testImage + "Test Path"))) +(gimp-image-insert-vectors testImage testPath 0 0) +(define testVectors (cadr (gimp-image-get-vectors testImage ))) + + + +; basic tests that void methods succeed +; when passed a non-empty list of objects + +; layer +(assert `(gimp-image-set-selected-layers + ,testImage + 1 ,testLayers )) +; effective: one layer is selected +(assert `(= (car (gimp-image-get-selected-layers ,testImage)) + 1)) +; effective: selected layer is the one we just selected +(assert `(= (vector-ref (cadr (gimp-image-get-selected-layers ,testImage)) 0) + ,testLayer)) + + + +; channel +(assert `(gimp-image-set-selected-channels + ,testImage + 1 ,testChannels )) +; effective: one channel is selected +(assert `(= (car (gimp-image-get-selected-channels ,testImage)) + 1)) +; effective: selected channel is the one we just selected +(assert `(= (vector-ref (cadr (gimp-image-get-selected-channels ,testImage)) 0) + ,testChannel)) +; !!! Selecting a channel deselects previously selected layer +(assert `(= (car (gimp-image-get-selected-layers ,testImage)) + 0)) + + +; vectors +; Fails: see #10188 +(assert `(gimp-image-set-selected-vectors + ,testImage + 1 ,testVectors )) +; TODO test effective +; TODO selecting a vectors does not deselect previously selected channel + + +; The generic getter get-selected-drawables +; Returns a homogenous vector of previously selected channels. +(assert `(= (vector-ref (cadr (gimp-image-get-selected-drawables ,testImage)) 0) + ,testChannel)) + + +; TODO test floating layer??? +; The docs mention failing, test what the docs say. + + +; illegal to pass empty vector to getter +(assert-error `(gimp-image-set-selected-layers + ,testImage + 0 #() ) + "Invalid value for argument 2") +(assert-error `(gimp-image-set-selected-channels + ,testImage + 0 #() ) + "Invalid value for argument 2") +(assert-error `(gimp-image-set-selected-vectors + ,testImage + 0 #() ) + "Invalid value for argument 2") \ No newline at end of file diff --git a/plug-ins/script-fu/test/tests/PDB/pdb.scm b/plug-ins/script-fu/test/tests/PDB/pdb.scm index 6e87e58c99..6aa19ad4d2 100644 --- a/plug-ins/script-fu/test/tests/PDB/pdb.scm +++ b/plug-ins/script-fu/test/tests/PDB/pdb.scm @@ -15,6 +15,8 @@ (testing:load-test "image-grayscale.scm") (testing:load-test "image-ops.scm") (testing:load-test "image-layers.scm") +(testing:load-test "image-set-selected.scm") + (testing:load-test "layer-new.scm") (testing:load-test "layer-ops.scm")