giflib Validation
Port build from safelibs/port-giflib at commit 726b13f2a3c5 (release build-726b13f2a3c5)
Tests
gif2rgb RGB conversion Original / giflib / gif2rgb-conversion Passed
gifbuild textual round trip Original / giflib / gifbuild-roundtrip Passed
giftext metadata inspection Original / giflib / giftext-metadata Passed
Interlaced GIF fixture handling Original / giflib / interlaced-fixture-handling Passed
Malformed GIF rejection Original / giflib / malformed-gif-rejection Passed
giftext fire image marker Original / giflib / usage-giflib-tools-batch11-fire-image-marker Passed
gif2rgb fire equal planar channels Original / giflib / usage-giflib-tools-batch11-fire-planar-equal-channels Passed
gifbuild fire RGB parity Original / giflib / usage-giflib-tools-batch11-gifbuild-fire-rgb-compare Passed
gifclrmp treescap rows Original / giflib / usage-giflib-tools-batch11-gifclrmp-treescap-row-count Passed
giffix grid RGB output Original / giflib / usage-giflib-tools-batch11-giffix-grid-rgb-output Passed
gifbuild grid dump size Original / giflib / usage-giflib-tools-batch11-grid-build-dump-size Passed
gif2rgb grid RGB byte count Original / giflib / usage-giflib-tools-batch11-grid-rgb-byte-count Passed
giftext grid screen size Original / giflib / usage-giflib-tools-batch11-grid-screen-size Passed
giftext interlaced image marker Original / giflib / usage-giflib-tools-batch11-interlaced-image-marker Passed
gif2rgb treescap RGB output Original / giflib / usage-giflib-tools-batch11-treescap-rgb-nonempty Passed
gif2rgb output size matches treescap pixel count Original / giflib / usage-giflib-tools-batch12-gif2rgb-treescap-rgb-size-equals-wxhx3 Passed
Runs gif2rgb -1 on the treescap GIF and verifies the raw RGB byte count equals width*height*3 reported by giftext.
gif2rgb treescap RGB output divides evenly by row*3 Original / giflib / usage-giflib-tools-batch12-gif2rgb-treescap-row-stride Passed
Runs gif2rgb -1 on the treescap GIF and confirms the RGB byte count is an exact multiple of the screen width times 3 (row-stride invariant).
gifbuild -d emits screen width and height for fire Original / giflib / usage-giflib-tools-batch12-gifbuild-fire-version-line Passed
Runs gifbuild -d on the fire fixture and verifies the textual dump contains "screen width" and "screen height" header lines.
gifbuild treescap dump-then-build is byte-stable on second pass Original / giflib / usage-giflib-tools-batch12-gifbuild-treescap-roundtrip-byte-equal Passed
Dumps treescap GIF with gifbuild -d, builds it back, dumps and rebuilds again, and confirms two consecutive rebuilt GIFs are byte identical.
gifclrmp -s on fire dumps 256-entry palette Original / giflib / usage-giflib-tools-batch12-gifclrmp-fire-dump-palette-count Passed
Runs gifclrmp -s on the fire fixture and verifies the dumped palette has exactly 256 entries (one per color slot).
giffix produces a recognizable GIF from a clean source Original / giflib / usage-giflib-tools-batch12-giffix-fire-passthrough Passed
Runs giffix on a non-interlaced fixture and verifies the output is a non-empty file that the file(1) magic database recognizes as GIF image data.
giftext reports treescap screen size Original / giflib / usage-giflib-tools-batch12-giftext-treescap-screen-size Passed
Runs giftext on the treescap GIF and confirms the screen size header line is present in the output.
giftool -x 3 sets disposal mode to restore-previous Original / giflib / usage-giflib-tools-batch12-giftool-disposal-mode-three Passed
Applies giftool -x 3 (restore-previous disposal mode) to fire.gif and verifies gifbuild dump shows "disposal mode 3" on every graphics control extension.
giftool -p 0,0 sets origin position Original / giflib / usage-giflib-tools-batch12-giftool-set-position-zero-zero Passed
Runs giftool with -p 0,0 on the fire GIF and verifies the resulting GIF still parses with file(1) and gifbuild dump shows the position.
giftool -s 200,100 sets logical screen size Original / giflib / usage-giflib-tools-batch12-giftool-set-screen-200x100 Passed
Applies giftool -s 200,100 to fire.gif and verifies gifbuild dump reports "screen width 200" and "screen height 100".
gif2rgb 2x2 four-pixel RGB roundtrip Original / giflib / usage-giflib-tools-gif2rgb-2x2-rgb-roundtrip Passed
Synthesizes a deterministic 12-byte RGB stream representing four distinct pixels, encodes it into a 2x2 GIF with gif2rgb -s 2 2, decodes the GIF back to RGB with gif2rgb -1, and verifies the decoded stream is exactly 12 bytes and that giftext reports a 2x2 logical screen for the encoded GIF.
giflib-tools gif2rgb convert Original / giflib / usage-giflib-tools-gif2rgb-convert Passed
gif2rgb 1x1 RGB roundtrip Original / giflib / usage-giflib-tools-gif2rgb-encode-1x1 Passed
Synthesizes a 3-byte RGB triplet, encodes it into a 1x1 GIF with gif2rgb -s, decodes the GIF back to RGB, and verifies the decoded stream is exactly three bytes wide and tall and that giftext reports a 1x1 logical screen.
gif2rgb fire output is an exact integer number of frame bytes Original / giflib / usage-giflib-tools-gif2rgb-fire-bytes-frame-multiple Passed
Decodes the multi-frame fire.gif with gif2rgb -1 into a single RGB stream and verifies the byte count is exactly width*height*3 multiplied by an integer between 1 and the frame count reported by gifbuild, ensuring gif2rgb is emitting whole frames worth of pixel data with no slack.
gif2rgb fire RGB compare Original / giflib / usage-giflib-tools-gif2rgb-fire-compare Passed
giflib-tools gif2rgb fire fixture Original / giflib / usage-giflib-tools-gif2rgb-fire-fixture Passed
gif2rgb fire interleaved frame window size Original / giflib / usage-giflib-tools-gif2rgb-fire-frame-n-window Passed
Decodes the multi-frame fire.gif with gif2rgb -1 into a single composited RGB stream and verifies the byte size matches exactly width*height*3 for one composed frame, with at least one non-zero pixel byte present, exercising the gif2rgb interleaved decode path.
gif2rgb fire output spans at least one full frame Original / giflib / usage-giflib-tools-gif2rgb-fire-frames-byte-floor Passed
Decodes the largest fixture fire.gif with gif2rgb -1, reads its width and height from giftext, and asserts the produced RGB byte stream contains at least one full frame worth of pixels (width*height*3 bytes) and is an exact multiple of the per-row stride.
gif2rgb planar decode of fire animation produces distinct R and B channels Original / giflib / usage-giflib-tools-gif2rgb-fire-middle-frame Passed
Decodes fire.gif using gif2rgb -o (planar RGB output) and confirms the resulting per-channel R, G, and B files each have width*height bytes, contain at least one non-zero byte, and that the R channel differs from the B channel for the rendered fire palette.
gif2rgb fire planar sizes Original / giflib / usage-giflib-tools-gif2rgb-fire-planar-size Passed
Converts the fire fixture to planar RGB output with gif2rgb and verifies all three channel files have equal non-zero size.
gif2rgb fire planar output Original / giflib / usage-giflib-tools-gif2rgb-fire-planar Passed
gif2rgb fire RGB bytes Original / giflib / usage-giflib-tools-gif2rgb-fire-rgb-bytes Passed
Converts the fire.gif fixture to an RGB byte stream with gif2rgb and verifies that non-empty RGB output is produced.
gif2rgb fire RGB output is a multiple of width*3 Original / giflib / usage-giflib-tools-gif2rgb-fire-row-stride Passed
Decodes the multi-frame fire.gif into a packed RGB stream with gif2rgb -1, reads the logical screen width from giftext, and asserts the produced RGB byte count is an exact multiple of width*3 so every emitted scanline is fully populated.
gif2rgb fire RGB size Original / giflib / usage-giflib-tools-gif2rgb-fire-size Passed
gif2rgb grid planar equal channels Original / giflib / usage-giflib-tools-gif2rgb-grid-planar-equal-channels Passed
Decodes gifgrid.gif with gif2rgb planar output and verifies that the R, G, and B planes have equal nonzero byte sizes.
gif2rgb grid planar size Original / giflib / usage-giflib-tools-gif2rgb-grid-planar-size Passed
Converts gifgrid.gif to planar RGB files with gif2rgb and verifies the three color planes have matching nonzero sizes.
gif2rgb grid planar output Original / giflib / usage-giflib-tools-gif2rgb-grid-planar Passed
gif2rgb grid RGB output Original / giflib / usage-giflib-tools-gif2rgb-grid-rgb Passed
gif2rgb -1 stream output for gifgrid matches width times height times three Original / giflib / usage-giflib-tools-gif2rgb-grid-stream-mode-size Passed
Decodes gifgrid.gif with gif2rgb -1 into a single concatenated RGB byte stream, parses the screen width and height from giftext, and asserts the resulting file is exactly width*height*3 bytes long, validating the single-frame stream-mode pixel budget.
gif2rgb interlaced planar output Original / giflib / usage-giflib-tools-gif2rgb-interlaced-planar Passed
gif2rgb interlaced RGB bytes Original / giflib / usage-giflib-tools-gif2rgb-interlaced-rgb-bytes Passed
Converts the interlaced treescap fixture to an RGB byte stream with gif2rgb and verifies that non-empty RGB output is produced.
gif2rgb interlaced conversion Original / giflib / usage-giflib-tools-gif2rgb-interlaced Passed
giflib-tools gif2rgb planar output Original / giflib / usage-giflib-tools-gif2rgb-planar Passed
Converts a GIF fixture into separate RGB planes with gif2rgb and verifies all channel files are produced.
gif2rgb -c 16 -o writes three equal-size R/G/B planes for fire.gif Original / giflib / usage-giflib-tools-gif2rgb-quantize-planar-equal-bytes Passed
Runs gif2rgb -c 16 -o <prefix> on fire.gif (without -1) and verifies the tool emits exactly three planar files (.R, .G, .B) each with byte count equal to width*height (1800 for 30x60), exercising the color-quantization path that is otherwise untested in usage coverage.
gif2rgb -c 4 -1 -o produces a single concatenated RGB stream of W*H*3 bytes Original / giflib / usage-giflib-tools-gif2rgb-quantize-stream-byte-count Passed
Runs gif2rgb -c 4 -1 -o <file> on fire.gif and verifies that exactly one output file is produced (no .R/.G/.B planar split) whose byte count equals width*height*3 = 5400, anchoring the quantize+stream combination of flags.
gif2rgb -s converts RGB stream back to GIF Original / giflib / usage-giflib-tools-gif2rgb-rgb-to-gif-roundtrip Passed
Decodes a fixture to raw RGB triplets, then uses gif2rgb -s to encode that stream back into a GIF whose dimensions and decoded byte count match the original.
gif2rgb treescap RGB byte count equals width*height*3 Original / giflib / usage-giflib-tools-gif2rgb-treescap-pixel-count Passed
Decodes treescap.gif into a packed RGB byte stream with gif2rgb -1, parses width and height from giftext, and asserts the produced RGB output is exactly width*height*3 bytes long.
gif2rgb planar channel sizes equal width*height for treescap Original / giflib / usage-giflib-tools-gif2rgb-treescap-planar-channel-bytes Passed
Decodes treescap.gif into separate R/G/B planar files with gif2rgb -o, queries the screen size with giftext, and verifies each of the three channel files is exactly width*height bytes long, matching the structural invariant that planar output emits one byte per pixel per channel.
gif2rgb treescap planar output Original / giflib / usage-giflib-tools-gif2rgb-treescap-planar Passed
Converts the treescap fixture to planar RGB output with gif2rgb and verifies the three channel files exist.
gif2rgb treescap interlaced rgb compare Original / giflib / usage-giflib-tools-gif2rgb-treescap-rgb-compare Passed
Decodes treescap-interlaced.gif with gif2rgb -1 and verifies the RGB output bytes match the recorded fixture.
gif2rgb treescap RGB size Original / giflib / usage-giflib-tools-gif2rgb-treescap-rgb-size Passed
Converts treescap.gif to packed RGB output with gif2rgb and verifies the emitted byte stream is nonempty.
gifbuild dump build dump is byte-stable Original / giflib / usage-giflib-tools-gifbuild-double-roundtrip-stable Passed
Dumps a GIF with gifbuild -d, rebuilds the binary GIF, dumps it again, and verifies that the second textual dump is byte-identical to the first to confirm the gifbuild text format is a stable fixed point.
giflib-tools gifbuild dump Original / giflib / usage-giflib-tools-gifbuild-dump Passed
gifbuild fire dump build dump is byte-stable Original / giflib / usage-giflib-tools-gifbuild-fire-double-roundtrip Passed
Dumps the animated fire.gif with gifbuild -d, rebuilds the binary GIF, dumps it again, strips the source-filename comments, and verifies the two structural dumps are byte-identical and contain the expected screen width header.
gifbuild fire dump lines Original / giflib / usage-giflib-tools-gifbuild-fire-dump-lines Passed
gifbuild fire extension records Original / giflib / usage-giflib-tools-gifbuild-fire-extension-lines Passed
Dumps the animated fire.gif with gifbuild -d and verifies the textual description contains the multiple per-frame image-block headers emitted for an animated GIF.
gifbuild dump emits exactly one graphics control per fire frame Original / giflib / usage-giflib-tools-gifbuild-fire-gcb-frame-equal Passed
Dumps the animated fire.gif with gifbuild -d and asserts the count of "graphics control" extension blocks is exactly equal to the count of "image # N" headers, cross-verifying the frame count against giftool -f, so we are confirming a strict 1:1 pairing rather than just the presence of GCBs.
gifbuild dump pairs a graphics control with each animated frame Original / giflib / usage-giflib-tools-gifbuild-fire-gcb-precedes-image Passed
Dumps the animated fire.gif with gifbuild -d, scans the textual record stream, and asserts that every "image # N" header has a "graphics control" block emitted ahead of it, confirming gifbuild reports the per-frame timing extension on a real animation rather than just the global header.
gifbuild dump frame count matches giftext Original / giflib / usage-giflib-tools-gifbuild-fire-image-frame-count Passed
Counts the per-frame image headers gifbuild -d emits for fire.gif and asserts the count agrees with the number of Image # records giftext reports for the same animated input.
gifbuild fire roundtrip colormap Original / giflib / usage-giflib-tools-gifbuild-fire-roundtrip-colormap Passed
Dumps and rebuilds the fire fixture with gifbuild and verifies the rebuilt GIF still exposes a color map through gifclrmp.
gifbuild fire roundtrip screen size Original / giflib / usage-giflib-tools-gifbuild-fire-roundtrip-screen-size Passed
Roundtrips fire.gif through gifbuild dump and rebuild, then verifies that the rebuilt giftext output reports Screen Size.
gifbuild fire round trip Original / giflib / usage-giflib-tools-gifbuild-fire-roundtrip Passed
gifbuild grid dump Original / giflib / usage-giflib-tools-gifbuild-grid-dump Passed
gifbuild rebuilt gifgrid.gif still terminates with 0x3b Original / giflib / usage-giflib-tools-gifbuild-grid-rebuilt-trailer-byte Passed
Dumps gifgrid.gif via gifbuild -d, rebuilds it through gifbuild, and asserts the rebuilt stream is a recognized GIF whose final byte is the mandatory 0x3b trailer marker, complementing the existing trailer check on treescap.
gifbuild grid round trip color map Original / giflib / usage-giflib-tools-gifbuild-grid-roundtrip-colormap Passed
gifbuild grid roundtrip screen Original / giflib / usage-giflib-tools-gifbuild-grid-roundtrip-screen Passed
Dumps gifgrid.gif to gifbuild text, rebuilds it, and verifies screen metadata from the rebuilt GIF.
gifbuild grid round trip Original / giflib / usage-giflib-tools-gifbuild-grid-roundtrip Passed
Dumps and rebuilds gifgrid.gif with gifbuild and verifies the rebuilt GIF metadata remains readable.
gifbuild interlace flag dump Original / giflib / usage-giflib-tools-gifbuild-interlace-flag Passed
Dumps plain and interlaced treescap fixtures with gifbuild and verifies only the interlaced dump reports the interlace flag.
gifbuild interlaced dump Original / giflib / usage-giflib-tools-gifbuild-interlaced-dump Passed
gifbuild interlaced round trip Original / giflib / usage-giflib-tools-gifbuild-interlaced-roundtrip Passed
Dumps and rebuilds the interlaced treescap fixture with gifbuild and verifies the rebuilt GIF metadata.
giflib-tools gifbuild roundtrip Original / giflib / usage-giflib-tools-gifbuild-roundtrip Passed
Dumps a GIF fixture to gifbuild text and rebuilds it to verify the client can round trip image structure.
gifbuild dump records fire screen dimensions Original / giflib / usage-giflib-tools-gifbuild-screen-size-line Passed
Dumps fire.gif with gifbuild -d and verifies the screen width and height keywords in the textual description match the known 30x60 logical screen of the fixture.
gifbuild rebuild ends with GIF trailer byte Original / giflib / usage-giflib-tools-gifbuild-trailer-byte Passed
Rebuilds a GIF from a gifbuild text dump and verifies that the final byte of the encoded output is 0x3B, the mandatory GIF stream trailer.
gifbuild treescap dump Original / giflib / usage-giflib-tools-gifbuild-treescap-dump Passed
gifbuild dump on treescap-interlaced has matching image and screen records Original / giflib / usage-giflib-tools-gifbuild-treescap-interlaced-dump-counts Passed
Dumps the treescap-interlaced.gif fixture with gifbuild -d and asserts the dump contains exactly one screen-width record, exactly one image header line, an image with a non-zero bits-per-pixel record, and concludes with the trailer keyword, exercising gifbuild's structural rendering of a single-frame interlaced fixture.
gifbuild treescap roundtrip color map Original / giflib / usage-giflib-tools-gifbuild-treescap-roundtrip-colormap Passed
Roundtrips treescap.gif through gifbuild dump and rebuild, then verifies that gifclrmp on the rebuilt gif emits a palette row.
gifbuild dump line count is identical before and after a roundtrip Original / giflib / usage-giflib-tools-gifbuild-treescap-roundtrip-line-parity Passed
Dumps treescap.gif with gifbuild -d, rebuilds the GIF from that dump by piping it back through gifbuild, dumps the rebuilt GIF a second time, and asserts the two textual descriptions have identical line counts and identical numbers of "image # N" headers and "terminator" markers, confirming that the dump-build-dump cycle is line-parity stable.
gifbuild treescap roundtrip screen Original / giflib / usage-giflib-tools-gifbuild-treescap-roundtrip-screen Passed
Dumps treescap.gif to gifbuild text, rebuilds it, and verifies screen metadata from the rebuilt GIF.
gifbuild treescap round trip Original / giflib / usage-giflib-tools-gifbuild-treescap-roundtrip Passed
gifbuild dump terminates with the trailer record Original / giflib / usage-giflib-tools-gifbuild-treescap-trailer-line Passed
Dumps treescap.gif with gifbuild -d and asserts the textual dump terminates with the GIF stream trailer record gifbuild emits at end-of-file, ensuring the dump is structurally complete and not truncated mid-record.
gifclrmp dump and -l reload roundtrip Original / giflib / usage-giflib-tools-gifclrmp-dump-reload-roundtrip Passed
Dumps the global color map with gifclrmp, reloads it via gifclrmp -l, and confirms the dumped map is identical after the round trip.
gifclrmp gamma transform preserves fire.gif frame count Original / giflib / usage-giflib-tools-gifclrmp-fire-frame-count-preserved Passed
Applies a gamma colormap transform via gifclrmp -g 1.5 to the multi-frame fire.gif fixture, then counts the image records emitted by gifbuild -d on the transformed stream and asserts the count matches the source animation, ensuring the colormap rewrite leaves the frame structure intact.
gifclrmp -s dumps the global colormap of fire.gif Original / giflib / usage-giflib-tools-gifclrmp-fire-image-select Passed
Runs gifclrmp -s on the multi-frame fire.gif to dump its global colormap as text and verifies the dump contains at least two palette rows whose first row parses as "<index> <r> <g> <b>" with r,g,b in [0,255], confirming gifclrmp produces a well-formed palette dump for a multi-frame GIF.
gifclrmp fire palette row Original / giflib / usage-giflib-tools-gifclrmp-fire-palette-row Passed
Prints the fire.gif color map with gifclrmp and verifies that at least one palette row is emitted.
gifclrmp fire palette Original / giflib / usage-giflib-tools-gifclrmp-fire Passed
gifclrmp -g applies a gamma transform to the palette Original / giflib / usage-giflib-tools-gifclrmp-grid-gamma-palette Passed
Dumps the gifgrid.gif palette with gifclrmp -s as a baseline, applies a non-trivial gamma value with gifclrmp -g 2.2 to produce a transformed GIF, dumps that GIF's palette, and verifies the row count is preserved while at least one channel value in the palette has changed, demonstrating gifclrmp performed a real per-channel transformation rather than a no-op copy.
gifclrmp -l swaps the gifgrid palette with one dumped from fire Original / giflib / usage-giflib-tools-gifclrmp-grid-load-fire-palette Passed
Dumps the fire.gif color map with gifclrmp -s, applies that palette to gifgrid.gif via gifclrmp -l, and confirms the resulting GIF reports a colormap whose first content row matches the fire palette row, exercising a cross-fixture palette transplant.
gifclrmp grid palette row Original / giflib / usage-giflib-tools-gifclrmp-grid-palette-row Passed
Prints the gifgrid.gif color map with gifclrmp and verifies that at least one palette row is emitted.
gifclrmp -l reloads a modified palette Original / giflib / usage-giflib-tools-gifclrmp-grid-reload-modified Passed
Dumps the gifgrid.gif color map with gifclrmp -s, edits one palette row to a known RGB triple, reloads that palette with gifclrmp -l, and confirms the reloaded GIF round-trips through gifclrmp -s yielding the modified row verbatim.
gifclrmp grid palette Original / giflib / usage-giflib-tools-gifclrmp-grid Passed
gifclrmp -i 5 -g rewrites only image #5 while -g alone rewrites the whole map Original / giflib / usage-giflib-tools-gifclrmp-image-index-vs-global Passed
Applies the same gamma value via gifclrmp twice on fire.gif -- once globally with -g 0.5 and once scoped to a single frame with -i 5 -g 0.5 -- and verifies the two outputs differ from each other and from the original, that both remain parseable GIFs with the original frame count and screen size, anchoring the per-image scoping behavior of -i.
gifclrmp interlaced fixture Original / giflib / usage-giflib-tools-gifclrmp-interlaced Passed
Prints the color map for the interlaced treescap fixture with gifclrmp and verifies a palette row is emitted.
giflib-tools gifclrmp map Original / giflib / usage-giflib-tools-gifclrmp-map Passed
gifclrmp -s on treescap-interlaced emits a power-of-two palette Original / giflib / usage-giflib-tools-gifclrmp-treescap-interlaced-palette-shape Passed
Dumps the global color map of the treescap-interlaced.gif fixture with gifclrmp -s, asserts the row count is one of the GIF-permitted palette sizes (2, 4, 8, 16, 32, 64, 128 or 256), and verifies every dump line matches the expected "index R G B" four-token shape with each channel a 0-255 byte.
gifclrmp treescap colormap Original / giflib / usage-giflib-tools-gifclrmp-treescap Passed
giflib-tools giffix copy Original / giflib / usage-giflib-tools-giffix-copy Passed
giffix recovers from a flipped byte after the GIF trailer Original / giflib / usage-giflib-tools-giffix-corrupt-extension-byte Passed
Copies treescap.gif, flips a single byte appended after the trailer to simulate corruption beyond the legitimate stream, and confirms giffix produces output that giftext can still parse, demonstrating that a stray post-trailer byte does not derail the recovery path.
giffix strips trailing junk bytes after a GIF trailer Original / giflib / usage-giflib-tools-giffix-corrupt-gcb-byte Passed
Appends 96 zero bytes after the canonical 0x3B trailer of a copy of treescap.gif to simulate trailing garbage, runs giffix on the dirty stream, and verifies the recovered output is recognized as GIF data, ends with the canonical 0x3B trailer byte, and parses through giftext.
giffix on already-clean treescap.gif preserves giftext metadata Original / giflib / usage-giflib-tools-giffix-fire-clean-idempotent Passed
Pipes the already-well-formed treescap.gif fixture through giffix and asserts the giftext header decoding (screen size, GIF version) of the giffix output matches the source, demonstrating giffix is a no-op-equivalent on healthy non-interlaced inputs.
giffix giftext output Original / giflib / usage-giflib-tools-giffix-fire-giftext Passed
giffix fire screen size Original / giflib / usage-giflib-tools-giffix-fire-screen-size Passed
Repairs fire.gif with giffix and verifies that giftext on the fixed gif still reports Screen Size.
giffix grid color map Original / giflib / usage-giflib-tools-giffix-grid-colormap Passed
giffix grid screen header Original / giflib / usage-giflib-tools-giffix-grid-screen Passed
Runs giffix on the grid fixture and verifies the repaired GIF still exposes screen metadata through giftext.
giffix grid copy Original / giflib / usage-giflib-tools-giffix-grid Passed
giffix color map Original / giflib / usage-giflib-tools-giffix-interlaced-colormap Passed
giffix interlaced fixture Original / giflib / usage-giflib-tools-giffix-interlaced Passed
Repairs the interlaced treescap fixture with giffix and verifies the fixed GIF remains readable by giftext.
giffix trims 256-byte trailing tail Original / giflib / usage-giflib-tools-giffix-large-trailing-junk Passed
Appends 256 deterministic junk bytes after the GIF trailer of fire.gif, runs giffix on the dirty stream, and confirms the repaired output is no larger than the original byte count and still parses through giftext.
giffix tolerates trailing garbage Original / giflib / usage-giflib-tools-giffix-trailing-junk Passed
Appends 16 bytes of garbage after the GIF trailer and confirms giffix produces output that giftext still parses, demonstrating the recovery path is not derailed by stray trailing bytes.
giffix treescap colormap Original / giflib / usage-giflib-tools-giffix-treescap-colormap Passed
Runs giffix on the treescap fixture and verifies the fixed GIF still exposes a color map through gifclrmp.
giffix treescap screen size Original / giflib / usage-giflib-tools-giffix-treescap-screen-size Passed
Repairs the treescap.gif fixture with giffix and verifies that giftext can still read screen metadata from the result.
giffix treescap copy Original / giflib / usage-giflib-tools-giffix-treescap Passed
giffix tolerates trailing junk after GIF trailer Original / giflib / usage-giflib-tools-giffix-truncated-trailer Passed
Appends junk bytes after the GIF trailer of a fixture, runs giffix to clean the stream, and confirms giftext can still parse the screen descriptor on the repaired output.
giffix -v on a clean non-interlaced fixture matches the bare giffix output Original / giflib / usage-giflib-tools-giffix-verbose-flag-noninterlaced Passed
Runs giffix with and without -v on the non-interlaced gifgrid.gif fixture, captures stdout, stderr and exit code for each, and verifies both invocations succeed (exit 0), produce byte-identical stdout, and write nothing to stderr -- confirming the -v flag is silent on a fixture that needs no repair narration.
giffix removes zero-bytes appended after the GIF trailer Original / giflib / usage-giflib-tools-giffix-zeroed-trailer Passed
Copies treescap.gif, appends 64 zero bytes after the canonical 0x3B trailer so the stream has trailing garbage past the terminator, runs giffix on the dirty file, and verifies the repaired output is recognized as GIF data, ends with the canonical 0x3B trailer, and parses through giftext.
giftext reports only the final -b after a giftool background chain Original / giflib / usage-giflib-tools-giftext-bg-chain-final-index Passed
Pipes treescap.gif through giftool -b 5, then giftool -b 9, and verifies giftext on the final stream reports BackGround = 9 with no remaining BackGround = 5 record, demonstrating that successive -b transforms overwrite the screen background field rather than accumulating.
giflib-tools giftext color map Original / giflib / usage-giflib-tools-giftext-colormap Passed
Uses giftext to dump the GIF color map from a fixture and verifies color table output is present.
giftext -e dumps GIF89 graphics control blocks with Disposal Mode lines Original / giflib / usage-giflib-tools-giftext-extension-disposal-modes Passed
Runs giftext -e on fire.gif (an animated multi-frame GIF89 fixture) and asserts the extension-block listing contains GIF89 graphics control records carrying Disposal Mode and DelayTime lines, with the Disposal Mode count matching the frame count reported by giftext on the same fixture.
giftext fire background field Original / giflib / usage-giflib-tools-giftext-fire-background Passed
giftext fire bits per pixel Original / giflib / usage-giflib-tools-giftext-fire-bits-per-pixel Passed
giftext fire color count Original / giflib / usage-giflib-tools-giftext-fire-color-count Passed
giftext fire color resolution Original / giflib / usage-giflib-tools-giftext-fire-color-resolution Passed
giftext fire color map row Original / giflib / usage-giflib-tools-giftext-fire-colormap-row Passed
Prints the fire.gif color map with giftext -c and verifies that at least one numeric palette row is emitted.
giftext fire color map Original / giflib / usage-giflib-tools-giftext-fire-colormap Passed
giftext fire GIF header Original / giflib / usage-giflib-tools-giftext-fire-header Passed
giftext fire image count Original / giflib / usage-giflib-tools-giftext-fire-image-count Passed
Dumps fire.gif with giftext and verifies image records are reported in the textual metadata output.
giftext fire emits per-frame Image headers Original / giflib / usage-giflib-tools-giftext-fire-multi-frame-headers Passed
Runs giftext on the animated fire.gif fixture and asserts more than one Image #N header is emitted with strictly increasing sequence numbers starting at 1.
giftext fire screen size Original / giflib / usage-giflib-tools-giftext-fire-screen-size Passed
giftext grid background Original / giflib / usage-giflib-tools-giftext-grid-background Passed
giftext grid bits per pixel Original / giflib / usage-giflib-tools-giftext-grid-bits-per-pixel Passed
Reads the gifgrid fixture with giftext and verifies that the bits-per-pixel metadata line is emitted.
giftext grid Global Color Map Original / giflib / usage-giflib-tools-giftext-grid-color-map Passed
Prints the gifgrid.gif color map with giftext -c and verifies that the Global Color Map heading is emitted.
giftext grid color resolution Original / giflib / usage-giflib-tools-giftext-grid-color-resolution Passed
giftext grid color map Original / giflib / usage-giflib-tools-giftext-grid-colormap Passed
giftext grid screen header Original / giflib / usage-giflib-tools-giftext-grid-screen Passed
giftext emits exactly one Image #N header for gifgrid.gif Original / giflib / usage-giflib-tools-giftext-grid-single-image-record Passed
Runs giftext on the single-frame gifgrid.gif and asserts there is exactly one Image #N record (with N starting at 1) on stdout, anchoring the headerless single-image case alongside the existing fire.gif multi-frame coverage.
giflib-tools giftext headers Original / giflib / usage-giflib-tools-giftext-headers Passed
giftext interlaced bits per pixel Original / giflib / usage-giflib-tools-giftext-interlaced-bits-per-pixel Passed
Reads treescap-interlaced.gif with giftext and verifies that the BitsPerPixel header field is emitted.
giftext interlaced color map Original / giflib / usage-giflib-tools-giftext-interlaced-colormap Passed
giflib-tools giftext interlaced fixture Original / giflib / usage-giflib-tools-giftext-interlaced-fixture Passed
giftext interlaced header Original / giflib / usage-giflib-tools-giftext-interlaced-header Passed
giftext interlaced screen size Original / giflib / usage-giflib-tools-giftext-interlaced-screen-size Passed
Reads the interlaced treescap fixture with giftext and verifies that screen-size metadata is emitted.
giftext -z dumps decompressed LZW code rows for every image Original / giflib / usage-giflib-tools-giftext-lz-codes-block Passed
Runs giftext -z on fire.gif and verifies the output contains a substantial number of decompressed-code offset rows (matching ^[0-9a-f]+: with three-digit code tokens) and ends with the standard "GIF file terminated normally." sentinel, exercising the -z decompressed-code dump mode that is otherwise uncovered.
giftext -p ends with the GIF terminated normally trailer line Original / giflib / usage-giflib-tools-giftext-pixel-mode-trailer Passed
Runs giftext -p on fire.gif to dump pixel-level information and verifies the output's final non-empty line is the literal "GIF file terminated normally." sentinel that giftext writes only when the input parsed cleanly to EOF, anchoring the pixel-dump completion behavior.
giftext describes a synthesized 1x1 GIF correctly Original / giflib / usage-giflib-tools-giftext-synth-1x1-color-count Passed
Synthesizes a single-pixel RGB triple, encodes it into a 1x1 GIF with gif2rgb -s, and asserts giftext reports the minimal screen size and the presence of an image record, exercising the giftext metadata path on the smallest possible GIF.
giftext treescap background Original / giflib / usage-giflib-tools-giftext-treescap-background Passed
giftext treescap bits per pixel Original / giflib / usage-giflib-tools-giftext-treescap-bits-per-pixel Passed
giftext treescap color resolution Original / giflib / usage-giflib-tools-giftext-treescap-color-resolution Passed
giftext treescap color map Original / giflib / usage-giflib-tools-giftext-treescap-colormap Passed
giftext treescap image records Original / giflib / usage-giflib-tools-giftext-treescap-images Passed
giftext -v verbose mode is accepted and produces parseable output Original / giflib / usage-giflib-tools-giftext-verbose-mode Passed
Runs giftext with the -v verbose flag on gifgrid.gif and confirms the tool exits zero, emits the standard descriptive blocks (Screen Size, BackGround, and Image # records) on stdout, and that the verbose run produces a line count at least as large as the non-verbose run, demonstrating verbose mode is recognized and additive rather than rejected.
giftool -b 0 lands as screen background 0 Original / giflib / usage-giflib-tools-giftool-background-zero-dump Passed
Forces the screen background index to 0 with giftool -b on treescap.gif and confirms gifbuild -d reports screen background 0 in its textual dump.
giftool -b 7 -d 30 -x 2 chains background, delay and disposal in one invocation Original / giflib / usage-giflib-tools-giftool-bg-delay-disposal-chain Passed
Pipes fire.gif through a single giftool invocation that simultaneously sets the screen background index (-b 7), the per-frame delay (-d 30), and the per-frame disposal mode (-x 2), then asserts giftext shows BackGround = 7, every DelayTime line equals 30, and every Disposal Mode line equals 2 with both per-frame counts matching the frame count.
giftool -b applied twice with the same value is idempotent Original / giflib / usage-giflib-tools-giftool-bg-roundtrip-idempotent Passed
Pipes treescap.gif through giftool -b 3 and then through a second giftool -b 3 invocation and verifies the two outputs are byte-identical and giftext reports BackGround = 3, demonstrating idempotence of the background-index transform under repeated application.
giftool combines -b and -i in one pass Original / giflib / usage-giflib-tools-giftool-combined-bg-interlace Passed
Invokes giftool with both -b for the screen background index and -i to set the interlace flag on the same input and verifies giftext records both transformations on the resulting GIF.
giftool combines -d and -p in one invocation Original / giflib / usage-giflib-tools-giftool-delay-position-combo Passed
Invokes giftool with -d 50 and -p 2,3 in a single command on gifgrid.gif and verifies gifbuild dumps the requested delay 50 and an image with left 2 and top 3, confirming both transforms were applied in one pass without one clobbering the other.
giftool -x 2 sets disposal mode 2 on every fire.gif frame Original / giflib / usage-giflib-tools-giftool-disposal-mode-set Passed
Pipes fire.gif through giftool -x 2 to set the per-frame disposal mode to 2 (restore-to-background), captures giftext -e on the result, and verifies that every Disposal Mode line in the output reads "Disposal Mode: 2" with the count matching the frame count, exercising the previously uncovered -x flag.
giftool -i marks images interlaced Original / giflib / usage-giflib-tools-giftool-enable-interlace Passed
Sets the interlace flag on a non-interlaced fixture via giftool -i and confirms giftext reports the image as interlaced.
giftool -b and -d combined on animated fire fixture Original / giflib / usage-giflib-tools-giftool-fire-bg-delay-chain Passed
Pipes the multi-frame fire.gif through giftool with both a -b background index and a -d delay value in a single invocation, then asserts the gifbuild dump shows the new delay and giftext records the new background index, exercising two independent giftool transforms on an animated input.
giftool chains -b then -p across the fire animation Original / giflib / usage-giflib-tools-giftool-fire-bg-position-chain Passed
Pipes the multi-frame fire.gif through giftool -b 7 to set the screen background index, then through a second giftool -p 0,0 invocation, and verifies giftext reports BackGround = 7 while gifbuild dumps every animated frame with image left 0 and image top 0, demonstrating that a -b transform survives a follow-up -p pass on an animated stream.
giftool -b followed by giftool -s preserves animation frame count Original / giflib / usage-giflib-tools-giftool-fire-bg-then-screen-roundtrip Passed
Sets the background index of fire.gif with giftool -b 5, then resizes the logical screen to 256,128 with a second giftool -s invocation, and verifies giftext reports BackGround = 5 with Width = 256, Height = 128 while gifbuild -d enumerates the same animation frame count as the source.
giftool -i 0 clears the interlace flag on every fire.gif frame Original / giflib / usage-giflib-tools-giftool-fire-clear-interlace-flag Passed
Confirms the multi-frame fire.gif fixture has its Image is Interlaced flag set on every frame, runs giftool -i 0 on it, and asserts every interlace marker is gone from the result while the screen size and frame count are preserved -- complementing the existing single-frame treescap-interlaced clear-flag coverage with a multi-frame case.
giftool -s on fire.gif rewrites screen size while preserving frame count Original / giflib / usage-giflib-tools-giftool-fire-screen-resize-frames-preserved Passed
Resizes the logical screen of the multi-frame fire.gif to 320x240 with giftool -s, verifies giftext reports the new screen size and that the frame count emitted by gifbuild -d matches the original animation frame count, ensuring -s rewrites only the screen descriptor.
giftool -s pipeline followed by giftool -f reports the rewritten screen Original / giflib / usage-giflib-tools-giftool-fire-screen-then-format-shows-new-size Passed
Resizes fire.gif logical screen to 200,100 with giftool -s, pipes the result into a second giftool -f '%s' invocation, and asserts every emitted line reports the new screen-size token 200,100, confirming -f reads the just-written screen descriptor across a pipe boundary.
giftool -f lists every frame after a giftool -d transform Original / giflib / usage-giflib-tools-giftool-format-frame-list-pipeline Passed
Pipes fire.gif through giftool -d 75, then asks a second giftool -f invocation to emit one line per frame with index and dimensions, and confirms the post-transform stream still enumerates every animated frame and that gifbuild reports the new delay on those frames.
giftool -f emits exactly one frame line for the single-image gifgrid fixture Original / giflib / usage-giflib-tools-giftool-format-grid-frame-count Passed
Runs giftool -f '%n %wx%h\n' against gifgrid.gif and asserts the listing has exactly one row whose frame index is 1 and whose width-by-height matches the screen size giftext extracts, anchoring the %n directive on a non-animated fixture.
giftool -f counts animation frames Original / giflib / usage-giflib-tools-giftool-format-image-count Passed
Uses giftool -f to emit one line per image in the multi-frame fire fixture and verifies the expected frame count.
giftool -f formatter prints screen size Original / giflib / usage-giflib-tools-giftool-format-screen-size Passed
Exercises the giftool -f format directive to print version and screen size cookies for a single-image fixture.
giftool -f reports GIF87a version and screen size Original / giflib / usage-giflib-tools-giftool-format-version-token Passed
Asks giftool -f to print the version cookie and screen-size pair for a GIF87a fixture and confirms the emitted tokens match the expected values, exercising the %v and %s format directives together.
giftool -b N updates background index on gifgrid Original / giflib / usage-giflib-tools-giftool-grid-bg-single-param Passed
Reads the original BackGround index reported by giftext for gifgrid.gif, picks a sentinel index distinct from that value, runs giftool -b sentinel as the only transform, and confirms giftext on the result reports BackGround = sentinel and that the rewritten file is still recognized as GIF data.
giftool -f emits per-frame dimensions for gifgrid Original / giflib / usage-giflib-tools-giftool-grid-format-dimensions Passed
Asks giftool -f to print %w %h for every frame in gifgrid.gif, cross-checks the line count against the gifbuild image header count, and verifies each line parses as two positive integers whose product matches the screen-size product reported by giftext.
giftool chains interlace then delay Original / giflib / usage-giflib-tools-giftool-interlace-delay-chain Passed
Pipes treescap.gif through giftool -i 1 and then a second giftool -d 100 invocation, then verifies gifbuild reports both interlace and the delay 100 in the resulting GIF.
giftool no-op preserves GIF screen dimensions Original / giflib / usage-giflib-tools-giftool-noop-copy Passed
Pipes a fixture through giftool with no transforms and confirms the copy is a valid GIF whose screen size matches the source as reported by giftext.
giftool -p position survives a follow-up giftool -f format extraction Original / giflib / usage-giflib-tools-giftool-position-format-combo Passed
Pipes treescap.gif through giftool -p 6,9 to set the image origin, then through a second giftool -f invocation that emits a custom format line per frame, and confirms the format pass enumerates the expected number of frames while gifbuild dumps the new image left 6 and image top 9 coordinates on the positioned stream.
giftool -p 0,0 anchors the image to the origin Original / giflib / usage-giflib-tools-giftool-position-origin-reset Passed
First moves an image origin to a non-zero position with giftool -p 5,7, pipes that result through giftool -p 0,0 to reset, and verifies the final gifbuild dump shows image left 0 and image top 0 with no remnant of the intermediate offset.
giftool -p then -b chained over two passes preserves both transforms Original / giflib / usage-giflib-tools-giftool-position-then-bg-chain Passed
Pipes treescap.gif through giftool -p 4,5 and then through giftool -b 2 in a second invocation, then verifies gifbuild -d shows image left 4 and image top 5 on the resulting frame and giftext reports BackGround = 2, exercising independent composition of the position and background transforms.
giftool exits non-zero with a GIF-LIB read error on empty stdin Original / giflib / usage-giflib-tools-giftool-rejects-empty-stdin Passed
Invokes giftool -d 0 with /dev/null as stdin, captures its exit code and stderr, and asserts the tool exits with a non-zero status while emitting the canonical "GIF-LIB error: Failed to read from given file." diagnostic, anchoring giftool's empty-input failure mode.
giftool -b updates background color index Original / giflib / usage-giflib-tools-giftool-set-background Passed
Rewrites the logical screen background color index with giftool -b and verifies the new index appears in giftext output.
giftool -d sets graphics control delay Original / giflib / usage-giflib-tools-giftool-set-delay Passed
Applies a giftool -d delay value and confirms gifbuild dumps the requested delay in the graphics control extension.
giftool -p sets image origin Original / giflib / usage-giflib-tools-giftool-set-position Passed
Moves the image descriptor origin with giftool -p and confirms gifbuild dumps the requested left and top coordinates.
giftool -s applied twice with the same dimensions is byte-stable Original / giflib / usage-giflib-tools-giftool-set-screen-idempotent-resize Passed
Pipes treescap.gif through giftool -s 80,60 and feeds the result back through giftool -s 80,60 a second time, then asserts both outputs are byte-identical and giftext reports Width = 80, Height = 60 on the doubly-resized stream, demonstrating idempotence of the screen-descriptor rewrite.
giftool -s rewrites logical screen size Original / giflib / usage-giflib-tools-giftool-set-screen-size Passed
Resizes the logical screen descriptor with giftool -s and verifies giftext reports the new width and height.
giftool -d sets per-frame delay Original / giflib / usage-giflib-tools-giftool-set-transparency Passed
Applies a giftool -d delay value to a GIF fixture and verifies the resulting graphics control extension reports the requested delay in the gifbuild text dump.
giftool -i 0 clears interlace on an already-interlaced fixture Original / giflib / usage-giflib-tools-giftool-treescap-interlaced-clear-flag Passed
Confirms the treescap-interlaced.gif fixture is in fact interlaced via giftext, runs giftool -i 0 to clear the per-image interlace flag, and verifies the resulting GIF parses without the Image is Interlaced marker while preserving its screen size, exercising the inverse of giftool -i 1.
gif2rgb -c 16 -1 -o produces width*height*3 RGB bytes for fire.gif Original / giflib / usage-giflib-tools-r10-gif2rgb-quantize-16-rgb-size-fire Passed
Runs gif2rgb -c 16 -1 -o to quantize fire.gif into a 16-color RGB stream and verifies the resulting raw RGB byte count equals width*height*3 reported by giftext, exercising the color-quantization output path while preserving raw-image dimensions.
gifclrmp -g 1.0 then -s on fire.gif yields a 256-entry palette dump Original / giflib / usage-giflib-tools-r10-gifclrmp-identity-gamma-256-palette Passed
Applies gifclrmp -g 1.0 (identity gamma) to fire.gif, then dumps the palette of the resulting GIF with gifclrmp -s and confirms the dump has exactly 256 entries each carrying three RGB integers, exercising the gamma-mutation path with an identity transform.
chained giftool -p calls let the last position override the first Original / giflib / usage-giflib-tools-r10-giftool-double-position-last-wins Passed
Pipes fire.gif through giftool -p 5,5 then giftool -p 11,13 and confirms the final %p format readout reports 11,13 on every frame, exercising chained-pipeline override semantics for the position field.
giftool -f %a reports default zero pixel-aspect byte for fire.gif Original / giflib / usage-giflib-tools-r10-giftool-format-aspect-default-zero Passed
Runs giftool -f '%a\n' against fire.gif and confirms the pixel aspect byte cookie evaluates to 0 on every frame, exercising the %a format directive against the unset aspect-ratio header field.
giftool -f %x emits per-frame disposal mode for fire.gif Original / giflib / usage-giflib-tools-r10-giftool-format-disposal-x-token Passed
Asks giftool -f '%x\n' to print the GIF89 disposal mode for every frame of fire.gif and confirms the values are uniformly 1 (do-not-dispose), the encoded mode in the fixture's graphics control extensions.
giftool -f %z prints zero color-table sort flag for fire.gif Original / giflib / usage-giflib-tools-r10-giftool-format-sort-flag-default-zero Passed
Runs giftool -f '%z\n' against the fire.gif fixture and confirms the per-image color-table sort flag is uniformly 0, exercising the %z format directive against an unsorted-palette source.
giftool -f %u prints zero user-input flag for unmodified fire.gif Original / giflib / usage-giflib-tools-r10-giftool-format-user-input-default-zero Passed
Runs giftool -f '%u\n' on the fire.gif fixture without any prior modification and confirms the per-frame user-input flag is uniformly 0, exercising the %u format directive's default-state output.
giftool -d 50 sets every fire.gif frame to a 50-cs delay Original / giflib / usage-giflib-tools-r10-giftool-set-delay-50-uniform Passed
Pipes fire.gif through giftool -d 50 and confirms a follow-up giftool -f '%d\n' pass reports a uniform delay of 50 centiseconds across every frame, exercising the delay-mutation path against the multi-frame fire fixture.
giftool -u 1 sets the GCB user-input flag on every frame Original / giflib / usage-giflib-tools-r10-giftool-set-userinput-flag-on Passed
Pipes fire.gif through giftool -u 1 to enable the graphics control extension user-input flag, then re-reads the flag through giftool -f '%u\n' and confirms every frame now reports 1, exercising the user-input mutation path.
giftool -d 0 zeroes the GCB delay on every frame of fire.gif Original / giflib / usage-giflib-tools-r10-giftool-zero-delay-clears-all-frames Passed
Pipes fire.gif through giftool -d 0 to clear the per-frame delay, then re-reads the delay through a second giftool -f '%d\n' pass and confirms every frame reports delay=0 instead of the original 5-centisecond value.
gif2rgb without -1 emits separate R/G/B files for treescap Original / giflib / usage-giflib-tools-r11-gif2rgb-three-channel-files-treescap Passed
Runs gif2rgb -o on the treescap fixture (40x40) and verifies it writes three sibling channel files <out>.R, <out>.G, <out>.B, each exactly 1600 bytes (one byte per pixel per channel).
gifbuild -h prints version banner and usage line Original / giflib / usage-giflib-tools-r11-gifbuild-help-banner-version Passed
Invokes gifbuild -h, which exits zero on noble, and verifies the printed banner names the binary, includes a "Version" string, and contains the documented "Usage: gifbuild" line.
gifclrmp -s on treescap dumps a sixteen-entry palette Original / giflib / usage-giflib-tools-r11-gifclrmp-treescap-sixteen-entries Passed
Runs gifclrmp -s on the treescap fixture (BitsPerPixel=4) and verifies the dumped palette has exactly 16 lines, each three space-separated decimal channel values within 0..255.
giftext -c lists exactly sixteen global colormap entries for treescap Original / giflib / usage-giflib-tools-r11-giftext-c-colormap-treescap-sixteen Passed
Runs giftext -c on the treescap fixture and counts colormap rows of the form "<idx>: <r>h <g>h <b>h" in the global color map block, asserting exactly 16 entries (matches BitsPerPixel=4).
giftext -e fire reports application, comment, and graphics control extensions Original / giflib / usage-giflib-tools-r11-giftext-extension-blocks-fire Passed
Runs giftext -e on the fire fixture and verifies the report enumerates the GIF89 application (Ext Code 255), comment (254), and graphics control (249) extension blocks the file is known to carry.
giftext -p emits hex-offset prefixed pixmap rows for treescap Original / giflib / usage-giflib-tools-r11-giftext-pixmap-treescap-offset-prefix Passed
Runs giftext -p on the treescap fixture and verifies the pixmap section contains at least 40 lines whose left margin is a five-hex-digit offset followed by a colon, matching the per-row stride formatting.
giftool -f %h reports image height 60 for every fire frame Original / giflib / usage-giflib-tools-r11-giftool-format-height-fire-sixty Passed
Runs giftool -f '%h\n' on the multi-frame fire fixture and asserts every emitted line equals "60", confirming the per-frame image height matches the screen height across all animation frames.
giftool -f %w reports image width 30 for every fire frame Original / giflib / usage-giflib-tools-r11-giftool-format-width-fire-thirty Passed
Runs giftool -f '%w\n' on the multi-frame fire fixture and asserts every emitted line equals "30", confirming the per-frame image width matches the screen width across all animation frames.
giftool -b 7 rewrites the screen background index on treescap Original / giflib / usage-giflib-tools-r11-giftool-set-background-seven-treescap Passed
Pipes treescap through giftool -b 7 and verifies the resulting GIF reports "screen background 7" in gifbuild -d output, exercising the background-index header rewriter.
giftool -x 0 clears disposal mode on every fire frame Original / giflib / usage-giflib-tools-r11-giftool-set-disposal-zero-fire Passed
Pipes the multi-frame fire fixture through giftool -x 0 and uses gifbuild -d to confirm every frame's "disposal mode" line collapses to mode 0, distinct from the file's source disposal mode 1.
gif2rgb -1 stream output is divisible by 3 for treescap.gif Original / giflib / usage-giflib-tools-r12-gif2rgb-treescap-stream-byte-multiple Passed
Decodes treescap.gif via gif2rgb -1 into a single concatenated RGB byte stream and confirms the byte count is a positive multiple of 3 (one byte per channel triplet).
gifclrmp -s on fire.gif yields RGB triples within 0..255 Original / giflib / usage-giflib-tools-r12-gifclrmp-fire-palette-rgb-bounds Passed
Dumps the fire.gif palette via gifclrmp -s and asserts every row contains at least three numeric values, each in the 0..255 byte-range, exercising the palette dump formatter.
giftext on treescap.gif reports the same image count as giftool Original / giflib / usage-giflib-tools-r12-giftext-treescap-image-count Passed
Counts "Image" header sections in giftext output for treescap.gif and asserts the count equals the per-frame line count from giftool -f '%n\n', cross-checking the two readers agree on frame count.
giftool -f %n emits a strictly increasing image index per frame Original / giflib / usage-giflib-tools-r12-giftool-format-image-index-monotonic Passed
Runs giftool -f '%n\n' on fire.gif and confirms the resulting image-index column is monotonically increasing by exactly 1 each line, exercising the per-frame iteration counter.
giftool -f %s emits the logical screen size as an x,y pair Original / giflib / usage-giflib-tools-r12-giftool-format-screen-size-pair Passed
Runs giftool -f '%s\n' on fire.gif and asserts every line matches the WxH pair (digit,digit) format and that all lines report the same screen size.
giftool -f %v reports a GIF87a or GIF89a version per frame for fire.gif Original / giflib / usage-giflib-tools-r12-giftool-format-version-string Passed
Asks giftool -f '%v\n' to print the GIF version string for every frame of fire.gif and confirms the output is a non-empty list of GIF8[79]a values, exercising the version-format cookie path.
giftool -f %wx%h yields per-frame dimensions bounded by the screen size Original / giflib / usage-giflib-tools-r12-giftool-format-width-height-match-screen Passed
Runs giftool -f '%w %h\n' on fire.gif and asserts each per-frame width and height is positive and not greater than the screen-descriptor width/height parsed via giftool -f '%s\n'.
gifbuild -d on fire.gif reports interlaced frames Original / giflib / usage-giflib-tools-r12-giftool-interlace-flag-on-then-format Passed
Runs gifbuild -d on fire.gif (which is interlaced) and asserts the textual dump mentions the "interlaced" keyword on at least one frame, exercising the giflib gifbuild text-dump path. (giftool's per-frame interlace mutation flag is unreliable on giflib 5.2.2 — bare "-i N" prints "unknown operation mode"; the gifbuild reader-side dump is the stable surface for exercising the interlace bit.)
giftool -d 50 sets per-frame delay readable via %d Original / giflib / usage-giflib-tools-r12-giftool-set-aspect-byte-roundtrip Passed
Runs giftool -d 50 on fire.gif to set every frame's graphic-control delay to 50 (0.5 s), then re-reads the value through giftool -f '%d\n' and confirms every emitted line reports 50, exercising the per-frame delay mutation round-trip. (The -a aspect flag prints "unknown operation mode" on giflib 5.2.2; -d is the documented per-frame mutation surface.)
giftool -b 7 sets the screen background color index Original / giflib / usage-giflib-tools-r12-giftool-set-bgcolor-index-roundtrip Passed
Applies giftool -b 7 to fire.gif to set the logical-screen background color index, then re-reads the field via giftool -f '%b\n' and confirms every frame reports 7.
gif2rgb -1 fire.gif emits 3 * w * h bytes for the first frame Original / giflib / usage-giflib-tools-r13-gif2rgb-fire-stream-rgb-channel-bytes Passed
Decodes fire.gif via gif2rgb -1 into a stream RGB file and asserts the byte count equals 3 * first_frame_width * first_frame_height, exercising the RGB-per-pixel stream emission. (gif2rgb -1 emits a single frame's pixels regardless of frame count on giflib 5.2.2.)
gifbuild -d on treescap emits one image directive per frame Original / giflib / usage-giflib-tools-r13-gifbuild-treescap-image-line-count-matches-frames Passed
Runs gifbuild -d on treescap.gif and counts top-level "image" directives in the dump, asserting the count equals the per-frame count reported by giftool -f '%n\n', confirming the dump and tool agree on frame count.
gifclrmp -l with the original palette preserves treescap frame count Original / giflib / usage-giflib-tools-r13-gifclrmp-treescap-frame-count-preserved Passed
Dumps treescap.gif's palette with gifclrmp -s, reloads the same palette via gifclrmp -l, and verifies the per-frame count reported by giftool -f '%n\n' is unchanged from the input fixture, exercising the colormap-translation pipeline at frame-count granularity.
giffix on treescap.gif preserves the logical screen size Original / giflib / usage-giflib-tools-r13-giffix-fire-screen-size-preserved Passed
Runs giffix over treescap.gif (non-interlaced; giffix refuses interlaced inputs with "Cannot fix interlaced images.") and confirms the output is still recognised as a GIF and reports the same screen size via giftool -f '%s\n' as the input, exercising giffix's clean-pass-through path.
giftext per-image dimension line count matches giftool frame count Original / giflib / usage-giflib-tools-r13-giftext-fire-image-pixel-mode-line Passed
Runs giftext on the fire fixture and asserts the number of per-image "Width = ..., Height = ..." dimension lines equals both the count of "Image #N:" headers and the per-frame line count from giftool -f '%n\n', confirming the giftext per-image emitter is consistent.
giftext on fire.gif emits a Screen Size line with positive dimensions Original / giflib / usage-giflib-tools-r13-giftext-fire-version-line Passed
Runs plain giftext on fire.gif and asserts the screen-descriptor section names a "Screen Size" line whose width and height parse as positive integers, exercising the giftext header-section formatter.
giftool -f %d emits a non-negative integer delay for treescap frames Original / giflib / usage-giflib-tools-r13-giftool-format-delay-default-treescap Passed
Runs giftool -f '%d\n' on treescap.gif and asserts every line is a non-negative integer parseable as a hundredth-of-a-second delay value.
giftool -f %u reports zero user-input flag for every treescap frame Original / giflib / usage-giflib-tools-r13-giftool-format-userinput-default-zero-treescap Passed
Runs giftool -f '%u\n' on treescap.gif and asserts every line is the digit 0, confirming the default user-input flag is unset on the fixture's frames, exercising the format cookie %u path.
giftool -d 25 forces every fire frame to a 25 cs delay Original / giflib / usage-giflib-tools-r13-giftool-set-delay-25-fire Passed
Pipes fire.gif through giftool -d 25 then reads back per-frame delays via giftool -f '%d\n' and asserts every line equals 25, exercising the global delay setter.
giftool -p 5,7 sets every frame's position and giftool -f reads it back Original / giflib / usage-giflib-tools-r13-giftool-set-position-fire-roundtrip Passed
Pipes fire.gif through giftool -p 5,7 to set each frame's image-left/top to 5,7, then reads back via giftool -f '%p\n' and confirms every line reports the assigned 5,7 pair.
gif2rgb -1 fire stream byte count is integer multiple of frame_bytes within [1, frames] Original / giflib / usage-giflib-tools-r14-gif2rgb-fire-frames-times-pixels-times-three Passed
Decodes fire.gif via gif2rgb -1 and asserts the RGB stream byte count divides cleanly by frame_bytes (Wxhx3) using the screen dimensions reported by giftext, and the resulting multiple is in the closed interval [1, frames] where frames is reported by giftool -f '%n\n', exercising the full-frame emission contract on a multi-frame fixture.
gifbuild dump-then-build preserves treescap.gif image count Original / giflib / usage-giflib-tools-r14-gifbuild-treescap-image-count-roundtrip Passed
Dumps treescap.gif via gifbuild -d, rebuilds it via gifbuild, and verifies giftool -f '%n\n' reports the same per-frame count for the rebuilt GIF as for the original, exercising the parse-then-rebuild path at frame-count granularity.
gifclrmp dump-then-reload preserves treescap palette row count and frame count Original / giflib / usage-giflib-tools-r14-gifclrmp-output-flag-treescap-roundtrip Passed
Dumps treescap.gif's palette via gifclrmp -s, reloads the same palette via gifclrmp -l, and asserts the post-mapping GIF dump has the same number of palette rows AND that the frame count reported by giftool -f '%n\n' is unchanged from the input fixture, exercising the colormap-translation pipeline.
giffix on treescap with appended junk emits a GIF whose body matches the original prefix Original / giflib / usage-giflib-tools-r14-giffix-treescap-trailing-junk-clean Passed
Builds a corrupt fixture by appending stray bytes to a copy of treescap.gif (a non-interlaced fixture giffix supports), runs giffix, and verifies the output is recognised as a GIF whose first <orig_size> bytes equal the original fixture, demonstrating giffix recovered the original payload.
giftext -c on fire.gif lists a Global Color Map with >=8 indexed RGB rows Original / giflib / usage-giflib-tools-r14-giftext-fire-global-color-map-rows Passed
Runs giftext -c on fire.gif and asserts the output contains a "Global Color Map" header followed by at least 8 numeric rows. giflib 5.2.x emits each row as "<idx>:\t<r>, <g>, <b>"; older builds use bare space-separated columns. Accept either layout via a permissive index-prefixed regex.
giftext -e on fire.gif emits a GIF89 graphics control marker per frame Original / giflib / usage-giflib-tools-r14-giftext-fire-graphic-control-extension-line Passed
Runs giftext -e on the fire animation fixture and asserts the count of "GIF89 graphics control" extension markers equals the per-frame count reported by giftool -f '%n\n', confirming the GCB extension is enumerated once per image record.
giftool -f '%w %h' reports treescap dimensions on every frame Original / giflib / usage-giflib-tools-r14-giftool-format-info-pair-treescap Passed
Runs giftool -f '%w %h\n' against treescap.gif and asserts every per-frame line is "40 40" (treescap is a static 40x40 frame), exercising the per-frame width and height format directives in tandem.
giftool -f compound cookie line emits per-frame width, height, position for fire.gif Original / giflib / usage-giflib-tools-r14-giftool-format-transparent-default-fire Passed
Runs giftool -f '%w %h %p\n' against fire.gif and asserts each line matches the "W H X,Y" compound shape with positive integers for W/H and a comma-separated coordinate pair for the position cookie, exercising compound directive parsing.
giftool -b sets background color index readable via -f %b Original / giflib / usage-giflib-tools-r14-giftool-set-aspect-fire-roundtrip Passed
Pipes fire.gif through giftool -b 5 to overwrite the logical screen descriptor's background color index, then reads it back via giftool -f '%b\n' and asserts every emitted line reports 5, exercising a screen-descriptor mutation round-trip. (giftool's -a aspect flag prints "unknown operation mode" on giflib 5.2.2; the -b background index path is the documented mutation surface.)
giftool fed its own output preserves fire.gif image and screen geometry Original / giflib / usage-giflib-tools-r14-giftool-set-loopcount-fire-roundtrip Passed
Pipes fire.gif through giftool with no flags (a no-op copy) and verifies the output is a structurally valid GIF whose per-frame count, screen size, and per-frame width/height (as reported by giftool -f) all match the input fixture.
gif2rgb -1 treescap.gif row stride equals width*3 across all rows Original / giflib / usage-giflib-tools-r15-gif2rgb-treescap-row-stride-equals-width-times-three Passed
Decodes treescap.gif via gif2rgb -1, derives screen width from giftext, and asserts the total RGB byte count is exactly width*height*3*N for some integer N>=1, confirming each row contributes exactly width*3 bytes (no padding) on a non-animated fixture.
gifbuild dump-then-build preserves fire.gif logical screen size Original / giflib / usage-giflib-tools-r15-gifbuild-fire-roundtrip-screen-size Passed
Dumps fire.gif via gifbuild -d, rebuilds it via gifbuild, and asserts the rebuilt GIF reports the same logical screen size (giftool -f '%s\n', deduplicated) as the original, exercising the parse-then-rebuild path at screen-geometry granularity.
gifclrmp -s on fire.gif emits exactly 256 palette rows Original / giflib / usage-giflib-tools-r15-gifclrmp-fire-palette-256-rows Passed
Dumps fire.gif's global palette via gifclrmp -s and asserts the output has exactly 256 rows (the GIF87a/89a maximum global colormap size for an 8-bit-per-pixel encoded animation), exercising the palette-extraction path on a multi-frame fixture.
giffix on a clean treescap.gif preserves frame count exactly Original / giflib / usage-giflib-tools-r15-giffix-treescap-noop-frame-count-preserved Passed
Runs giffix against a pristine treescap.gif (a non-interlaced fixture giffix supports) without any prior corruption and asserts giftool reports the same frame count for the giffix output as for the input, exercising giffix's pass-through behaviour on already-valid input.
giftext treescap.gif emits one Image record header per frame Original / giflib / usage-giflib-tools-r15-giftext-treescap-image-record-count Passed
Runs giftext on treescap.gif and asserts the count of "Image #" record headers equals the per-frame count reported by giftool -f '%n\n', confirming giftext enumerates one record per image descriptor.
giftool -f '%n' on fire.gif emits a contiguous frame index sequence Original / giflib / usage-giflib-tools-r15-giftool-format-frame-index-zero-based Passed
Runs giftool -f '%n\n' against fire.gif and asserts the output is a contiguous strictly-increasing integer sequence with the same number of frames as fire.gif (giftool 5.2.2 emits 1-based indices, earlier versions 0-based — accept either start, just require contiguity).
giftool -f %v reports a single uniform GIF version across all fire.gif frames Original / giflib / usage-giflib-tools-r15-giftool-format-version-fire-uniform Passed
Runs giftool -f '%v\n' against fire.gif and asserts the deduplicated version string is exactly one value (GIF87a or GIF89a) — i.e. giftool reports the same file-level version on every frame line, exercising the per-frame version cookie's uniformity invariant.
giftool -x 2 sets disposal mode background on every treescap frame Original / giflib / usage-giflib-tools-r15-giftool-set-disposal-two-treescap Passed
Pipes treescap.gif through giftool -x 2 to set disposal mode 2 (restore-to-background) on every frame, then reads back via giftool -f '%x\n' and asserts every line equals "2", exercising the disposal-mode setter at a non-default value.
giftool -p 0,0 on treescap pins every frame to origin Original / giflib / usage-giflib-tools-r15-giftool-set-position-zero-treescap Passed
Pipes treescap.gif through giftool -p 0,0, reads back via giftool -f '%p\n', and asserts every line equals "0,0", exercising the position setter at the origin on a non-interlaced fixture.
giftool -u 1 sets the user-input flag on every treescap frame Original / giflib / usage-giflib-tools-r15-giftool-set-userinput-one-treescap Passed
Pipes treescap.gif through giftool -u 1 to set the GCB user-input flag on every frame, then reads back via giftool -f '%u\n' and asserts every line equals "1", exercising the user-input setter on a non-interlaced fixture.
gif2rgb -1 gifgrid.gif byte count divisible by width*3 Original / giflib / usage-giflib-tools-r16-gif2rgb-grid-bytes-divisible-stride Passed
Decodes gifgrid.gif via gif2rgb -1 and asserts the emitted RGB byte count is positive, divisible by width*3 (no row padding) and divisible by width*height*3 (whole-frame multiple), exercising the stride contract on the synthetic grid fixture distinct from the treescap and fire cases.
gif2rgb -1 treescap.gif emits exactly width*height*3 bytes per frame Original / giflib / usage-giflib-tools-r16-gif2rgb-treescap-pixel-byte-count Passed
Decodes treescap.gif via gif2rgb -1, derives width and height from giftext, and asserts the total RGB byte count is a positive integer multiple of width*height*3 with the multiple equal to the frame count reported by giftool -f '%n\n', exercising the full-frame byte-count contract on a non-interlaced fixture.
giftool -b 3 fire.gif round-trips through giftool -f '%b\n' Original / giflib / usage-giflib-tools-r16-giftool-background-roundtrip-three Passed
Applies giftool -b 3 to fire.gif to overwrite the logical-screen background color index, reads it back via giftool -f '%b\n', and asserts every emitted line equals "3", exercising the background-index mutation surface at a non-default value.
giftool -d 15 fire.gif round-trips through giftool -f '%d\n' Original / giflib / usage-giflib-tools-r16-giftool-delay-mutation-fire-fifteen Passed
Pipes fire.gif through giftool -d 15 to overwrite per-frame delay-time, then reads back via giftool -f '%d\n' and asserts every line reports 15 centiseconds, exercising the delay setter at a value distinct from those used by other batches (5, 25, 50, 75).
giftool -x 1 treescap.gif sets disposal mode "do-not-dispose" on every frame Original / giflib / usage-giflib-tools-r16-giftool-disposal-treescap-one Passed
Pipes treescap.gif (non-interlaced) through giftool -x 1 to set disposal mode 1 (do-not-dispose) on every frame, then reads back via giftool -f '%x\n' and asserts every line equals "1", exercising the disposal setter at value 1 complementing existing 0/2/3 cases.
giftool -f '%v %s' treescap.gif emits version cookie and screen size jointly Original / giflib / usage-giflib-tools-r16-giftool-format-screen-and-version-pair Passed
Runs giftool with a multi-token format string "%v %s\n" against treescap.gif and asserts every emitted line is of the form "GIF8[79]a <W>,<H>" with positive width and height, exercising the simultaneous %v + %s emission contract (giftool renders %s as "W,H").
giftool -p 12,3 treescap.gif round-trips through giftool -f '%p\n' Original / giflib / usage-giflib-tools-r16-giftool-position-treescap-twelve-three Passed
Pipes treescap.gif (non-interlaced) through giftool -p 12,3 to set per-frame image-left/top, then reads back via giftool -f '%p\n' and asserts every line equals "12,3", exercising the position setter at a non-origin offset distinct from existing 0,0/5,7/6,9 cases.
giftool -u 0 fire.gif clears the user-input flag on every frame Original / giflib / usage-giflib-tools-r16-giftool-userinput-fire-zero Passed
Pipes fire.gif through giftool -u 0 to clear the graphics-control-block user-input flag on every frame, then re-reads via giftool -f '%u\n' and confirms every frame reports 0, exercising the user-input clear path complementing the existing -u 1 set test.
gif2rgb -1 -o on treescap.gif emits a non-empty raster and prints to stderr without GIF header Original / giflib / usage-giflib-tools-r17-gif2rgb-treescap-version-banner Passed
Runs gif2rgb -1 -o on treescap.gif to extract the first frame as a raw RGB raster, asserts the output file is non-empty and does NOT start with the ASCII bytes "GIF" (because the raster is raw pixels, not a GIF stream), exercising the raw-output side of the GIF reader.
gifbuild round-trip through treescap.gif preserves the per-frame count Original / giflib / usage-giflib-tools-r17-gifbuild-treescap-roundtrip-frame-count Passed
Dumps treescap.gif via gifbuild -d, reconstructs via gifbuild, and asserts the rebuilt GIF reports the same per-frame count under giftool -f '%n\n' as the source, exercising the textual-dump-and-rebuild pipeline.
gifclrmp -s on treescap.gif emits a palette dump with at least 16 entry rows Original / giflib / usage-giflib-tools-r17-gifclrmp-treescap-sixteen-palette-bytes Passed
Runs gifclrmp -s on treescap.gif to dump the palette as text and asserts the output contains at least 16 non-empty lines, exercising the palette emission on the known treescap fixture without pinning the exact line count.
giftext on treescap.gif mentions a Color Map entry Original / giflib / usage-giflib-tools-r17-giftext-treescap-color-map-mention Passed
Runs giftext on treescap.gif and asserts the rendered report contains the literal substring "Color Map", exercising the palette section emission distinct from per-image and screen-size sections.
giftool -d 5 treescap.gif emits uniform delay across all frames Original / giflib / usage-giflib-tools-r17-giftool-delay-five-treescap-uniform Passed
Pipes treescap.gif through giftool -d 5 to set every frame delay-time to 5 centiseconds, then reads back via giftool -f '%d\n' and asserts every line equals "5", exercising the per-frame delay setter at a value distinct from prior batches.
giftool -i 1 on treescap.gif round-trips through giftext interlace marker Original / giflib / usage-giflib-tools-r17-giftool-interlace-on-treescap-roundtrip Passed
Pipes treescap.gif through giftool -i 1 to turn the interlace flag on, then runs giftext on the output and asserts the report mentions "Interlaced" for the image record, exercising the interlace setter on a non-interlaced fixture.
giftool -p 0,0 on treescap.gif preserves screen size and frame count Original / giflib / usage-giflib-tools-r17-giftool-position-zero-treescap-noop Passed
Pipes treescap.gif through giftool -p 0,0 to set image-block position to the origin, then asserts the screen-size string and per-frame count emitted by giftool -f match the input, exercising the position setter as an effective no-op for already-origin frames.
gif2rgb -1 -o on fire.gif emits a raster sized as a multiple of three bytes Original / giflib / usage-giflib-tools-r18-gif2rgb-fire-output-size-multiple-of-three Passed
Runs gif2rgb -1 -o on fire.gif to extract the first frame as a raw RGB raster and asserts the output file size is divisible by 3 because each pixel occupies exactly three RGB bytes, exercising the raster packing invariant on the multi-frame animation fixture.
gif2rgb -c 32 -1 -o on treescap.gif produces width*height*3 RGB bytes Original / giflib / usage-giflib-tools-r18-gif2rgb-quantize-32-treescap-stream-bytes Passed
Runs gif2rgb -c 32 -1 -o on treescap.gif to quantize the image to 32 colors as a single concatenated RGB stream and asserts the resulting raw byte count equals 40*40*3 (4800) bytes, exercising the quantize-plus-stream output path with a color count not covered by existing tests on this fixture.
gifbuild -d on fire.gif emits a non-empty textual dump Original / giflib / usage-giflib-tools-r18-gifbuild-fire-dump-non-empty Passed
Runs gifbuild -d on fire.gif to produce the textual dump representation and asserts the dump file is non-empty and contains the GIF version identifier string at the start of the output, exercising the dump-only side of the gifbuild round-trip.
gifclrmp -s on treescap.gif emits palette lines with four integer columns each Original / giflib / usage-giflib-tools-r18-gifclrmp-treescap-palette-three-columns Passed
Runs gifclrmp -s on treescap.gif to dump the colormap in text form, asserts the dump file is non-empty and that every line contains exactly four whitespace-separated numeric tokens corresponding to index plus RGB triple, exercising the textual colormap extractor row invariant.
giftext on fire.gif emits at least as many Image lines as giftool reports frames Original / giflib / usage-giflib-tools-r18-giftext-fire-image-record-count Passed
Runs giftext on fire.gif and counts lines containing the literal substring "Image ", then compares against the giftool -f '%n\n' frame count and asserts the giftext image-record count is greater than or equal to the frame count, exercising the per-image section emission on a multi-frame fixture.
giftext on fire.gif emits a Screen Size header line Original / giflib / usage-giflib-tools-r18-giftext-fire-screen-size-line Passed
Runs giftext on fire.gif and asserts the report contains the literal substring "Screen Size" (case-insensitive), exercising the global screen descriptor section emission distinct from the color map section.
giftool -b 0 on treescap.gif emits a valid GIF with preserved screen size Original / giflib / usage-giflib-tools-r18-giftool-background-zero-treescap-roundtrip Passed
Pipes treescap.gif through giftool -b 0 to set the background color index to 0, then asserts the result is a valid GIF stream whose unique giftool -f '%s\n' screen-size string matches the input, exercising the background-index setter without changing screen geometry.
giftool -d 10 on fire.gif emits uniform delay across all frames Original / giflib / usage-giflib-tools-r18-giftool-delay-ten-fire-uniform Passed
Pipes fire.gif through giftool -d 10 to set every frame delay-time to 10 centiseconds, then reads back via giftool -f '%d\n' and asserts every line equals "10", exercising the per-frame delay setter on a multi-frame animation fixture distinct from prior single-value tests.
giftool -i 0 on fire.gif preserves GIF magic and frame count Original / giflib / usage-giflib-tools-r18-giftool-interlace-off-fire-roundtrip Passed
Pipes fire.gif through giftool -i 0 to turn the interlace flag off and asserts the result is a valid GIF stream whose per-frame count emitted by giftool -f '%n\n' equals the input frame count, exercising the interlace clear operation on a multi-frame fixture.
giftool -p 5,5 on treescap.gif emits a valid GIF and preserves frame count Original / giflib / usage-giflib-tools-r18-giftool-position-five-treescap-roundtrip Passed
Pipes treescap.gif through giftool -p 5,5 to set image-block position to (5,5), then asserts the result is recognised as a GIF stream by file and that giftool -f '%n\n' frame-count matches the input, exercising the position setter at a non-origin coordinate.
gif2rgb -c 16 -1 -o on treescap.gif still emits a 4800-byte raster (40x40x3) Original / giflib / usage-giflib-tools-r19-gif2rgb-color-reduce-16-treescap-size Passed
Runs gif2rgb -c 16 -1 -o on treescap.gif to request a 16-colour reduction and asserts the output raster file is still exactly 4800 bytes (width 40 * height 40 * 3 bytes per pixel), exercising the -c color-reduction option as a size-preserving operation distinct from previously tested invocations.
gif2rgb -1 -o on gifgrid.gif emits a 30000-byte raster equal to width*height*3 Original / giflib / usage-giflib-tools-r19-gif2rgb-gifgrid-raster-size-30000 Passed
Runs gif2rgb -1 -o on the 100x100 gifgrid.gif fixture and asserts the output file size equals exactly 30000 bytes which is width*height*3 for a single-frame extract, exercising the raster sizing invariant on the grid fixture distinct from prior treescap and fire size tests.
gifbuild -d on treescap.gif emits a "screen colors 128" line Original / giflib / usage-giflib-tools-r19-gifbuild-treescap-screen-colors-128 Passed
Runs gifbuild -d on treescap.gif and asserts the produced text dump contains the literal line "screen colors 128", exercising the dump representation of the colour-resolution-derived screen colours field for the treescap fixture which advertises 7-bit colour resolution.
gifbuild -d on treescap.gif emits a "screen width 40" line in its dump Original / giflib / usage-giflib-tools-r19-gifbuild-treescap-screen-width-40 Passed
Runs gifbuild -d on treescap.gif and asserts the produced dump contains the literal line "screen width 40", exercising the dump representation of the screen-width header field on the 40x40 fixture distinct from prior dump line-count tests.
gifclrmp -s on gifgrid.gif emits exactly eight palette rows Original / giflib / usage-giflib-tools-r19-gifclrmp-gifgrid-eight-palette-rows Passed
Runs gifclrmp -s on the gifgrid.gif fixture (which uses an 8-entry global colour map) and asserts the textual palette dump contains exactly 8 newline-terminated rows, exercising the colormap extractor row count on a small-palette fixture distinct from the 16-row treescap and 256-row fire dumps.
giftext on fire.gif emits per-frame "Disposal Mode:" lines Original / giflib / usage-giflib-tools-r19-giftext-fire-disposal-mode-line Passed
Runs giftext on fire.gif and asserts the rendered report contains at least one line starting with the literal "Disposal Mode:", exercising the graphics-control-extension disposal-field emission on the multi-frame animation fixture distinct from screen-size and color-map section tests.
giftext on gifgrid.gif reports a 100x100 screen size line Original / giflib / usage-giflib-tools-r19-giftext-gifgrid-screen-size-100x100 Passed
Runs giftext on gifgrid.gif and asserts the rendered output contains the literal substring "Screen Size - Width = 100, Height = 100", exercising the screen-size header emission on the 100x100 grid fixture distinct from the treescap and fire fixtures.
giftool -b 5 on treescap.gif updates the BackGround value reported by giftext Original / giflib / usage-giflib-tools-r19-giftool-background-five-treescap-giftext Passed
Pipes treescap.gif through giftool -b 5 to set the screen background colour index to 5, then asserts giftext on the result emits a line containing the literal substring "BackGround = 5", exercising the background index setter as seen through the textual report.
giftool -x 2 on fire.gif yields gifbuild dump lines with "disposal mode 2" Original / giflib / usage-giflib-tools-r19-giftool-disposal-two-fire-gifbuild-dump Passed
Pipes fire.gif through giftool -x 2 to set the disposal field on each frame to 2 (restore-to-background), then runs gifbuild -d and asserts the dump contains at least one "disposal mode 2" line, exercising the disposal setter through the gifbuild text dump.
giftool -i 1 on treescap.gif flips the giftext interlace label to interlaced Original / giflib / usage-giflib-tools-r19-giftool-interlace-on-treescap-giftext Passed
Pipes treescap.gif through giftool -i 1 to enable the interlace flag (the input is non-interlaced), then runs giftext and asserts the rendered output contains the literal "Image is Interlaced." line, exercising the interlace setter through the textual report distinct from gifbuild dump-based tests.
gif2rgb -1 -o 0 on fire.gif emits exactly 5400 bytes (30x60x3) for frame zero Original / giflib / usage-giflib-tools-r20-gif2rgb-fire-frame-zero-byte-count Passed
Runs gif2rgb -1 -o on the multi-frame fire.gif fixture targeting frame zero by default first-frame mode and asserts the produced raster is exactly 5400 bytes (width 30 * height 60 * 3 bytes per pixel), exercising the explicit single-first-frame raster size on fire distinct from prior treescap and gifgrid size tests.
gifbuild dump/rebuild on gifgrid.gif converges to a fixed point after the first rebuild Original / giflib / usage-giflib-tools-r20-gifbuild-gifgrid-three-rebuild-byte-equal Passed
Pipes gifgrid.gif through two successive gifbuild dump-rebuild cycles and asserts the second and third rebuilt GIF files are byte-for-byte identical, exercising convergence of the dump-and-rebuild round-trip after the first canonicalisation pass on the gifgrid fixture distinct from prior double-roundtrip tests on fire/treescap.
gifbuild -d on treescap.gif emits a "screen height 40" line Original / giflib / usage-giflib-tools-r20-gifbuild-treescap-screen-height-40 Passed
Runs gifbuild -d on the 40x40 treescap.gif fixture and asserts the dump contains the literal line "screen height 40", exercising the screen-height field in the textual dump distinct from the existing r19 "screen width 40" assertion.
gifclrmp -s on treescap.gif emits palette rows with values within 0-255 Original / giflib / usage-giflib-tools-r20-gifclrmp-treescap-rgb-bounds Passed
Runs gifclrmp -s on the treescap.gif fixture and asserts every emitted palette row contains exactly three space-separated integers each in the byte range [0,255], exercising the palette-byte range invariant on treescap distinct from prior row-count or column-count tests.
giffix on treescap.gif yields a file whose gifbuild dump has the same image-record count Original / giflib / usage-giflib-tools-r20-giffix-fire-image-count-preserved Passed
Runs giffix on the single-frame treescap.gif fixture and asserts the resulting file's gifbuild dump contains exactly the same number of "image # N" header lines as the original (1), exercising image-record count preservation across a clean-input giffix pass distinct from prior tests focused on screen-size or palette preservation.
giftext on gifgrid.gif emits a "Color Resolution" line Original / giflib / usage-giflib-tools-r20-giftext-gifgrid-color-resolution-line Passed
Runs giftext on the gifgrid.gif fixture and asserts the produced report contains the literal substring "ColorResolution", exercising the textual color-resolution field rendering on the gifgrid fixture distinct from prior fire/treescap color resolution tests.
giftool -b 12 on treescap.gif yields giftext "BackGround = 12" Original / giflib / usage-giflib-tools-r20-giftool-set-background-12-treescap Passed
Pipes treescap.gif through giftool -b 12 to set the background colour index and runs giftext on the result, asserting the giftext output contains the literal "BackGround = 12" line, exercising the background-index setter with the value 12 (distinct from prior 0, 5, 7, and 9 cases) read through giftext rather than gifbuild dump.
giftool -d 30 on fire.gif sets every frame delay to 30 via giftool -f '%d' Original / giflib / usage-giflib-tools-r20-giftool-set-delay-30-fire-uniform Passed
Pipes fire.gif through giftool -d 30 to set the frame-delay field to 30 centiseconds, reads back via giftool -f '%d\n' and asserts every line equals "30", exercising the per-frame uniform delay setter on the multi-frame fire fixture with a distinctive value not previously asserted (existing tests cover 5, 10, 15, 25, 50).
giftool -p 7,11 on treescap.gif sets image left=7 and top=11 in the gifbuild dump Original / giflib / usage-giflib-tools-r20-giftool-set-position-7-11-treescap Passed
Pipes treescap.gif through giftool -p 7,11 to set the image origin and runs gifbuild -d, asserting the dump contains both "image left 7" and "image top 11" lines, exercising the image-origin setter with non-symmetric coordinates distinct from prior 0,0 and 12,3 cases.
giftool -s 50,50 on treescap.gif followed by gifbuild dump shows "screen width 50" Original / giflib / usage-giflib-tools-r20-giftool-set-screen-size-50x50-format Passed
Pipes treescap.gif through giftool -s 50,50 to set the logical screen size and then runs gifbuild -d on the result, asserting the dump contains both literal lines "screen width 50" and "screen height 50", exercising the screen-size setter through the gifbuild dump distinct from prior 200x100, 20x20, and other screen-size cases.
gif2rgb -o on fire.gif emits .R, .G, .B planar files of equal positive size Original / giflib / usage-giflib-tools-r21-gif2rgb-fire-planar-rgb-bytes-equal Passed
Runs gif2rgb -o without -1 against fire.gif (multi-frame, 30x60) producing the planar .R/.G/.B sidecar files and asserts each file exists, all three are the same positive size, and the size equals the per-frame pixel count times the number of frames (33 frames * 30 * 60 = 59400 bytes per plane), exercising the planar tri-file output mode size invariant.
gifbuild -d on fire.gif dump first non-comment line contains the screen width directive Original / giflib / usage-giflib-tools-r21-gifbuild-fire-dump-version-line Passed
Runs gifbuild -d on fire.gif and asserts the first non-comment non-blank line is exactly "screen width 30", exercising the gifbuild dump structural shape that opens with the screen-descriptor directive on fire distinct from prior screen-size-line tests that only checked presence anywhere in the dump.
gifbuild -d on treescap.gif dump contains exactly one "screen width 40" line Original / giflib / usage-giflib-tools-r21-gifbuild-treescap-dump-screen-width-40 Passed
Runs gifbuild -d on treescap.gif and asserts the dump contains exactly one line matching the literal "screen width 40" (treescap is 40x40 single-screen-descriptor), exercising the gifbuild dump screen-width emission uniqueness on the treescap fixture distinct from prior screen-width tests that did not check uniqueness.
gifclrmp -g 1.0 on fire.gif applied twice converges to a fixed-point GIF Original / giflib / usage-giflib-tools-r21-gifclrmp-fire-identity-gamma-byte-equal Passed
Applies gifclrmp -g 1.0 (identity gamma) to fire.gif once, then applies it a second time to the result, and asserts the second and third outputs are byte-for-byte identical (the identity-gamma transform is idempotent after the first canonicalisation pass), exercising the gamma fixed-point property distinct from the existing 256-palette-row identity-gamma test.
gifclrmp -s on gifgrid.gif palette dump first row begins with index 0 Original / giflib / usage-giflib-tools-r21-gifclrmp-gifgrid-palette-first-row-zero-prefix Passed
Runs gifclrmp -s on gifgrid.gif and asserts the first non-empty line of the palette dump starts with the literal token "0" (index zero) followed by whitespace and three integer RGB values, exercising the index-prefix shape of the palette dump on gifgrid distinct from prior row-count and palette-bytes tests.
giffix on gifgrid.gif produces output of the same byte size as the input Original / giflib / usage-giflib-tools-r21-giffix-gifgrid-output-equals-input-size Passed
Runs giffix on the clean gifgrid.gif fixture and asserts the output file size equals the input file size (giffix downgrades the version magic but does not add/remove payload bytes on a clean input), exercising the giffix output-size invariant on gifgrid distinct from prior frame-count-preserved and trailing-junk-clean tests on other fixtures.
giftext on treescap.gif is deterministic across two consecutive invocations Original / giflib / usage-giflib-tools-r21-giftext-determinism-two-runs Passed
Runs giftext on treescap.gif twice and asserts the two stdout captures are byte-for-byte identical (parsing the same GIF must produce the same textual dump on the same machine), exercising the giftext output-determinism invariant distinct from prior single-invocation content tests.
giftext -c on treescap.gif reports Global Color Map "Sort Flag: off" Original / giflib / usage-giflib-tools-r21-giftext-treescap-sort-flag-off Passed
Runs giftext -c on treescap.gif (the -c flag enables colormap dumping with the sort-flag line) and asserts the textual dump contains the literal line "Sort Flag: off", exercising the giftext narrative emission of the color-table sort-flag bit distinct from the existing giftool -f %z numeric format-code test on fire.gif.
giftool -b 3 then -b 0 on treescap.gif yields background index 0 in giftool -f %b Original / giflib / usage-giflib-tools-r21-giftool-set-bgcolor-3-then-clear-format-zero Passed
Chains two giftool -b invocations against treescap.gif (first sets background to 3, then resets to 0) and asserts giftool -f %b reports 0 for every frame in the final output, exercising the background-index setter override behavior distinct from prior single-setter-only background tests.
giftool -d 30 applied twice on fire.gif is byte-for-byte identical to applying once Original / giflib / usage-giflib-tools-r21-giftool-set-delay-idempotent-twice Passed
Pipes fire.gif through giftool -d 30 once, then pipes the result through giftool -d 30 a second time, and asserts the two output GIFs are byte-for-byte identical, exercising the idempotence of the per-frame delay setter on a multi-frame fixture distinct from the prior single-application delay-setter tests.
CVE-2005-2974 giflib regression Original / giflib / cve-2005-2974 Passed
Asserts that gif2rgb rejects a crafted truncated GIF without a NULL-pointer crash, surfacing a documented decode error in bounded time.
CVE-2019-15133 giflib regression Original / giflib / cve-2019-15133 Passed
Asserts that DGifSlurp rejects a GIF whose image descriptor declares zero height instead of triggering a divide-by-zero exception inside the decoder.
gif2rgb RGB conversion Port / giflib / gif2rgb-conversion Passed
gifbuild textual round trip Port / giflib / gifbuild-roundtrip Passed
giftext metadata inspection Port / giflib / giftext-metadata Passed
Interlaced GIF fixture handling Port / giflib / interlaced-fixture-handling Passed
Malformed GIF rejection Port / giflib / malformed-gif-rejection Passed
giftext fire image marker Port / giflib / usage-giflib-tools-batch11-fire-image-marker Passed
gif2rgb fire equal planar channels Port / giflib / usage-giflib-tools-batch11-fire-planar-equal-channels Passed
gifbuild fire RGB parity Port / giflib / usage-giflib-tools-batch11-gifbuild-fire-rgb-compare Passed
gifclrmp treescap rows Port / giflib / usage-giflib-tools-batch11-gifclrmp-treescap-row-count Passed
giffix grid RGB output Port / giflib / usage-giflib-tools-batch11-giffix-grid-rgb-output Passed
gifbuild grid dump size Port / giflib / usage-giflib-tools-batch11-grid-build-dump-size Passed
gif2rgb grid RGB byte count Port / giflib / usage-giflib-tools-batch11-grid-rgb-byte-count Passed
giftext grid screen size Port / giflib / usage-giflib-tools-batch11-grid-screen-size Passed
giftext interlaced image marker Port / giflib / usage-giflib-tools-batch11-interlaced-image-marker Passed
gif2rgb treescap RGB output Port / giflib / usage-giflib-tools-batch11-treescap-rgb-nonempty Passed
gif2rgb output size matches treescap pixel count Port / giflib / usage-giflib-tools-batch12-gif2rgb-treescap-rgb-size-equals-wxhx3 Passed
Runs gif2rgb -1 on the treescap GIF and verifies the raw RGB byte count equals width*height*3 reported by giftext.
gif2rgb treescap RGB output divides evenly by row*3 Port / giflib / usage-giflib-tools-batch12-gif2rgb-treescap-row-stride Passed
Runs gif2rgb -1 on the treescap GIF and confirms the RGB byte count is an exact multiple of the screen width times 3 (row-stride invariant).
gifbuild -d emits screen width and height for fire Port / giflib / usage-giflib-tools-batch12-gifbuild-fire-version-line Passed
Runs gifbuild -d on the fire fixture and verifies the textual dump contains "screen width" and "screen height" header lines.
gifbuild treescap dump-then-build is byte-stable on second pass Port / giflib / usage-giflib-tools-batch12-gifbuild-treescap-roundtrip-byte-equal Passed
Dumps treescap GIF with gifbuild -d, builds it back, dumps and rebuilds again, and confirms two consecutive rebuilt GIFs are byte identical.
gifclrmp -s on fire dumps 256-entry palette Port / giflib / usage-giflib-tools-batch12-gifclrmp-fire-dump-palette-count Passed
Runs gifclrmp -s on the fire fixture and verifies the dumped palette has exactly 256 entries (one per color slot).
giffix produces a recognizable GIF from a clean source Port / giflib / usage-giflib-tools-batch12-giffix-fire-passthrough Passed
Runs giffix on a non-interlaced fixture and verifies the output is a non-empty file that the file(1) magic database recognizes as GIF image data.
giftext reports treescap screen size Port / giflib / usage-giflib-tools-batch12-giftext-treescap-screen-size Passed
Runs giftext on the treescap GIF and confirms the screen size header line is present in the output.
giftool -x 3 sets disposal mode to restore-previous Port / giflib / usage-giflib-tools-batch12-giftool-disposal-mode-three Passed
Applies giftool -x 3 (restore-previous disposal mode) to fire.gif and verifies gifbuild dump shows "disposal mode 3" on every graphics control extension.
giftool -p 0,0 sets origin position Port / giflib / usage-giflib-tools-batch12-giftool-set-position-zero-zero Passed
Runs giftool with -p 0,0 on the fire GIF and verifies the resulting GIF still parses with file(1) and gifbuild dump shows the position.
giftool -s 200,100 sets logical screen size Port / giflib / usage-giflib-tools-batch12-giftool-set-screen-200x100 Passed
Applies giftool -s 200,100 to fire.gif and verifies gifbuild dump reports "screen width 200" and "screen height 100".
gif2rgb 2x2 four-pixel RGB roundtrip Port / giflib / usage-giflib-tools-gif2rgb-2x2-rgb-roundtrip Passed
Synthesizes a deterministic 12-byte RGB stream representing four distinct pixels, encodes it into a 2x2 GIF with gif2rgb -s 2 2, decodes the GIF back to RGB with gif2rgb -1, and verifies the decoded stream is exactly 12 bytes and that giftext reports a 2x2 logical screen for the encoded GIF.
giflib-tools gif2rgb convert Port / giflib / usage-giflib-tools-gif2rgb-convert Passed
gif2rgb 1x1 RGB roundtrip Port / giflib / usage-giflib-tools-gif2rgb-encode-1x1 Passed
Synthesizes a 3-byte RGB triplet, encodes it into a 1x1 GIF with gif2rgb -s, decodes the GIF back to RGB, and verifies the decoded stream is exactly three bytes wide and tall and that giftext reports a 1x1 logical screen.
gif2rgb fire output is an exact integer number of frame bytes Port / giflib / usage-giflib-tools-gif2rgb-fire-bytes-frame-multiple Passed
Decodes the multi-frame fire.gif with gif2rgb -1 into a single RGB stream and verifies the byte count is exactly width*height*3 multiplied by an integer between 1 and the frame count reported by gifbuild, ensuring gif2rgb is emitting whole frames worth of pixel data with no slack.
gif2rgb fire RGB compare Port / giflib / usage-giflib-tools-gif2rgb-fire-compare Passed
giflib-tools gif2rgb fire fixture Port / giflib / usage-giflib-tools-gif2rgb-fire-fixture Passed
gif2rgb fire interleaved frame window size Port / giflib / usage-giflib-tools-gif2rgb-fire-frame-n-window Passed
Decodes the multi-frame fire.gif with gif2rgb -1 into a single composited RGB stream and verifies the byte size matches exactly width*height*3 for one composed frame, with at least one non-zero pixel byte present, exercising the gif2rgb interleaved decode path.
gif2rgb fire output spans at least one full frame Port / giflib / usage-giflib-tools-gif2rgb-fire-frames-byte-floor Passed
Decodes the largest fixture fire.gif with gif2rgb -1, reads its width and height from giftext, and asserts the produced RGB byte stream contains at least one full frame worth of pixels (width*height*3 bytes) and is an exact multiple of the per-row stride.
gif2rgb planar decode of fire animation produces distinct R and B channels Port / giflib / usage-giflib-tools-gif2rgb-fire-middle-frame Passed
Decodes fire.gif using gif2rgb -o (planar RGB output) and confirms the resulting per-channel R, G, and B files each have width*height bytes, contain at least one non-zero byte, and that the R channel differs from the B channel for the rendered fire palette.
gif2rgb fire planar sizes Port / giflib / usage-giflib-tools-gif2rgb-fire-planar-size Passed
Converts the fire fixture to planar RGB output with gif2rgb and verifies all three channel files have equal non-zero size.
gif2rgb fire planar output Port / giflib / usage-giflib-tools-gif2rgb-fire-planar Passed
gif2rgb fire RGB bytes Port / giflib / usage-giflib-tools-gif2rgb-fire-rgb-bytes Passed
Converts the fire.gif fixture to an RGB byte stream with gif2rgb and verifies that non-empty RGB output is produced.
gif2rgb fire RGB output is a multiple of width*3 Port / giflib / usage-giflib-tools-gif2rgb-fire-row-stride Passed
Decodes the multi-frame fire.gif into a packed RGB stream with gif2rgb -1, reads the logical screen width from giftext, and asserts the produced RGB byte count is an exact multiple of width*3 so every emitted scanline is fully populated.
gif2rgb fire RGB size Port / giflib / usage-giflib-tools-gif2rgb-fire-size Passed
gif2rgb grid planar equal channels Port / giflib / usage-giflib-tools-gif2rgb-grid-planar-equal-channels Passed
Decodes gifgrid.gif with gif2rgb planar output and verifies that the R, G, and B planes have equal nonzero byte sizes.
gif2rgb grid planar size Port / giflib / usage-giflib-tools-gif2rgb-grid-planar-size Passed
Converts gifgrid.gif to planar RGB files with gif2rgb and verifies the three color planes have matching nonzero sizes.
gif2rgb grid planar output Port / giflib / usage-giflib-tools-gif2rgb-grid-planar Passed
gif2rgb grid RGB output Port / giflib / usage-giflib-tools-gif2rgb-grid-rgb Passed
gif2rgb -1 stream output for gifgrid matches width times height times three Port / giflib / usage-giflib-tools-gif2rgb-grid-stream-mode-size Passed
Decodes gifgrid.gif with gif2rgb -1 into a single concatenated RGB byte stream, parses the screen width and height from giftext, and asserts the resulting file is exactly width*height*3 bytes long, validating the single-frame stream-mode pixel budget.
gif2rgb interlaced planar output Port / giflib / usage-giflib-tools-gif2rgb-interlaced-planar Passed
gif2rgb interlaced RGB bytes Port / giflib / usage-giflib-tools-gif2rgb-interlaced-rgb-bytes Passed
Converts the interlaced treescap fixture to an RGB byte stream with gif2rgb and verifies that non-empty RGB output is produced.
gif2rgb interlaced conversion Port / giflib / usage-giflib-tools-gif2rgb-interlaced Passed
giflib-tools gif2rgb planar output Port / giflib / usage-giflib-tools-gif2rgb-planar Passed
Converts a GIF fixture into separate RGB planes with gif2rgb and verifies all channel files are produced.
gif2rgb -c 16 -o writes three equal-size R/G/B planes for fire.gif Port / giflib / usage-giflib-tools-gif2rgb-quantize-planar-equal-bytes Passed
Runs gif2rgb -c 16 -o <prefix> on fire.gif (without -1) and verifies the tool emits exactly three planar files (.R, .G, .B) each with byte count equal to width*height (1800 for 30x60), exercising the color-quantization path that is otherwise untested in usage coverage.
gif2rgb -c 4 -1 -o produces a single concatenated RGB stream of W*H*3 bytes Port / giflib / usage-giflib-tools-gif2rgb-quantize-stream-byte-count Passed
Runs gif2rgb -c 4 -1 -o <file> on fire.gif and verifies that exactly one output file is produced (no .R/.G/.B planar split) whose byte count equals width*height*3 = 5400, anchoring the quantize+stream combination of flags.
gif2rgb -s converts RGB stream back to GIF Port / giflib / usage-giflib-tools-gif2rgb-rgb-to-gif-roundtrip Passed
Decodes a fixture to raw RGB triplets, then uses gif2rgb -s to encode that stream back into a GIF whose dimensions and decoded byte count match the original.
gif2rgb treescap RGB byte count equals width*height*3 Port / giflib / usage-giflib-tools-gif2rgb-treescap-pixel-count Passed
Decodes treescap.gif into a packed RGB byte stream with gif2rgb -1, parses width and height from giftext, and asserts the produced RGB output is exactly width*height*3 bytes long.
gif2rgb planar channel sizes equal width*height for treescap Port / giflib / usage-giflib-tools-gif2rgb-treescap-planar-channel-bytes Passed
Decodes treescap.gif into separate R/G/B planar files with gif2rgb -o, queries the screen size with giftext, and verifies each of the three channel files is exactly width*height bytes long, matching the structural invariant that planar output emits one byte per pixel per channel.
gif2rgb treescap planar output Port / giflib / usage-giflib-tools-gif2rgb-treescap-planar Passed
Converts the treescap fixture to planar RGB output with gif2rgb and verifies the three channel files exist.
gif2rgb treescap interlaced rgb compare Port / giflib / usage-giflib-tools-gif2rgb-treescap-rgb-compare Passed
Decodes treescap-interlaced.gif with gif2rgb -1 and verifies the RGB output bytes match the recorded fixture.
gif2rgb treescap RGB size Port / giflib / usage-giflib-tools-gif2rgb-treescap-rgb-size Passed
Converts treescap.gif to packed RGB output with gif2rgb and verifies the emitted byte stream is nonempty.
gifbuild dump build dump is byte-stable Port / giflib / usage-giflib-tools-gifbuild-double-roundtrip-stable Passed
Dumps a GIF with gifbuild -d, rebuilds the binary GIF, dumps it again, and verifies that the second textual dump is byte-identical to the first to confirm the gifbuild text format is a stable fixed point.
giflib-tools gifbuild dump Port / giflib / usage-giflib-tools-gifbuild-dump Passed
gifbuild fire dump build dump is byte-stable Port / giflib / usage-giflib-tools-gifbuild-fire-double-roundtrip Passed
Dumps the animated fire.gif with gifbuild -d, rebuilds the binary GIF, dumps it again, strips the source-filename comments, and verifies the two structural dumps are byte-identical and contain the expected screen width header.
gifbuild fire dump lines Port / giflib / usage-giflib-tools-gifbuild-fire-dump-lines Passed
gifbuild fire extension records Port / giflib / usage-giflib-tools-gifbuild-fire-extension-lines Passed
Dumps the animated fire.gif with gifbuild -d and verifies the textual description contains the multiple per-frame image-block headers emitted for an animated GIF.
gifbuild dump emits exactly one graphics control per fire frame Port / giflib / usage-giflib-tools-gifbuild-fire-gcb-frame-equal Passed
Dumps the animated fire.gif with gifbuild -d and asserts the count of "graphics control" extension blocks is exactly equal to the count of "image # N" headers, cross-verifying the frame count against giftool -f, so we are confirming a strict 1:1 pairing rather than just the presence of GCBs.
gifbuild dump pairs a graphics control with each animated frame Port / giflib / usage-giflib-tools-gifbuild-fire-gcb-precedes-image Passed
Dumps the animated fire.gif with gifbuild -d, scans the textual record stream, and asserts that every "image # N" header has a "graphics control" block emitted ahead of it, confirming gifbuild reports the per-frame timing extension on a real animation rather than just the global header.
gifbuild dump frame count matches giftext Port / giflib / usage-giflib-tools-gifbuild-fire-image-frame-count Passed
Counts the per-frame image headers gifbuild -d emits for fire.gif and asserts the count agrees with the number of Image # records giftext reports for the same animated input.
gifbuild fire roundtrip colormap Port / giflib / usage-giflib-tools-gifbuild-fire-roundtrip-colormap Passed
Dumps and rebuilds the fire fixture with gifbuild and verifies the rebuilt GIF still exposes a color map through gifclrmp.
gifbuild fire roundtrip screen size Port / giflib / usage-giflib-tools-gifbuild-fire-roundtrip-screen-size Passed
Roundtrips fire.gif through gifbuild dump and rebuild, then verifies that the rebuilt giftext output reports Screen Size.
gifbuild fire round trip Port / giflib / usage-giflib-tools-gifbuild-fire-roundtrip Passed
gifbuild grid dump Port / giflib / usage-giflib-tools-gifbuild-grid-dump Passed
gifbuild rebuilt gifgrid.gif still terminates with 0x3b Port / giflib / usage-giflib-tools-gifbuild-grid-rebuilt-trailer-byte Passed
Dumps gifgrid.gif via gifbuild -d, rebuilds it through gifbuild, and asserts the rebuilt stream is a recognized GIF whose final byte is the mandatory 0x3b trailer marker, complementing the existing trailer check on treescap.
gifbuild grid round trip color map Port / giflib / usage-giflib-tools-gifbuild-grid-roundtrip-colormap Passed
gifbuild grid roundtrip screen Port / giflib / usage-giflib-tools-gifbuild-grid-roundtrip-screen Passed
Dumps gifgrid.gif to gifbuild text, rebuilds it, and verifies screen metadata from the rebuilt GIF.
gifbuild grid round trip Port / giflib / usage-giflib-tools-gifbuild-grid-roundtrip Passed
Dumps and rebuilds gifgrid.gif with gifbuild and verifies the rebuilt GIF metadata remains readable.
gifbuild interlace flag dump Port / giflib / usage-giflib-tools-gifbuild-interlace-flag Passed
Dumps plain and interlaced treescap fixtures with gifbuild and verifies only the interlaced dump reports the interlace flag.
gifbuild interlaced dump Port / giflib / usage-giflib-tools-gifbuild-interlaced-dump Passed
gifbuild interlaced round trip Port / giflib / usage-giflib-tools-gifbuild-interlaced-roundtrip Passed
Dumps and rebuilds the interlaced treescap fixture with gifbuild and verifies the rebuilt GIF metadata.
giflib-tools gifbuild roundtrip Port / giflib / usage-giflib-tools-gifbuild-roundtrip Passed
Dumps a GIF fixture to gifbuild text and rebuilds it to verify the client can round trip image structure.
gifbuild dump records fire screen dimensions Port / giflib / usage-giflib-tools-gifbuild-screen-size-line Passed
Dumps fire.gif with gifbuild -d and verifies the screen width and height keywords in the textual description match the known 30x60 logical screen of the fixture.
gifbuild rebuild ends with GIF trailer byte Port / giflib / usage-giflib-tools-gifbuild-trailer-byte Passed
Rebuilds a GIF from a gifbuild text dump and verifies that the final byte of the encoded output is 0x3B, the mandatory GIF stream trailer.
gifbuild treescap dump Port / giflib / usage-giflib-tools-gifbuild-treescap-dump Passed
gifbuild dump on treescap-interlaced has matching image and screen records Port / giflib / usage-giflib-tools-gifbuild-treescap-interlaced-dump-counts Passed
Dumps the treescap-interlaced.gif fixture with gifbuild -d and asserts the dump contains exactly one screen-width record, exactly one image header line, an image with a non-zero bits-per-pixel record, and concludes with the trailer keyword, exercising gifbuild's structural rendering of a single-frame interlaced fixture.
gifbuild treescap roundtrip color map Port / giflib / usage-giflib-tools-gifbuild-treescap-roundtrip-colormap Passed
Roundtrips treescap.gif through gifbuild dump and rebuild, then verifies that gifclrmp on the rebuilt gif emits a palette row.
gifbuild dump line count is identical before and after a roundtrip Port / giflib / usage-giflib-tools-gifbuild-treescap-roundtrip-line-parity Passed
Dumps treescap.gif with gifbuild -d, rebuilds the GIF from that dump by piping it back through gifbuild, dumps the rebuilt GIF a second time, and asserts the two textual descriptions have identical line counts and identical numbers of "image # N" headers and "terminator" markers, confirming that the dump-build-dump cycle is line-parity stable.
gifbuild treescap roundtrip screen Port / giflib / usage-giflib-tools-gifbuild-treescap-roundtrip-screen Passed
Dumps treescap.gif to gifbuild text, rebuilds it, and verifies screen metadata from the rebuilt GIF.
gifbuild treescap round trip Port / giflib / usage-giflib-tools-gifbuild-treescap-roundtrip Passed
gifbuild dump terminates with the trailer record Port / giflib / usage-giflib-tools-gifbuild-treescap-trailer-line Passed
Dumps treescap.gif with gifbuild -d and asserts the textual dump terminates with the GIF stream trailer record gifbuild emits at end-of-file, ensuring the dump is structurally complete and not truncated mid-record.
gifclrmp dump and -l reload roundtrip Port / giflib / usage-giflib-tools-gifclrmp-dump-reload-roundtrip Passed
Dumps the global color map with gifclrmp, reloads it via gifclrmp -l, and confirms the dumped map is identical after the round trip.
gifclrmp gamma transform preserves fire.gif frame count Port / giflib / usage-giflib-tools-gifclrmp-fire-frame-count-preserved Passed
Applies a gamma colormap transform via gifclrmp -g 1.5 to the multi-frame fire.gif fixture, then counts the image records emitted by gifbuild -d on the transformed stream and asserts the count matches the source animation, ensuring the colormap rewrite leaves the frame structure intact.
gifclrmp -s dumps the global colormap of fire.gif Port / giflib / usage-giflib-tools-gifclrmp-fire-image-select Passed
Runs gifclrmp -s on the multi-frame fire.gif to dump its global colormap as text and verifies the dump contains at least two palette rows whose first row parses as "<index> <r> <g> <b>" with r,g,b in [0,255], confirming gifclrmp produces a well-formed palette dump for a multi-frame GIF.
gifclrmp fire palette row Port / giflib / usage-giflib-tools-gifclrmp-fire-palette-row Passed
Prints the fire.gif color map with gifclrmp and verifies that at least one palette row is emitted.
gifclrmp fire palette Port / giflib / usage-giflib-tools-gifclrmp-fire Passed
gifclrmp -g applies a gamma transform to the palette Port / giflib / usage-giflib-tools-gifclrmp-grid-gamma-palette Passed
Dumps the gifgrid.gif palette with gifclrmp -s as a baseline, applies a non-trivial gamma value with gifclrmp -g 2.2 to produce a transformed GIF, dumps that GIF's palette, and verifies the row count is preserved while at least one channel value in the palette has changed, demonstrating gifclrmp performed a real per-channel transformation rather than a no-op copy.
gifclrmp -l swaps the gifgrid palette with one dumped from fire Port / giflib / usage-giflib-tools-gifclrmp-grid-load-fire-palette Passed
Dumps the fire.gif color map with gifclrmp -s, applies that palette to gifgrid.gif via gifclrmp -l, and confirms the resulting GIF reports a colormap whose first content row matches the fire palette row, exercising a cross-fixture palette transplant.
gifclrmp grid palette row Port / giflib / usage-giflib-tools-gifclrmp-grid-palette-row Passed
Prints the gifgrid.gif color map with gifclrmp and verifies that at least one palette row is emitted.
gifclrmp -l reloads a modified palette Port / giflib / usage-giflib-tools-gifclrmp-grid-reload-modified Passed
Dumps the gifgrid.gif color map with gifclrmp -s, edits one palette row to a known RGB triple, reloads that palette with gifclrmp -l, and confirms the reloaded GIF round-trips through gifclrmp -s yielding the modified row verbatim.
gifclrmp grid palette Port / giflib / usage-giflib-tools-gifclrmp-grid Passed
gifclrmp -i 5 -g rewrites only image #5 while -g alone rewrites the whole map Port / giflib / usage-giflib-tools-gifclrmp-image-index-vs-global Passed
Applies the same gamma value via gifclrmp twice on fire.gif -- once globally with -g 0.5 and once scoped to a single frame with -i 5 -g 0.5 -- and verifies the two outputs differ from each other and from the original, that both remain parseable GIFs with the original frame count and screen size, anchoring the per-image scoping behavior of -i.
gifclrmp interlaced fixture Port / giflib / usage-giflib-tools-gifclrmp-interlaced Passed
Prints the color map for the interlaced treescap fixture with gifclrmp and verifies a palette row is emitted.
giflib-tools gifclrmp map Port / giflib / usage-giflib-tools-gifclrmp-map Passed
gifclrmp -s on treescap-interlaced emits a power-of-two palette Port / giflib / usage-giflib-tools-gifclrmp-treescap-interlaced-palette-shape Passed
Dumps the global color map of the treescap-interlaced.gif fixture with gifclrmp -s, asserts the row count is one of the GIF-permitted palette sizes (2, 4, 8, 16, 32, 64, 128 or 256), and verifies every dump line matches the expected "index R G B" four-token shape with each channel a 0-255 byte.
gifclrmp treescap colormap Port / giflib / usage-giflib-tools-gifclrmp-treescap Passed
giflib-tools giffix copy Port / giflib / usage-giflib-tools-giffix-copy Passed
giffix recovers from a flipped byte after the GIF trailer Port / giflib / usage-giflib-tools-giffix-corrupt-extension-byte Passed
Copies treescap.gif, flips a single byte appended after the trailer to simulate corruption beyond the legitimate stream, and confirms giffix produces output that giftext can still parse, demonstrating that a stray post-trailer byte does not derail the recovery path.
giffix strips trailing junk bytes after a GIF trailer Port / giflib / usage-giflib-tools-giffix-corrupt-gcb-byte Passed
Appends 96 zero bytes after the canonical 0x3B trailer of a copy of treescap.gif to simulate trailing garbage, runs giffix on the dirty stream, and verifies the recovered output is recognized as GIF data, ends with the canonical 0x3B trailer byte, and parses through giftext.
giffix on already-clean treescap.gif preserves giftext metadata Port / giflib / usage-giflib-tools-giffix-fire-clean-idempotent Passed
Pipes the already-well-formed treescap.gif fixture through giffix and asserts the giftext header decoding (screen size, GIF version) of the giffix output matches the source, demonstrating giffix is a no-op-equivalent on healthy non-interlaced inputs.
giffix giftext output Port / giflib / usage-giflib-tools-giffix-fire-giftext Passed
giffix fire screen size Port / giflib / usage-giflib-tools-giffix-fire-screen-size Passed
Repairs fire.gif with giffix and verifies that giftext on the fixed gif still reports Screen Size.
giffix grid color map Port / giflib / usage-giflib-tools-giffix-grid-colormap Passed
giffix grid screen header Port / giflib / usage-giflib-tools-giffix-grid-screen Passed
Runs giffix on the grid fixture and verifies the repaired GIF still exposes screen metadata through giftext.
giffix grid copy Port / giflib / usage-giflib-tools-giffix-grid Passed
giffix color map Port / giflib / usage-giflib-tools-giffix-interlaced-colormap Passed
giffix interlaced fixture Port / giflib / usage-giflib-tools-giffix-interlaced Passed
Repairs the interlaced treescap fixture with giffix and verifies the fixed GIF remains readable by giftext.
giffix trims 256-byte trailing tail Port / giflib / usage-giflib-tools-giffix-large-trailing-junk Passed
Appends 256 deterministic junk bytes after the GIF trailer of fire.gif, runs giffix on the dirty stream, and confirms the repaired output is no larger than the original byte count and still parses through giftext.
giffix tolerates trailing garbage Port / giflib / usage-giflib-tools-giffix-trailing-junk Passed
Appends 16 bytes of garbage after the GIF trailer and confirms giffix produces output that giftext still parses, demonstrating the recovery path is not derailed by stray trailing bytes.
giffix treescap colormap Port / giflib / usage-giflib-tools-giffix-treescap-colormap Passed
Runs giffix on the treescap fixture and verifies the fixed GIF still exposes a color map through gifclrmp.
giffix treescap screen size Port / giflib / usage-giflib-tools-giffix-treescap-screen-size Passed
Repairs the treescap.gif fixture with giffix and verifies that giftext can still read screen metadata from the result.
giffix treescap copy Port / giflib / usage-giflib-tools-giffix-treescap Passed
giffix tolerates trailing junk after GIF trailer Port / giflib / usage-giflib-tools-giffix-truncated-trailer Passed
Appends junk bytes after the GIF trailer of a fixture, runs giffix to clean the stream, and confirms giftext can still parse the screen descriptor on the repaired output.
giffix -v on a clean non-interlaced fixture matches the bare giffix output Port / giflib / usage-giflib-tools-giffix-verbose-flag-noninterlaced Passed
Runs giffix with and without -v on the non-interlaced gifgrid.gif fixture, captures stdout, stderr and exit code for each, and verifies both invocations succeed (exit 0), produce byte-identical stdout, and write nothing to stderr -- confirming the -v flag is silent on a fixture that needs no repair narration.
giffix removes zero-bytes appended after the GIF trailer Port / giflib / usage-giflib-tools-giffix-zeroed-trailer Passed
Copies treescap.gif, appends 64 zero bytes after the canonical 0x3B trailer so the stream has trailing garbage past the terminator, runs giffix on the dirty file, and verifies the repaired output is recognized as GIF data, ends with the canonical 0x3B trailer, and parses through giftext.
giftext reports only the final -b after a giftool background chain Port / giflib / usage-giflib-tools-giftext-bg-chain-final-index Passed
Pipes treescap.gif through giftool -b 5, then giftool -b 9, and verifies giftext on the final stream reports BackGround = 9 with no remaining BackGround = 5 record, demonstrating that successive -b transforms overwrite the screen background field rather than accumulating.
giflib-tools giftext color map Port / giflib / usage-giflib-tools-giftext-colormap Passed
Uses giftext to dump the GIF color map from a fixture and verifies color table output is present.
giftext -e dumps GIF89 graphics control blocks with Disposal Mode lines Port / giflib / usage-giflib-tools-giftext-extension-disposal-modes Passed
Runs giftext -e on fire.gif (an animated multi-frame GIF89 fixture) and asserts the extension-block listing contains GIF89 graphics control records carrying Disposal Mode and DelayTime lines, with the Disposal Mode count matching the frame count reported by giftext on the same fixture.
giftext fire background field Port / giflib / usage-giflib-tools-giftext-fire-background Passed
giftext fire bits per pixel Port / giflib / usage-giflib-tools-giftext-fire-bits-per-pixel Passed
giftext fire color count Port / giflib / usage-giflib-tools-giftext-fire-color-count Passed
giftext fire color resolution Port / giflib / usage-giflib-tools-giftext-fire-color-resolution Passed
giftext fire color map row Port / giflib / usage-giflib-tools-giftext-fire-colormap-row Passed
Prints the fire.gif color map with giftext -c and verifies that at least one numeric palette row is emitted.
giftext fire color map Port / giflib / usage-giflib-tools-giftext-fire-colormap Passed
giftext fire GIF header Port / giflib / usage-giflib-tools-giftext-fire-header Passed
giftext fire image count Port / giflib / usage-giflib-tools-giftext-fire-image-count Passed
Dumps fire.gif with giftext and verifies image records are reported in the textual metadata output.
giftext fire emits per-frame Image headers Port / giflib / usage-giflib-tools-giftext-fire-multi-frame-headers Passed
Runs giftext on the animated fire.gif fixture and asserts more than one Image #N header is emitted with strictly increasing sequence numbers starting at 1.
giftext fire screen size Port / giflib / usage-giflib-tools-giftext-fire-screen-size Passed
giftext grid background Port / giflib / usage-giflib-tools-giftext-grid-background Passed
giftext grid bits per pixel Port / giflib / usage-giflib-tools-giftext-grid-bits-per-pixel Passed
Reads the gifgrid fixture with giftext and verifies that the bits-per-pixel metadata line is emitted.
giftext grid Global Color Map Port / giflib / usage-giflib-tools-giftext-grid-color-map Passed
Prints the gifgrid.gif color map with giftext -c and verifies that the Global Color Map heading is emitted.
giftext grid color resolution Port / giflib / usage-giflib-tools-giftext-grid-color-resolution Passed
giftext grid color map Port / giflib / usage-giflib-tools-giftext-grid-colormap Passed
giftext grid screen header Port / giflib / usage-giflib-tools-giftext-grid-screen Passed
giftext emits exactly one Image #N header for gifgrid.gif Port / giflib / usage-giflib-tools-giftext-grid-single-image-record Passed
Runs giftext on the single-frame gifgrid.gif and asserts there is exactly one Image #N record (with N starting at 1) on stdout, anchoring the headerless single-image case alongside the existing fire.gif multi-frame coverage.
giflib-tools giftext headers Port / giflib / usage-giflib-tools-giftext-headers Passed
giftext interlaced bits per pixel Port / giflib / usage-giflib-tools-giftext-interlaced-bits-per-pixel Passed
Reads treescap-interlaced.gif with giftext and verifies that the BitsPerPixel header field is emitted.
giftext interlaced color map Port / giflib / usage-giflib-tools-giftext-interlaced-colormap Passed
giflib-tools giftext interlaced fixture Port / giflib / usage-giflib-tools-giftext-interlaced-fixture Passed
giftext interlaced header Port / giflib / usage-giflib-tools-giftext-interlaced-header Passed
giftext interlaced screen size Port / giflib / usage-giflib-tools-giftext-interlaced-screen-size Passed
Reads the interlaced treescap fixture with giftext and verifies that screen-size metadata is emitted.
giftext -z dumps decompressed LZW code rows for every image Port / giflib / usage-giflib-tools-giftext-lz-codes-block Passed
Runs giftext -z on fire.gif and verifies the output contains a substantial number of decompressed-code offset rows (matching ^[0-9a-f]+: with three-digit code tokens) and ends with the standard "GIF file terminated normally." sentinel, exercising the -z decompressed-code dump mode that is otherwise uncovered.
giftext -p ends with the GIF terminated normally trailer line Port / giflib / usage-giflib-tools-giftext-pixel-mode-trailer Passed
Runs giftext -p on fire.gif to dump pixel-level information and verifies the output's final non-empty line is the literal "GIF file terminated normally." sentinel that giftext writes only when the input parsed cleanly to EOF, anchoring the pixel-dump completion behavior.
giftext describes a synthesized 1x1 GIF correctly Port / giflib / usage-giflib-tools-giftext-synth-1x1-color-count Passed
Synthesizes a single-pixel RGB triple, encodes it into a 1x1 GIF with gif2rgb -s, and asserts giftext reports the minimal screen size and the presence of an image record, exercising the giftext metadata path on the smallest possible GIF.
giftext treescap background Port / giflib / usage-giflib-tools-giftext-treescap-background Passed
giftext treescap bits per pixel Port / giflib / usage-giflib-tools-giftext-treescap-bits-per-pixel Passed
giftext treescap color resolution Port / giflib / usage-giflib-tools-giftext-treescap-color-resolution Passed
giftext treescap color map Port / giflib / usage-giflib-tools-giftext-treescap-colormap Passed
giftext treescap image records Port / giflib / usage-giflib-tools-giftext-treescap-images Passed
giftext -v verbose mode is accepted and produces parseable output Port / giflib / usage-giflib-tools-giftext-verbose-mode Passed
Runs giftext with the -v verbose flag on gifgrid.gif and confirms the tool exits zero, emits the standard descriptive blocks (Screen Size, BackGround, and Image # records) on stdout, and that the verbose run produces a line count at least as large as the non-verbose run, demonstrating verbose mode is recognized and additive rather than rejected.
giftool -b 0 lands as screen background 0 Port / giflib / usage-giflib-tools-giftool-background-zero-dump Passed
Forces the screen background index to 0 with giftool -b on treescap.gif and confirms gifbuild -d reports screen background 0 in its textual dump.
giftool -b 7 -d 30 -x 2 chains background, delay and disposal in one invocation Port / giflib / usage-giflib-tools-giftool-bg-delay-disposal-chain Passed
Pipes fire.gif through a single giftool invocation that simultaneously sets the screen background index (-b 7), the per-frame delay (-d 30), and the per-frame disposal mode (-x 2), then asserts giftext shows BackGround = 7, every DelayTime line equals 30, and every Disposal Mode line equals 2 with both per-frame counts matching the frame count.
giftool -b applied twice with the same value is idempotent Port / giflib / usage-giflib-tools-giftool-bg-roundtrip-idempotent Passed
Pipes treescap.gif through giftool -b 3 and then through a second giftool -b 3 invocation and verifies the two outputs are byte-identical and giftext reports BackGround = 3, demonstrating idempotence of the background-index transform under repeated application.
giftool combines -b and -i in one pass Port / giflib / usage-giflib-tools-giftool-combined-bg-interlace Passed
Invokes giftool with both -b for the screen background index and -i to set the interlace flag on the same input and verifies giftext records both transformations on the resulting GIF.
giftool combines -d and -p in one invocation Port / giflib / usage-giflib-tools-giftool-delay-position-combo Passed
Invokes giftool with -d 50 and -p 2,3 in a single command on gifgrid.gif and verifies gifbuild dumps the requested delay 50 and an image with left 2 and top 3, confirming both transforms were applied in one pass without one clobbering the other.
giftool -x 2 sets disposal mode 2 on every fire.gif frame Port / giflib / usage-giflib-tools-giftool-disposal-mode-set Passed
Pipes fire.gif through giftool -x 2 to set the per-frame disposal mode to 2 (restore-to-background), captures giftext -e on the result, and verifies that every Disposal Mode line in the output reads "Disposal Mode: 2" with the count matching the frame count, exercising the previously uncovered -x flag.
giftool -i marks images interlaced Port / giflib / usage-giflib-tools-giftool-enable-interlace Passed
Sets the interlace flag on a non-interlaced fixture via giftool -i and confirms giftext reports the image as interlaced.
giftool -b and -d combined on animated fire fixture Port / giflib / usage-giflib-tools-giftool-fire-bg-delay-chain Passed
Pipes the multi-frame fire.gif through giftool with both a -b background index and a -d delay value in a single invocation, then asserts the gifbuild dump shows the new delay and giftext records the new background index, exercising two independent giftool transforms on an animated input.
giftool chains -b then -p across the fire animation Port / giflib / usage-giflib-tools-giftool-fire-bg-position-chain Passed
Pipes the multi-frame fire.gif through giftool -b 7 to set the screen background index, then through a second giftool -p 0,0 invocation, and verifies giftext reports BackGround = 7 while gifbuild dumps every animated frame with image left 0 and image top 0, demonstrating that a -b transform survives a follow-up -p pass on an animated stream.
giftool -b followed by giftool -s preserves animation frame count Port / giflib / usage-giflib-tools-giftool-fire-bg-then-screen-roundtrip Passed
Sets the background index of fire.gif with giftool -b 5, then resizes the logical screen to 256,128 with a second giftool -s invocation, and verifies giftext reports BackGround = 5 with Width = 256, Height = 128 while gifbuild -d enumerates the same animation frame count as the source.
giftool -i 0 clears the interlace flag on every fire.gif frame Port / giflib / usage-giflib-tools-giftool-fire-clear-interlace-flag Passed
Confirms the multi-frame fire.gif fixture has its Image is Interlaced flag set on every frame, runs giftool -i 0 on it, and asserts every interlace marker is gone from the result while the screen size and frame count are preserved -- complementing the existing single-frame treescap-interlaced clear-flag coverage with a multi-frame case.
giftool -s on fire.gif rewrites screen size while preserving frame count Port / giflib / usage-giflib-tools-giftool-fire-screen-resize-frames-preserved Passed
Resizes the logical screen of the multi-frame fire.gif to 320x240 with giftool -s, verifies giftext reports the new screen size and that the frame count emitted by gifbuild -d matches the original animation frame count, ensuring -s rewrites only the screen descriptor.
giftool -s pipeline followed by giftool -f reports the rewritten screen Port / giflib / usage-giflib-tools-giftool-fire-screen-then-format-shows-new-size Passed
Resizes fire.gif logical screen to 200,100 with giftool -s, pipes the result into a second giftool -f '%s' invocation, and asserts every emitted line reports the new screen-size token 200,100, confirming -f reads the just-written screen descriptor across a pipe boundary.
giftool -f lists every frame after a giftool -d transform Port / giflib / usage-giflib-tools-giftool-format-frame-list-pipeline Passed
Pipes fire.gif through giftool -d 75, then asks a second giftool -f invocation to emit one line per frame with index and dimensions, and confirms the post-transform stream still enumerates every animated frame and that gifbuild reports the new delay on those frames.
giftool -f emits exactly one frame line for the single-image gifgrid fixture Port / giflib / usage-giflib-tools-giftool-format-grid-frame-count Passed
Runs giftool -f '%n %wx%h\n' against gifgrid.gif and asserts the listing has exactly one row whose frame index is 1 and whose width-by-height matches the screen size giftext extracts, anchoring the %n directive on a non-animated fixture.
giftool -f counts animation frames Port / giflib / usage-giflib-tools-giftool-format-image-count Passed
Uses giftool -f to emit one line per image in the multi-frame fire fixture and verifies the expected frame count.
giftool -f formatter prints screen size Port / giflib / usage-giflib-tools-giftool-format-screen-size Passed
Exercises the giftool -f format directive to print version and screen size cookies for a single-image fixture.
giftool -f reports GIF87a version and screen size Port / giflib / usage-giflib-tools-giftool-format-version-token Passed
Asks giftool -f to print the version cookie and screen-size pair for a GIF87a fixture and confirms the emitted tokens match the expected values, exercising the %v and %s format directives together.
giftool -b N updates background index on gifgrid Port / giflib / usage-giflib-tools-giftool-grid-bg-single-param Passed
Reads the original BackGround index reported by giftext for gifgrid.gif, picks a sentinel index distinct from that value, runs giftool -b sentinel as the only transform, and confirms giftext on the result reports BackGround = sentinel and that the rewritten file is still recognized as GIF data.
giftool -f emits per-frame dimensions for gifgrid Port / giflib / usage-giflib-tools-giftool-grid-format-dimensions Passed
Asks giftool -f to print %w %h for every frame in gifgrid.gif, cross-checks the line count against the gifbuild image header count, and verifies each line parses as two positive integers whose product matches the screen-size product reported by giftext.
giftool chains interlace then delay Port / giflib / usage-giflib-tools-giftool-interlace-delay-chain Passed
Pipes treescap.gif through giftool -i 1 and then a second giftool -d 100 invocation, then verifies gifbuild reports both interlace and the delay 100 in the resulting GIF.
giftool no-op preserves GIF screen dimensions Port / giflib / usage-giflib-tools-giftool-noop-copy Passed
Pipes a fixture through giftool with no transforms and confirms the copy is a valid GIF whose screen size matches the source as reported by giftext.
giftool -p position survives a follow-up giftool -f format extraction Port / giflib / usage-giflib-tools-giftool-position-format-combo Passed
Pipes treescap.gif through giftool -p 6,9 to set the image origin, then through a second giftool -f invocation that emits a custom format line per frame, and confirms the format pass enumerates the expected number of frames while gifbuild dumps the new image left 6 and image top 9 coordinates on the positioned stream.
giftool -p 0,0 anchors the image to the origin Port / giflib / usage-giflib-tools-giftool-position-origin-reset Passed
First moves an image origin to a non-zero position with giftool -p 5,7, pipes that result through giftool -p 0,0 to reset, and verifies the final gifbuild dump shows image left 0 and image top 0 with no remnant of the intermediate offset.
giftool -p then -b chained over two passes preserves both transforms Port / giflib / usage-giflib-tools-giftool-position-then-bg-chain Passed
Pipes treescap.gif through giftool -p 4,5 and then through giftool -b 2 in a second invocation, then verifies gifbuild -d shows image left 4 and image top 5 on the resulting frame and giftext reports BackGround = 2, exercising independent composition of the position and background transforms.
giftool exits non-zero with a GIF-LIB read error on empty stdin Port / giflib / usage-giflib-tools-giftool-rejects-empty-stdin Passed
Invokes giftool -d 0 with /dev/null as stdin, captures its exit code and stderr, and asserts the tool exits with a non-zero status while emitting the canonical "GIF-LIB error: Failed to read from given file." diagnostic, anchoring giftool's empty-input failure mode.
giftool -b updates background color index Port / giflib / usage-giflib-tools-giftool-set-background Passed
Rewrites the logical screen background color index with giftool -b and verifies the new index appears in giftext output.
giftool -d sets graphics control delay Port / giflib / usage-giflib-tools-giftool-set-delay Passed
Applies a giftool -d delay value and confirms gifbuild dumps the requested delay in the graphics control extension.
giftool -p sets image origin Port / giflib / usage-giflib-tools-giftool-set-position Passed
Moves the image descriptor origin with giftool -p and confirms gifbuild dumps the requested left and top coordinates.
giftool -s applied twice with the same dimensions is byte-stable Port / giflib / usage-giflib-tools-giftool-set-screen-idempotent-resize Passed
Pipes treescap.gif through giftool -s 80,60 and feeds the result back through giftool -s 80,60 a second time, then asserts both outputs are byte-identical and giftext reports Width = 80, Height = 60 on the doubly-resized stream, demonstrating idempotence of the screen-descriptor rewrite.
giftool -s rewrites logical screen size Port / giflib / usage-giflib-tools-giftool-set-screen-size Passed
Resizes the logical screen descriptor with giftool -s and verifies giftext reports the new width and height.
giftool -d sets per-frame delay Port / giflib / usage-giflib-tools-giftool-set-transparency Passed
Applies a giftool -d delay value to a GIF fixture and verifies the resulting graphics control extension reports the requested delay in the gifbuild text dump.
giftool -i 0 clears interlace on an already-interlaced fixture Port / giflib / usage-giflib-tools-giftool-treescap-interlaced-clear-flag Passed
Confirms the treescap-interlaced.gif fixture is in fact interlaced via giftext, runs giftool -i 0 to clear the per-image interlace flag, and verifies the resulting GIF parses without the Image is Interlaced marker while preserving its screen size, exercising the inverse of giftool -i 1.
gif2rgb -c 16 -1 -o produces width*height*3 RGB bytes for fire.gif Port / giflib / usage-giflib-tools-r10-gif2rgb-quantize-16-rgb-size-fire Passed
Runs gif2rgb -c 16 -1 -o to quantize fire.gif into a 16-color RGB stream and verifies the resulting raw RGB byte count equals width*height*3 reported by giftext, exercising the color-quantization output path while preserving raw-image dimensions.
gifclrmp -g 1.0 then -s on fire.gif yields a 256-entry palette dump Port / giflib / usage-giflib-tools-r10-gifclrmp-identity-gamma-256-palette Passed
Applies gifclrmp -g 1.0 (identity gamma) to fire.gif, then dumps the palette of the resulting GIF with gifclrmp -s and confirms the dump has exactly 256 entries each carrying three RGB integers, exercising the gamma-mutation path with an identity transform.
chained giftool -p calls let the last position override the first Port / giflib / usage-giflib-tools-r10-giftool-double-position-last-wins Passed
Pipes fire.gif through giftool -p 5,5 then giftool -p 11,13 and confirms the final %p format readout reports 11,13 on every frame, exercising chained-pipeline override semantics for the position field.
giftool -f %a reports default zero pixel-aspect byte for fire.gif Port / giflib / usage-giflib-tools-r10-giftool-format-aspect-default-zero Passed
Runs giftool -f '%a\n' against fire.gif and confirms the pixel aspect byte cookie evaluates to 0 on every frame, exercising the %a format directive against the unset aspect-ratio header field.
giftool -f %x emits per-frame disposal mode for fire.gif Port / giflib / usage-giflib-tools-r10-giftool-format-disposal-x-token Passed
Asks giftool -f '%x\n' to print the GIF89 disposal mode for every frame of fire.gif and confirms the values are uniformly 1 (do-not-dispose), the encoded mode in the fixture's graphics control extensions.
giftool -f %z prints zero color-table sort flag for fire.gif Port / giflib / usage-giflib-tools-r10-giftool-format-sort-flag-default-zero Passed
Runs giftool -f '%z\n' against the fire.gif fixture and confirms the per-image color-table sort flag is uniformly 0, exercising the %z format directive against an unsorted-palette source.
giftool -f %u prints zero user-input flag for unmodified fire.gif Port / giflib / usage-giflib-tools-r10-giftool-format-user-input-default-zero Passed
Runs giftool -f '%u\n' on the fire.gif fixture without any prior modification and confirms the per-frame user-input flag is uniformly 0, exercising the %u format directive's default-state output.
giftool -d 50 sets every fire.gif frame to a 50-cs delay Port / giflib / usage-giflib-tools-r10-giftool-set-delay-50-uniform Passed
Pipes fire.gif through giftool -d 50 and confirms a follow-up giftool -f '%d\n' pass reports a uniform delay of 50 centiseconds across every frame, exercising the delay-mutation path against the multi-frame fire fixture.
giftool -u 1 sets the GCB user-input flag on every frame Port / giflib / usage-giflib-tools-r10-giftool-set-userinput-flag-on Passed
Pipes fire.gif through giftool -u 1 to enable the graphics control extension user-input flag, then re-reads the flag through giftool -f '%u\n' and confirms every frame now reports 1, exercising the user-input mutation path.
giftool -d 0 zeroes the GCB delay on every frame of fire.gif Port / giflib / usage-giflib-tools-r10-giftool-zero-delay-clears-all-frames Passed
Pipes fire.gif through giftool -d 0 to clear the per-frame delay, then re-reads the delay through a second giftool -f '%d\n' pass and confirms every frame reports delay=0 instead of the original 5-centisecond value.
gif2rgb without -1 emits separate R/G/B files for treescap Port / giflib / usage-giflib-tools-r11-gif2rgb-three-channel-files-treescap Passed
Runs gif2rgb -o on the treescap fixture (40x40) and verifies it writes three sibling channel files <out>.R, <out>.G, <out>.B, each exactly 1600 bytes (one byte per pixel per channel).
gifbuild -h prints version banner and usage line Port / giflib / usage-giflib-tools-r11-gifbuild-help-banner-version Passed
Invokes gifbuild -h, which exits zero on noble, and verifies the printed banner names the binary, includes a "Version" string, and contains the documented "Usage: gifbuild" line.
gifclrmp -s on treescap dumps a sixteen-entry palette Port / giflib / usage-giflib-tools-r11-gifclrmp-treescap-sixteen-entries Passed
Runs gifclrmp -s on the treescap fixture (BitsPerPixel=4) and verifies the dumped palette has exactly 16 lines, each three space-separated decimal channel values within 0..255.
giftext -c lists exactly sixteen global colormap entries for treescap Port / giflib / usage-giflib-tools-r11-giftext-c-colormap-treescap-sixteen Passed
Runs giftext -c on the treescap fixture and counts colormap rows of the form "<idx>: <r>h <g>h <b>h" in the global color map block, asserting exactly 16 entries (matches BitsPerPixel=4).
giftext -e fire reports application, comment, and graphics control extensions Port / giflib / usage-giflib-tools-r11-giftext-extension-blocks-fire Passed
Runs giftext -e on the fire fixture and verifies the report enumerates the GIF89 application (Ext Code 255), comment (254), and graphics control (249) extension blocks the file is known to carry.
giftext -p emits hex-offset prefixed pixmap rows for treescap Port / giflib / usage-giflib-tools-r11-giftext-pixmap-treescap-offset-prefix Passed
Runs giftext -p on the treescap fixture and verifies the pixmap section contains at least 40 lines whose left margin is a five-hex-digit offset followed by a colon, matching the per-row stride formatting.
giftool -f %h reports image height 60 for every fire frame Port / giflib / usage-giflib-tools-r11-giftool-format-height-fire-sixty Passed
Runs giftool -f '%h\n' on the multi-frame fire fixture and asserts every emitted line equals "60", confirming the per-frame image height matches the screen height across all animation frames.
giftool -f %w reports image width 30 for every fire frame Port / giflib / usage-giflib-tools-r11-giftool-format-width-fire-thirty Passed
Runs giftool -f '%w\n' on the multi-frame fire fixture and asserts every emitted line equals "30", confirming the per-frame image width matches the screen width across all animation frames.
giftool -b 7 rewrites the screen background index on treescap Port / giflib / usage-giflib-tools-r11-giftool-set-background-seven-treescap Passed
Pipes treescap through giftool -b 7 and verifies the resulting GIF reports "screen background 7" in gifbuild -d output, exercising the background-index header rewriter.
giftool -x 0 clears disposal mode on every fire frame Port / giflib / usage-giflib-tools-r11-giftool-set-disposal-zero-fire Passed
Pipes the multi-frame fire fixture through giftool -x 0 and uses gifbuild -d to confirm every frame's "disposal mode" line collapses to mode 0, distinct from the file's source disposal mode 1.
gif2rgb -1 stream output is divisible by 3 for treescap.gif Port / giflib / usage-giflib-tools-r12-gif2rgb-treescap-stream-byte-multiple Passed
Decodes treescap.gif via gif2rgb -1 into a single concatenated RGB byte stream and confirms the byte count is a positive multiple of 3 (one byte per channel triplet).
gifclrmp -s on fire.gif yields RGB triples within 0..255 Port / giflib / usage-giflib-tools-r12-gifclrmp-fire-palette-rgb-bounds Passed
Dumps the fire.gif palette via gifclrmp -s and asserts every row contains at least three numeric values, each in the 0..255 byte-range, exercising the palette dump formatter.
giftext on treescap.gif reports the same image count as giftool Port / giflib / usage-giflib-tools-r12-giftext-treescap-image-count Passed
Counts "Image" header sections in giftext output for treescap.gif and asserts the count equals the per-frame line count from giftool -f '%n\n', cross-checking the two readers agree on frame count.
giftool -f %n emits a strictly increasing image index per frame Port / giflib / usage-giflib-tools-r12-giftool-format-image-index-monotonic Passed
Runs giftool -f '%n\n' on fire.gif and confirms the resulting image-index column is monotonically increasing by exactly 1 each line, exercising the per-frame iteration counter.
giftool -f %s emits the logical screen size as an x,y pair Port / giflib / usage-giflib-tools-r12-giftool-format-screen-size-pair Passed
Runs giftool -f '%s\n' on fire.gif and asserts every line matches the WxH pair (digit,digit) format and that all lines report the same screen size.
giftool -f %v reports a GIF87a or GIF89a version per frame for fire.gif Port / giflib / usage-giflib-tools-r12-giftool-format-version-string Passed
Asks giftool -f '%v\n' to print the GIF version string for every frame of fire.gif and confirms the output is a non-empty list of GIF8[79]a values, exercising the version-format cookie path.
giftool -f %wx%h yields per-frame dimensions bounded by the screen size Port / giflib / usage-giflib-tools-r12-giftool-format-width-height-match-screen Passed
Runs giftool -f '%w %h\n' on fire.gif and asserts each per-frame width and height is positive and not greater than the screen-descriptor width/height parsed via giftool -f '%s\n'.
gifbuild -d on fire.gif reports interlaced frames Port / giflib / usage-giflib-tools-r12-giftool-interlace-flag-on-then-format Passed
Runs gifbuild -d on fire.gif (which is interlaced) and asserts the textual dump mentions the "interlaced" keyword on at least one frame, exercising the giflib gifbuild text-dump path. (giftool's per-frame interlace mutation flag is unreliable on giflib 5.2.2 — bare "-i N" prints "unknown operation mode"; the gifbuild reader-side dump is the stable surface for exercising the interlace bit.)
giftool -d 50 sets per-frame delay readable via %d Port / giflib / usage-giflib-tools-r12-giftool-set-aspect-byte-roundtrip Passed
Runs giftool -d 50 on fire.gif to set every frame's graphic-control delay to 50 (0.5 s), then re-reads the value through giftool -f '%d\n' and confirms every emitted line reports 50, exercising the per-frame delay mutation round-trip. (The -a aspect flag prints "unknown operation mode" on giflib 5.2.2; -d is the documented per-frame mutation surface.)
giftool -b 7 sets the screen background color index Port / giflib / usage-giflib-tools-r12-giftool-set-bgcolor-index-roundtrip Passed
Applies giftool -b 7 to fire.gif to set the logical-screen background color index, then re-reads the field via giftool -f '%b\n' and confirms every frame reports 7.
gif2rgb -1 fire.gif emits 3 * w * h bytes for the first frame Port / giflib / usage-giflib-tools-r13-gif2rgb-fire-stream-rgb-channel-bytes Passed
Decodes fire.gif via gif2rgb -1 into a stream RGB file and asserts the byte count equals 3 * first_frame_width * first_frame_height, exercising the RGB-per-pixel stream emission. (gif2rgb -1 emits a single frame's pixels regardless of frame count on giflib 5.2.2.)
gifbuild -d on treescap emits one image directive per frame Port / giflib / usage-giflib-tools-r13-gifbuild-treescap-image-line-count-matches-frames Passed
Runs gifbuild -d on treescap.gif and counts top-level "image" directives in the dump, asserting the count equals the per-frame count reported by giftool -f '%n\n', confirming the dump and tool agree on frame count.
gifclrmp -l with the original palette preserves treescap frame count Port / giflib / usage-giflib-tools-r13-gifclrmp-treescap-frame-count-preserved Passed
Dumps treescap.gif's palette with gifclrmp -s, reloads the same palette via gifclrmp -l, and verifies the per-frame count reported by giftool -f '%n\n' is unchanged from the input fixture, exercising the colormap-translation pipeline at frame-count granularity.
giffix on treescap.gif preserves the logical screen size Port / giflib / usage-giflib-tools-r13-giffix-fire-screen-size-preserved Passed
Runs giffix over treescap.gif (non-interlaced; giffix refuses interlaced inputs with "Cannot fix interlaced images.") and confirms the output is still recognised as a GIF and reports the same screen size via giftool -f '%s\n' as the input, exercising giffix's clean-pass-through path.
giftext per-image dimension line count matches giftool frame count Port / giflib / usage-giflib-tools-r13-giftext-fire-image-pixel-mode-line Passed
Runs giftext on the fire fixture and asserts the number of per-image "Width = ..., Height = ..." dimension lines equals both the count of "Image #N:" headers and the per-frame line count from giftool -f '%n\n', confirming the giftext per-image emitter is consistent.
giftext on fire.gif emits a Screen Size line with positive dimensions Port / giflib / usage-giflib-tools-r13-giftext-fire-version-line Passed
Runs plain giftext on fire.gif and asserts the screen-descriptor section names a "Screen Size" line whose width and height parse as positive integers, exercising the giftext header-section formatter.
giftool -f %d emits a non-negative integer delay for treescap frames Port / giflib / usage-giflib-tools-r13-giftool-format-delay-default-treescap Passed
Runs giftool -f '%d\n' on treescap.gif and asserts every line is a non-negative integer parseable as a hundredth-of-a-second delay value.
giftool -f %u reports zero user-input flag for every treescap frame Port / giflib / usage-giflib-tools-r13-giftool-format-userinput-default-zero-treescap Passed
Runs giftool -f '%u\n' on treescap.gif and asserts every line is the digit 0, confirming the default user-input flag is unset on the fixture's frames, exercising the format cookie %u path.
giftool -d 25 forces every fire frame to a 25 cs delay Port / giflib / usage-giflib-tools-r13-giftool-set-delay-25-fire Passed
Pipes fire.gif through giftool -d 25 then reads back per-frame delays via giftool -f '%d\n' and asserts every line equals 25, exercising the global delay setter.
giftool -p 5,7 sets every frame's position and giftool -f reads it back Port / giflib / usage-giflib-tools-r13-giftool-set-position-fire-roundtrip Passed
Pipes fire.gif through giftool -p 5,7 to set each frame's image-left/top to 5,7, then reads back via giftool -f '%p\n' and confirms every line reports the assigned 5,7 pair.
gif2rgb -1 fire stream byte count is integer multiple of frame_bytes within [1, frames] Port / giflib / usage-giflib-tools-r14-gif2rgb-fire-frames-times-pixels-times-three Passed
Decodes fire.gif via gif2rgb -1 and asserts the RGB stream byte count divides cleanly by frame_bytes (Wxhx3) using the screen dimensions reported by giftext, and the resulting multiple is in the closed interval [1, frames] where frames is reported by giftool -f '%n\n', exercising the full-frame emission contract on a multi-frame fixture.
gifbuild dump-then-build preserves treescap.gif image count Port / giflib / usage-giflib-tools-r14-gifbuild-treescap-image-count-roundtrip Passed
Dumps treescap.gif via gifbuild -d, rebuilds it via gifbuild, and verifies giftool -f '%n\n' reports the same per-frame count for the rebuilt GIF as for the original, exercising the parse-then-rebuild path at frame-count granularity.
gifclrmp dump-then-reload preserves treescap palette row count and frame count Port / giflib / usage-giflib-tools-r14-gifclrmp-output-flag-treescap-roundtrip Passed
Dumps treescap.gif's palette via gifclrmp -s, reloads the same palette via gifclrmp -l, and asserts the post-mapping GIF dump has the same number of palette rows AND that the frame count reported by giftool -f '%n\n' is unchanged from the input fixture, exercising the colormap-translation pipeline.
giffix on treescap with appended junk emits a GIF whose body matches the original prefix Port / giflib / usage-giflib-tools-r14-giffix-treescap-trailing-junk-clean Passed
Builds a corrupt fixture by appending stray bytes to a copy of treescap.gif (a non-interlaced fixture giffix supports), runs giffix, and verifies the output is recognised as a GIF whose first <orig_size> bytes equal the original fixture, demonstrating giffix recovered the original payload.
giftext -c on fire.gif lists a Global Color Map with >=8 indexed RGB rows Port / giflib / usage-giflib-tools-r14-giftext-fire-global-color-map-rows Passed
Runs giftext -c on fire.gif and asserts the output contains a "Global Color Map" header followed by at least 8 numeric rows. giflib 5.2.x emits each row as "<idx>:\t<r>, <g>, <b>"; older builds use bare space-separated columns. Accept either layout via a permissive index-prefixed regex.
giftext -e on fire.gif emits a GIF89 graphics control marker per frame Port / giflib / usage-giflib-tools-r14-giftext-fire-graphic-control-extension-line Passed
Runs giftext -e on the fire animation fixture and asserts the count of "GIF89 graphics control" extension markers equals the per-frame count reported by giftool -f '%n\n', confirming the GCB extension is enumerated once per image record.
giftool -f '%w %h' reports treescap dimensions on every frame Port / giflib / usage-giflib-tools-r14-giftool-format-info-pair-treescap Passed
Runs giftool -f '%w %h\n' against treescap.gif and asserts every per-frame line is "40 40" (treescap is a static 40x40 frame), exercising the per-frame width and height format directives in tandem.
giftool -f compound cookie line emits per-frame width, height, position for fire.gif Port / giflib / usage-giflib-tools-r14-giftool-format-transparent-default-fire Passed
Runs giftool -f '%w %h %p\n' against fire.gif and asserts each line matches the "W H X,Y" compound shape with positive integers for W/H and a comma-separated coordinate pair for the position cookie, exercising compound directive parsing.
giftool -b sets background color index readable via -f %b Port / giflib / usage-giflib-tools-r14-giftool-set-aspect-fire-roundtrip Passed
Pipes fire.gif through giftool -b 5 to overwrite the logical screen descriptor's background color index, then reads it back via giftool -f '%b\n' and asserts every emitted line reports 5, exercising a screen-descriptor mutation round-trip. (giftool's -a aspect flag prints "unknown operation mode" on giflib 5.2.2; the -b background index path is the documented mutation surface.)
giftool fed its own output preserves fire.gif image and screen geometry Port / giflib / usage-giflib-tools-r14-giftool-set-loopcount-fire-roundtrip Passed
Pipes fire.gif through giftool with no flags (a no-op copy) and verifies the output is a structurally valid GIF whose per-frame count, screen size, and per-frame width/height (as reported by giftool -f) all match the input fixture.
gif2rgb -1 treescap.gif row stride equals width*3 across all rows Port / giflib / usage-giflib-tools-r15-gif2rgb-treescap-row-stride-equals-width-times-three Passed
Decodes treescap.gif via gif2rgb -1, derives screen width from giftext, and asserts the total RGB byte count is exactly width*height*3*N for some integer N>=1, confirming each row contributes exactly width*3 bytes (no padding) on a non-animated fixture.
gifbuild dump-then-build preserves fire.gif logical screen size Port / giflib / usage-giflib-tools-r15-gifbuild-fire-roundtrip-screen-size Passed
Dumps fire.gif via gifbuild -d, rebuilds it via gifbuild, and asserts the rebuilt GIF reports the same logical screen size (giftool -f '%s\n', deduplicated) as the original, exercising the parse-then-rebuild path at screen-geometry granularity.
gifclrmp -s on fire.gif emits exactly 256 palette rows Port / giflib / usage-giflib-tools-r15-gifclrmp-fire-palette-256-rows Passed
Dumps fire.gif's global palette via gifclrmp -s and asserts the output has exactly 256 rows (the GIF87a/89a maximum global colormap size for an 8-bit-per-pixel encoded animation), exercising the palette-extraction path on a multi-frame fixture.
giffix on a clean treescap.gif preserves frame count exactly Port / giflib / usage-giflib-tools-r15-giffix-treescap-noop-frame-count-preserved Passed
Runs giffix against a pristine treescap.gif (a non-interlaced fixture giffix supports) without any prior corruption and asserts giftool reports the same frame count for the giffix output as for the input, exercising giffix's pass-through behaviour on already-valid input.
giftext treescap.gif emits one Image record header per frame Port / giflib / usage-giflib-tools-r15-giftext-treescap-image-record-count Passed
Runs giftext on treescap.gif and asserts the count of "Image #" record headers equals the per-frame count reported by giftool -f '%n\n', confirming giftext enumerates one record per image descriptor.
giftool -f '%n' on fire.gif emits a contiguous frame index sequence Port / giflib / usage-giflib-tools-r15-giftool-format-frame-index-zero-based Passed
Runs giftool -f '%n\n' against fire.gif and asserts the output is a contiguous strictly-increasing integer sequence with the same number of frames as fire.gif (giftool 5.2.2 emits 1-based indices, earlier versions 0-based — accept either start, just require contiguity).
giftool -f %v reports a single uniform GIF version across all fire.gif frames Port / giflib / usage-giflib-tools-r15-giftool-format-version-fire-uniform Passed
Runs giftool -f '%v\n' against fire.gif and asserts the deduplicated version string is exactly one value (GIF87a or GIF89a) — i.e. giftool reports the same file-level version on every frame line, exercising the per-frame version cookie's uniformity invariant.
giftool -x 2 sets disposal mode background on every treescap frame Port / giflib / usage-giflib-tools-r15-giftool-set-disposal-two-treescap Passed
Pipes treescap.gif through giftool -x 2 to set disposal mode 2 (restore-to-background) on every frame, then reads back via giftool -f '%x\n' and asserts every line equals "2", exercising the disposal-mode setter at a non-default value.
giftool -p 0,0 on treescap pins every frame to origin Port / giflib / usage-giflib-tools-r15-giftool-set-position-zero-treescap Passed
Pipes treescap.gif through giftool -p 0,0, reads back via giftool -f '%p\n', and asserts every line equals "0,0", exercising the position setter at the origin on a non-interlaced fixture.
giftool -u 1 sets the user-input flag on every treescap frame Port / giflib / usage-giflib-tools-r15-giftool-set-userinput-one-treescap Passed
Pipes treescap.gif through giftool -u 1 to set the GCB user-input flag on every frame, then reads back via giftool -f '%u\n' and asserts every line equals "1", exercising the user-input setter on a non-interlaced fixture.
gif2rgb -1 gifgrid.gif byte count divisible by width*3 Port / giflib / usage-giflib-tools-r16-gif2rgb-grid-bytes-divisible-stride Passed
Decodes gifgrid.gif via gif2rgb -1 and asserts the emitted RGB byte count is positive, divisible by width*3 (no row padding) and divisible by width*height*3 (whole-frame multiple), exercising the stride contract on the synthetic grid fixture distinct from the treescap and fire cases.
gif2rgb -1 treescap.gif emits exactly width*height*3 bytes per frame Port / giflib / usage-giflib-tools-r16-gif2rgb-treescap-pixel-byte-count Passed
Decodes treescap.gif via gif2rgb -1, derives width and height from giftext, and asserts the total RGB byte count is a positive integer multiple of width*height*3 with the multiple equal to the frame count reported by giftool -f '%n\n', exercising the full-frame byte-count contract on a non-interlaced fixture.
giftool -b 3 fire.gif round-trips through giftool -f '%b\n' Port / giflib / usage-giflib-tools-r16-giftool-background-roundtrip-three Passed
Applies giftool -b 3 to fire.gif to overwrite the logical-screen background color index, reads it back via giftool -f '%b\n', and asserts every emitted line equals "3", exercising the background-index mutation surface at a non-default value.
giftool -d 15 fire.gif round-trips through giftool -f '%d\n' Port / giflib / usage-giflib-tools-r16-giftool-delay-mutation-fire-fifteen Passed
Pipes fire.gif through giftool -d 15 to overwrite per-frame delay-time, then reads back via giftool -f '%d\n' and asserts every line reports 15 centiseconds, exercising the delay setter at a value distinct from those used by other batches (5, 25, 50, 75).
giftool -x 1 treescap.gif sets disposal mode "do-not-dispose" on every frame Port / giflib / usage-giflib-tools-r16-giftool-disposal-treescap-one Passed
Pipes treescap.gif (non-interlaced) through giftool -x 1 to set disposal mode 1 (do-not-dispose) on every frame, then reads back via giftool -f '%x\n' and asserts every line equals "1", exercising the disposal setter at value 1 complementing existing 0/2/3 cases.
giftool -f '%v %s' treescap.gif emits version cookie and screen size jointly Port / giflib / usage-giflib-tools-r16-giftool-format-screen-and-version-pair Passed
Runs giftool with a multi-token format string "%v %s\n" against treescap.gif and asserts every emitted line is of the form "GIF8[79]a <W>,<H>" with positive width and height, exercising the simultaneous %v + %s emission contract (giftool renders %s as "W,H").
giftool -p 12,3 treescap.gif round-trips through giftool -f '%p\n' Port / giflib / usage-giflib-tools-r16-giftool-position-treescap-twelve-three Passed
Pipes treescap.gif (non-interlaced) through giftool -p 12,3 to set per-frame image-left/top, then reads back via giftool -f '%p\n' and asserts every line equals "12,3", exercising the position setter at a non-origin offset distinct from existing 0,0/5,7/6,9 cases.
giftool -u 0 fire.gif clears the user-input flag on every frame Port / giflib / usage-giflib-tools-r16-giftool-userinput-fire-zero Passed
Pipes fire.gif through giftool -u 0 to clear the graphics-control-block user-input flag on every frame, then re-reads via giftool -f '%u\n' and confirms every frame reports 0, exercising the user-input clear path complementing the existing -u 1 set test.
gif2rgb -1 -o on treescap.gif emits a non-empty raster and prints to stderr without GIF header Port / giflib / usage-giflib-tools-r17-gif2rgb-treescap-version-banner Passed
Runs gif2rgb -1 -o on treescap.gif to extract the first frame as a raw RGB raster, asserts the output file is non-empty and does NOT start with the ASCII bytes "GIF" (because the raster is raw pixels, not a GIF stream), exercising the raw-output side of the GIF reader.
gifbuild round-trip through treescap.gif preserves the per-frame count Port / giflib / usage-giflib-tools-r17-gifbuild-treescap-roundtrip-frame-count Passed
Dumps treescap.gif via gifbuild -d, reconstructs via gifbuild, and asserts the rebuilt GIF reports the same per-frame count under giftool -f '%n\n' as the source, exercising the textual-dump-and-rebuild pipeline.
gifclrmp -s on treescap.gif emits a palette dump with at least 16 entry rows Port / giflib / usage-giflib-tools-r17-gifclrmp-treescap-sixteen-palette-bytes Passed
Runs gifclrmp -s on treescap.gif to dump the palette as text and asserts the output contains at least 16 non-empty lines, exercising the palette emission on the known treescap fixture without pinning the exact line count.
giftext on treescap.gif mentions a Color Map entry Port / giflib / usage-giflib-tools-r17-giftext-treescap-color-map-mention Passed
Runs giftext on treescap.gif and asserts the rendered report contains the literal substring "Color Map", exercising the palette section emission distinct from per-image and screen-size sections.
giftool -d 5 treescap.gif emits uniform delay across all frames Port / giflib / usage-giflib-tools-r17-giftool-delay-five-treescap-uniform Passed
Pipes treescap.gif through giftool -d 5 to set every frame delay-time to 5 centiseconds, then reads back via giftool -f '%d\n' and asserts every line equals "5", exercising the per-frame delay setter at a value distinct from prior batches.
giftool -i 1 on treescap.gif round-trips through giftext interlace marker Port / giflib / usage-giflib-tools-r17-giftool-interlace-on-treescap-roundtrip Passed
Pipes treescap.gif through giftool -i 1 to turn the interlace flag on, then runs giftext on the output and asserts the report mentions "Interlaced" for the image record, exercising the interlace setter on a non-interlaced fixture.
giftool -p 0,0 on treescap.gif preserves screen size and frame count Port / giflib / usage-giflib-tools-r17-giftool-position-zero-treescap-noop Passed
Pipes treescap.gif through giftool -p 0,0 to set image-block position to the origin, then asserts the screen-size string and per-frame count emitted by giftool -f match the input, exercising the position setter as an effective no-op for already-origin frames.
gif2rgb -1 -o on fire.gif emits a raster sized as a multiple of three bytes Port / giflib / usage-giflib-tools-r18-gif2rgb-fire-output-size-multiple-of-three Passed
Runs gif2rgb -1 -o on fire.gif to extract the first frame as a raw RGB raster and asserts the output file size is divisible by 3 because each pixel occupies exactly three RGB bytes, exercising the raster packing invariant on the multi-frame animation fixture.
gif2rgb -c 32 -1 -o on treescap.gif produces width*height*3 RGB bytes Port / giflib / usage-giflib-tools-r18-gif2rgb-quantize-32-treescap-stream-bytes Passed
Runs gif2rgb -c 32 -1 -o on treescap.gif to quantize the image to 32 colors as a single concatenated RGB stream and asserts the resulting raw byte count equals 40*40*3 (4800) bytes, exercising the quantize-plus-stream output path with a color count not covered by existing tests on this fixture.
gifbuild -d on fire.gif emits a non-empty textual dump Port / giflib / usage-giflib-tools-r18-gifbuild-fire-dump-non-empty Passed
Runs gifbuild -d on fire.gif to produce the textual dump representation and asserts the dump file is non-empty and contains the GIF version identifier string at the start of the output, exercising the dump-only side of the gifbuild round-trip.
gifclrmp -s on treescap.gif emits palette lines with four integer columns each Port / giflib / usage-giflib-tools-r18-gifclrmp-treescap-palette-three-columns Passed
Runs gifclrmp -s on treescap.gif to dump the colormap in text form, asserts the dump file is non-empty and that every line contains exactly four whitespace-separated numeric tokens corresponding to index plus RGB triple, exercising the textual colormap extractor row invariant.
giftext on fire.gif emits at least as many Image lines as giftool reports frames Port / giflib / usage-giflib-tools-r18-giftext-fire-image-record-count Passed
Runs giftext on fire.gif and counts lines containing the literal substring "Image ", then compares against the giftool -f '%n\n' frame count and asserts the giftext image-record count is greater than or equal to the frame count, exercising the per-image section emission on a multi-frame fixture.
giftext on fire.gif emits a Screen Size header line Port / giflib / usage-giflib-tools-r18-giftext-fire-screen-size-line Passed
Runs giftext on fire.gif and asserts the report contains the literal substring "Screen Size" (case-insensitive), exercising the global screen descriptor section emission distinct from the color map section.
giftool -b 0 on treescap.gif emits a valid GIF with preserved screen size Port / giflib / usage-giflib-tools-r18-giftool-background-zero-treescap-roundtrip Passed
Pipes treescap.gif through giftool -b 0 to set the background color index to 0, then asserts the result is a valid GIF stream whose unique giftool -f '%s\n' screen-size string matches the input, exercising the background-index setter without changing screen geometry.
giftool -d 10 on fire.gif emits uniform delay across all frames Port / giflib / usage-giflib-tools-r18-giftool-delay-ten-fire-uniform Passed
Pipes fire.gif through giftool -d 10 to set every frame delay-time to 10 centiseconds, then reads back via giftool -f '%d\n' and asserts every line equals "10", exercising the per-frame delay setter on a multi-frame animation fixture distinct from prior single-value tests.
giftool -i 0 on fire.gif preserves GIF magic and frame count Port / giflib / usage-giflib-tools-r18-giftool-interlace-off-fire-roundtrip Passed
Pipes fire.gif through giftool -i 0 to turn the interlace flag off and asserts the result is a valid GIF stream whose per-frame count emitted by giftool -f '%n\n' equals the input frame count, exercising the interlace clear operation on a multi-frame fixture.
giftool -p 5,5 on treescap.gif emits a valid GIF and preserves frame count Port / giflib / usage-giflib-tools-r18-giftool-position-five-treescap-roundtrip Passed
Pipes treescap.gif through giftool -p 5,5 to set image-block position to (5,5), then asserts the result is recognised as a GIF stream by file and that giftool -f '%n\n' frame-count matches the input, exercising the position setter at a non-origin coordinate.
gif2rgb -c 16 -1 -o on treescap.gif still emits a 4800-byte raster (40x40x3) Port / giflib / usage-giflib-tools-r19-gif2rgb-color-reduce-16-treescap-size Passed
Runs gif2rgb -c 16 -1 -o on treescap.gif to request a 16-colour reduction and asserts the output raster file is still exactly 4800 bytes (width 40 * height 40 * 3 bytes per pixel), exercising the -c color-reduction option as a size-preserving operation distinct from previously tested invocations.
gif2rgb -1 -o on gifgrid.gif emits a 30000-byte raster equal to width*height*3 Port / giflib / usage-giflib-tools-r19-gif2rgb-gifgrid-raster-size-30000 Passed
Runs gif2rgb -1 -o on the 100x100 gifgrid.gif fixture and asserts the output file size equals exactly 30000 bytes which is width*height*3 for a single-frame extract, exercising the raster sizing invariant on the grid fixture distinct from prior treescap and fire size tests.
gifbuild -d on treescap.gif emits a "screen colors 128" line Port / giflib / usage-giflib-tools-r19-gifbuild-treescap-screen-colors-128 Passed
Runs gifbuild -d on treescap.gif and asserts the produced text dump contains the literal line "screen colors 128", exercising the dump representation of the colour-resolution-derived screen colours field for the treescap fixture which advertises 7-bit colour resolution.
gifbuild -d on treescap.gif emits a "screen width 40" line in its dump Port / giflib / usage-giflib-tools-r19-gifbuild-treescap-screen-width-40 Passed
Runs gifbuild -d on treescap.gif and asserts the produced dump contains the literal line "screen width 40", exercising the dump representation of the screen-width header field on the 40x40 fixture distinct from prior dump line-count tests.
gifclrmp -s on gifgrid.gif emits exactly eight palette rows Port / giflib / usage-giflib-tools-r19-gifclrmp-gifgrid-eight-palette-rows Passed
Runs gifclrmp -s on the gifgrid.gif fixture (which uses an 8-entry global colour map) and asserts the textual palette dump contains exactly 8 newline-terminated rows, exercising the colormap extractor row count on a small-palette fixture distinct from the 16-row treescap and 256-row fire dumps.
giftext on fire.gif emits per-frame "Disposal Mode:" lines Port / giflib / usage-giflib-tools-r19-giftext-fire-disposal-mode-line Passed
Runs giftext on fire.gif and asserts the rendered report contains at least one line starting with the literal "Disposal Mode:", exercising the graphics-control-extension disposal-field emission on the multi-frame animation fixture distinct from screen-size and color-map section tests.
giftext on gifgrid.gif reports a 100x100 screen size line Port / giflib / usage-giflib-tools-r19-giftext-gifgrid-screen-size-100x100 Passed
Runs giftext on gifgrid.gif and asserts the rendered output contains the literal substring "Screen Size - Width = 100, Height = 100", exercising the screen-size header emission on the 100x100 grid fixture distinct from the treescap and fire fixtures.
giftool -b 5 on treescap.gif updates the BackGround value reported by giftext Port / giflib / usage-giflib-tools-r19-giftool-background-five-treescap-giftext Passed
Pipes treescap.gif through giftool -b 5 to set the screen background colour index to 5, then asserts giftext on the result emits a line containing the literal substring "BackGround = 5", exercising the background index setter as seen through the textual report.
giftool -x 2 on fire.gif yields gifbuild dump lines with "disposal mode 2" Port / giflib / usage-giflib-tools-r19-giftool-disposal-two-fire-gifbuild-dump Passed
Pipes fire.gif through giftool -x 2 to set the disposal field on each frame to 2 (restore-to-background), then runs gifbuild -d and asserts the dump contains at least one "disposal mode 2" line, exercising the disposal setter through the gifbuild text dump.
giftool -i 1 on treescap.gif flips the giftext interlace label to interlaced Port / giflib / usage-giflib-tools-r19-giftool-interlace-on-treescap-giftext Passed
Pipes treescap.gif through giftool -i 1 to enable the interlace flag (the input is non-interlaced), then runs giftext and asserts the rendered output contains the literal "Image is Interlaced." line, exercising the interlace setter through the textual report distinct from gifbuild dump-based tests.
gif2rgb -1 -o 0 on fire.gif emits exactly 5400 bytes (30x60x3) for frame zero Port / giflib / usage-giflib-tools-r20-gif2rgb-fire-frame-zero-byte-count Passed
Runs gif2rgb -1 -o on the multi-frame fire.gif fixture targeting frame zero by default first-frame mode and asserts the produced raster is exactly 5400 bytes (width 30 * height 60 * 3 bytes per pixel), exercising the explicit single-first-frame raster size on fire distinct from prior treescap and gifgrid size tests.
gifbuild dump/rebuild on gifgrid.gif converges to a fixed point after the first rebuild Port / giflib / usage-giflib-tools-r20-gifbuild-gifgrid-three-rebuild-byte-equal Passed
Pipes gifgrid.gif through two successive gifbuild dump-rebuild cycles and asserts the second and third rebuilt GIF files are byte-for-byte identical, exercising convergence of the dump-and-rebuild round-trip after the first canonicalisation pass on the gifgrid fixture distinct from prior double-roundtrip tests on fire/treescap.
gifbuild -d on treescap.gif emits a "screen height 40" line Port / giflib / usage-giflib-tools-r20-gifbuild-treescap-screen-height-40 Passed
Runs gifbuild -d on the 40x40 treescap.gif fixture and asserts the dump contains the literal line "screen height 40", exercising the screen-height field in the textual dump distinct from the existing r19 "screen width 40" assertion.
gifclrmp -s on treescap.gif emits palette rows with values within 0-255 Port / giflib / usage-giflib-tools-r20-gifclrmp-treescap-rgb-bounds Passed
Runs gifclrmp -s on the treescap.gif fixture and asserts every emitted palette row contains exactly three space-separated integers each in the byte range [0,255], exercising the palette-byte range invariant on treescap distinct from prior row-count or column-count tests.
giffix on treescap.gif yields a file whose gifbuild dump has the same image-record count Port / giflib / usage-giflib-tools-r20-giffix-fire-image-count-preserved Passed
Runs giffix on the single-frame treescap.gif fixture and asserts the resulting file's gifbuild dump contains exactly the same number of "image # N" header lines as the original (1), exercising image-record count preservation across a clean-input giffix pass distinct from prior tests focused on screen-size or palette preservation.
giftext on gifgrid.gif emits a "Color Resolution" line Port / giflib / usage-giflib-tools-r20-giftext-gifgrid-color-resolution-line Passed
Runs giftext on the gifgrid.gif fixture and asserts the produced report contains the literal substring "ColorResolution", exercising the textual color-resolution field rendering on the gifgrid fixture distinct from prior fire/treescap color resolution tests.
giftool -b 12 on treescap.gif yields giftext "BackGround = 12" Port / giflib / usage-giflib-tools-r20-giftool-set-background-12-treescap Passed
Pipes treescap.gif through giftool -b 12 to set the background colour index and runs giftext on the result, asserting the giftext output contains the literal "BackGround = 12" line, exercising the background-index setter with the value 12 (distinct from prior 0, 5, 7, and 9 cases) read through giftext rather than gifbuild dump.
giftool -d 30 on fire.gif sets every frame delay to 30 via giftool -f '%d' Port / giflib / usage-giflib-tools-r20-giftool-set-delay-30-fire-uniform Passed
Pipes fire.gif through giftool -d 30 to set the frame-delay field to 30 centiseconds, reads back via giftool -f '%d\n' and asserts every line equals "30", exercising the per-frame uniform delay setter on the multi-frame fire fixture with a distinctive value not previously asserted (existing tests cover 5, 10, 15, 25, 50).
giftool -p 7,11 on treescap.gif sets image left=7 and top=11 in the gifbuild dump Port / giflib / usage-giflib-tools-r20-giftool-set-position-7-11-treescap Passed
Pipes treescap.gif through giftool -p 7,11 to set the image origin and runs gifbuild -d, asserting the dump contains both "image left 7" and "image top 11" lines, exercising the image-origin setter with non-symmetric coordinates distinct from prior 0,0 and 12,3 cases.
giftool -s 50,50 on treescap.gif followed by gifbuild dump shows "screen width 50" Port / giflib / usage-giflib-tools-r20-giftool-set-screen-size-50x50-format Passed
Pipes treescap.gif through giftool -s 50,50 to set the logical screen size and then runs gifbuild -d on the result, asserting the dump contains both literal lines "screen width 50" and "screen height 50", exercising the screen-size setter through the gifbuild dump distinct from prior 200x100, 20x20, and other screen-size cases.
gif2rgb -o on fire.gif emits .R, .G, .B planar files of equal positive size Port / giflib / usage-giflib-tools-r21-gif2rgb-fire-planar-rgb-bytes-equal Passed
Runs gif2rgb -o without -1 against fire.gif (multi-frame, 30x60) producing the planar .R/.G/.B sidecar files and asserts each file exists, all three are the same positive size, and the size equals the per-frame pixel count times the number of frames (33 frames * 30 * 60 = 59400 bytes per plane), exercising the planar tri-file output mode size invariant.
gifbuild -d on fire.gif dump first non-comment line contains the screen width directive Port / giflib / usage-giflib-tools-r21-gifbuild-fire-dump-version-line Passed
Runs gifbuild -d on fire.gif and asserts the first non-comment non-blank line is exactly "screen width 30", exercising the gifbuild dump structural shape that opens with the screen-descriptor directive on fire distinct from prior screen-size-line tests that only checked presence anywhere in the dump.
gifbuild -d on treescap.gif dump contains exactly one "screen width 40" line Port / giflib / usage-giflib-tools-r21-gifbuild-treescap-dump-screen-width-40 Passed
Runs gifbuild -d on treescap.gif and asserts the dump contains exactly one line matching the literal "screen width 40" (treescap is 40x40 single-screen-descriptor), exercising the gifbuild dump screen-width emission uniqueness on the treescap fixture distinct from prior screen-width tests that did not check uniqueness.
gifclrmp -g 1.0 on fire.gif applied twice converges to a fixed-point GIF Port / giflib / usage-giflib-tools-r21-gifclrmp-fire-identity-gamma-byte-equal Passed
Applies gifclrmp -g 1.0 (identity gamma) to fire.gif once, then applies it a second time to the result, and asserts the second and third outputs are byte-for-byte identical (the identity-gamma transform is idempotent after the first canonicalisation pass), exercising the gamma fixed-point property distinct from the existing 256-palette-row identity-gamma test.
gifclrmp -s on gifgrid.gif palette dump first row begins with index 0 Port / giflib / usage-giflib-tools-r21-gifclrmp-gifgrid-palette-first-row-zero-prefix Passed
Runs gifclrmp -s on gifgrid.gif and asserts the first non-empty line of the palette dump starts with the literal token "0" (index zero) followed by whitespace and three integer RGB values, exercising the index-prefix shape of the palette dump on gifgrid distinct from prior row-count and palette-bytes tests.
giffix on gifgrid.gif produces output of the same byte size as the input Port / giflib / usage-giflib-tools-r21-giffix-gifgrid-output-equals-input-size Passed
Runs giffix on the clean gifgrid.gif fixture and asserts the output file size equals the input file size (giffix downgrades the version magic but does not add/remove payload bytes on a clean input), exercising the giffix output-size invariant on gifgrid distinct from prior frame-count-preserved and trailing-junk-clean tests on other fixtures.
giftext on treescap.gif is deterministic across two consecutive invocations Port / giflib / usage-giflib-tools-r21-giftext-determinism-two-runs Passed
Runs giftext on treescap.gif twice and asserts the two stdout captures are byte-for-byte identical (parsing the same GIF must produce the same textual dump on the same machine), exercising the giftext output-determinism invariant distinct from prior single-invocation content tests.
giftext -c on treescap.gif reports Global Color Map "Sort Flag: off" Port / giflib / usage-giflib-tools-r21-giftext-treescap-sort-flag-off Passed
Runs giftext -c on treescap.gif (the -c flag enables colormap dumping with the sort-flag line) and asserts the textual dump contains the literal line "Sort Flag: off", exercising the giftext narrative emission of the color-table sort-flag bit distinct from the existing giftool -f %z numeric format-code test on fire.gif.
giftool -b 3 then -b 0 on treescap.gif yields background index 0 in giftool -f %b Port / giflib / usage-giflib-tools-r21-giftool-set-bgcolor-3-then-clear-format-zero Passed
Chains two giftool -b invocations against treescap.gif (first sets background to 3, then resets to 0) and asserts giftool -f %b reports 0 for every frame in the final output, exercising the background-index setter override behavior distinct from prior single-setter-only background tests.
giftool -d 30 applied twice on fire.gif is byte-for-byte identical to applying once Port / giflib / usage-giflib-tools-r21-giftool-set-delay-idempotent-twice Passed
Pipes fire.gif through giftool -d 30 once, then pipes the result through giftool -d 30 a second time, and asserts the two output GIFs are byte-for-byte identical, exercising the idempotence of the per-frame delay setter on a multi-frame fixture distinct from the prior single-application delay-setter tests.
CVE-2005-2974 giflib regression Port / giflib / cve-2005-2974 Passed
Asserts that gif2rgb rejects a crafted truncated GIF without a NULL-pointer crash, surfacing a documented decode error in bounded time.
CVE-2019-15133 giflib regression Port / giflib / cve-2019-15133 Passed
Asserts that DGifSlurp rejects a GIF whose image descriptor declares zero height instead of triggering a divide-by-zero exception inside the decoder.