diff --git a/extra/images/gif/gif-tests.factor b/extra/images/gif/gif-tests.factor index 609f98c693..b62565ffbc 100644 --- a/extra/images/gif/gif-tests.factor +++ b/extra/images/gif/gif-tests.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors bitstreams compression.lzw-gif images.gif io io.encodings.binary io.files kernel math math.bitwise -math.parser namespaces prettyprint sequences tools.test ; +math.parser namespaces prettyprint sequences tools.test images.viewer ; QUALIFIED-WITH: bitstreams bs IN: images.gif.tests @@ -10,10 +10,10 @@ IN: images.gif.tests binary [ input-stream get load-gif ] with-file-reader ; : gif-example1 ( -- loading-gif ) - "resource:extra/images/testing/symbol-word.gif" path>gif ; + "resource:extra/images/testing/circle.gif" path>gif ; : gif-example2 ( -- loading-gif ) - "resource:extra/images/testing/check-256-colors.gif" path>gif ; + "resource:extra/images/testing/checkmark.gif" path>gif ; : gif-example3 ( -- loading-gif ) "resource:extra/images/testing/monochrome.gif" path>gif ; @@ -21,8 +21,21 @@ IN: images.gif.tests : gif-example4 ( -- loading-gif ) "resource:extra/images/testing/noise.gif" path>gif ; +: gif-example5 ( -- loading-gif ) + "resource:extra/images/testing/alpha.gif" path>gif ; + +: gif-example6 ( -- loading-gif ) + "resource:extra/images/testing/astronaut_animation.gif" path>gif ; + +: gif-all. ( -- ) + { + gif-example1 gif-example2 gif-example3 gif-example4 gif-example5 + gif-example6 + } + [ execute( -- gif ) loading-gif>image image. ] each ; + : declared-num-colors ( gif -- n ) flags>> 3 bits 1 + 2^ ; -: actual-num-colors ( gif -- n ) global-color-table>> length 3 /i ; +: actual-num-colors ( gif -- n ) global-color-table>> length ; [ 16 ] [ gif-example1 actual-num-colors ] unit-test [ 16 ] [ gif-example1 declared-num-colors ] unit-test @@ -49,4 +62,34 @@ IN: images.gif.tests } ] [ gif-example3 >index-stream ] unit-test +[ + B{ + 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 + 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 + 0 0 0 255 0 0 0 255 255 255 255 255 255 255 255 255 0 0 0 255 0 0 0 255 + 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255 + 0 0 0 255 255 255 255 255 0 0 0 255 0 0 0 255 255 255 255 255 0 0 0 255 + 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 + } +] [ gif-example3 loading-gif>image bitmap>> ] unit-test +[ + BV{ + 0 1 + 1 0 + } +] [ gif-example5 >index-stream ] unit-test + +[ + B{ + 255 000 000 255 000 000 000 000 + 000 000 000 000 255 000 000 255 + } +] [ gif-example5 loading-gif>image bitmap>> ] unit-test + +[ 100 ] [ gif-example1 >index-stream length ] unit-test +[ 870 ] [ gif-example2 >index-stream length ] unit-test +[ 16384 ] [ gif-example4 >index-stream length ] unit-test + +! example6 is a GIF animation and the first frame contains 1768 pixels +[ 1768 ] [ gif-example6 >index-stream length ] unit-test diff --git a/extra/images/testing/alpha.gif b/extra/images/testing/alpha.gif new file mode 100644 index 0000000000..c4c38bdaf0 Binary files /dev/null and b/extra/images/testing/alpha.gif differ diff --git a/extra/images/testing/astronaut_animation.gif b/extra/images/testing/astronaut_animation.gif new file mode 100644 index 0000000000..8c768480fe Binary files /dev/null and b/extra/images/testing/astronaut_animation.gif differ diff --git a/extra/images/testing/check-256-colors.gif b/extra/images/testing/checkmark.gif similarity index 100% rename from extra/images/testing/check-256-colors.gif rename to extra/images/testing/checkmark.gif diff --git a/extra/images/testing/symbol-word.gif b/extra/images/testing/circle.gif similarity index 100% rename from extra/images/testing/symbol-word.gif rename to extra/images/testing/circle.gif