; Test methods of selection class of the PDB ; setup (define testImage (car (pika-image-new 21 22 RGB))) ; get-selection yields an ID. ; Image always yields a selection object. ; It is a singleton. (define testSelection (car (pika-image-get-selection testImage))) ; The returned ID is-a Selection (assert `(= (car (pika-item-id-is-selection ,testSelection)) 1)) ; !!! Note there is little use for a Selection instance. ; There are no methods on the class per se i.e. taking the instance ID. ; Except for methods on the superclass Item of subclass Selection. ; ; Instead the methods seem to be on an image. ; Its not clear whether changing the selection in an image ; also changes the singleton Selection instance, ; and there is no way of knowing, since the Selection instance ; has no methods. ; selection on new image is empty ; !!! Requre no prior test on this image selected ; !!! Arg is the image, not the selection object instance. (assert `(= (car (pika-selection-is-empty ,testImage)) 1)) ; selection bounds yields (1 0 0 21 22) ; First element of tuple is 0 (false) ; indicates user or program has not made selection (assert `(= (car (pika-selection-bounds ,testImage)) 0)) ; selection bounds equal bounds of image (assert `(equal? (cdr (pika-selection-bounds ,testImage)) '(0 0 21 22))) ; select all and none ; select all succeeds (assert `(pika-selection-all ,testImage)) ; !!! A selection operation does not create a new selection object ; i.e. ID is the same. ; get-selection yields same singleton on image (assert `(= (car (pika-image-get-selection ,testImage)) ,testSelection)) ; after select all, selection bound indicates selection created (assert `(= (car (pika-selection-bounds ,testImage)) 1)) ; and now is-empty is false (assert `(= (car (pika-selection-is-empty ,testImage)) 0)) ; clear and none are the synonyms ; clear does not invalidate a prior selection object ; i.e. get-selection returns same ID ; clear makes selection bounds equal entire image ; TODO ; select none succeeds (assert `(pika-selection-none ,testImage)) ; effective: is-empty is true (assert `(= (car (pika-selection-is-empty ,testImage)) 1)) ; same singleton on image exists (assert `(= (car (pika-image-get-selection ,testImage)) ,testSelection)) ; misc selection operations ; pika-selection-value ; change selection to totally new selection ; Not a function of existing selection, by color or shape. ;pika-image-select-color ; ,testImage ; CHANNEL-OP-ADD ; drawable ; "red") ; pika-image-select-contiguous-color ; ellipse ; polygon ; rectangle ; round-rectangle ; pika-selection-float is tested elsewhere ; It is not an op on the selection, but an op on the image that uses the selection. ; See pika-image-floating-selection