test: DECCARA/DECRARA attribute vocabulary mostly unpinned #209

Closed
opened 2026-09-08 00:35:04 +09:00 by natsukium · 0 comments
Owner

What

The DECCARA/DECRARA test suites exercise only a slice of the attribute vocabulary the
issue's Where section names (bold, faint, italic, blink, reverse, underline variants,
invisible/conceal, strike).

Where

crates/felis-grid/src/editing.rsAttrEdit::from_params and reverse_attr_masks map
all of selectors 1-9 and 21-29: bold, faint, italic, underline (including the 4:n colon
shapes), blink (5|6), reverse, conceal, strikethrough, plus the 22-29 "off" aliases.

The snapshot and proptest suites, however, only ever exercise selector 1 (bold), 4
(underline — both plain and the 4:3 colon form, and the colon form only via DECRARA,
never DECCARA), 7 (reverse), and the 22/24 clear pair. Faint (2), italic (3), blink
(5|6), conceal (8), strikethrough (9), the clear aliases 23/25/27/28/29, and DECCARA's
own colon-form underline shape are never asserted by any test. A swapped or dropped
mapping for any of these (FAINT mapped to STRIKETHROUGH, italic silently no-op'd) would
pass the full suite.

Correction

Add table-driven (or a small parametrized set of) assertions covering every selector in
RECT_ATTRS for both DECCARA and DECRARA, including a DECCARA-side 4:n colon-shape case,
so the documented attribute subset is actually pinned.

Why deferred from #188

The issue's Tests section requires one snapshot per operation plus the DECSACE and
margin/origin-mode cases; it does not ask for table-driven coverage of every SGR
selector. Broader attribute-vocabulary coverage is valuable but is additional test
surface beyond the stated acceptance criteria.

Split from #188.

## What The DECCARA/DECRARA test suites exercise only a slice of the attribute vocabulary the issue's Where section names (bold, faint, italic, blink, reverse, underline variants, invisible/conceal, strike). ## Where `crates/felis-grid/src/editing.rs` — `AttrEdit::from_params` and `reverse_attr_masks` map all of selectors 1-9 and 21-29: bold, faint, italic, underline (including the 4:n colon shapes), blink (5|6), reverse, conceal, strikethrough, plus the 22-29 "off" aliases. The snapshot and proptest suites, however, only ever exercise selector 1 (bold), 4 (underline — both plain and the 4:3 colon form, and the colon form only via DECRARA, never DECCARA), 7 (reverse), and the 22/24 clear pair. Faint (2), italic (3), blink (5|6), conceal (8), strikethrough (9), the clear aliases 23/25/27/28/29, and DECCARA's own colon-form underline shape are never asserted by any test. A swapped or dropped mapping for any of these (FAINT mapped to STRIKETHROUGH, italic silently no-op'd) would pass the full suite. ## Correction Add table-driven (or a small parametrized set of) assertions covering every selector in `RECT_ATTRS` for both DECCARA and DECRARA, including a DECCARA-side 4:n colon-shape case, so the documented attribute subset is actually pinned. ## Why deferred from #188 The issue's Tests section requires one snapshot per operation plus the DECSACE and margin/origin-mode cases; it does not ask for table-driven coverage of every SGR selector. Broader attribute-vocabulary coverage is valuable but is additional test surface beyond the stated acceptance criteria. Split from #188.
Sign in to join this conversation.
No description provided.