# Verification Note: bf-5d2id - Add unmapped glyph absence assertion to test ## Summary Added unmapped glyph absence assertion to the CMAP parsing test to verify that configured unmapped glyphs are properly filtered out. ## Changes Made - **File Modified**: `crates/pdftract-core/tests/cmap_unmapped_glyphs.rs` - **Test Updated**: `test_cmap_unmapped_glyph_skip` ## Implementation Details ### Assertions Added Added two new assertions to `test_cmap_unmapped_glyph_skip`: 1. **Count Verification**: Asserts the CMAP contains exactly the expected number of mappings (1 entry for byte 0x00 → 'A'). This ensures no spurious entries exist that might indicate unmapped glyphs were not properly filtered. 2. **Validity Check**: Iterates over all CMAP entries and verifies each has valid Unicode destinations, with a clear failure message if an unmapped glyph was not filtered correctly. ### Assertion Messages The failure messages are clear and specific: - **Count assertion**: `"CMAP should contain exactly 1 mapping (byte 0x00 → 'A'). Additional entries may indicate unmapped glyphs were not properly filtered."` - **Validity assertion**: `"CMAP entry for bytes {:02X?} has invalid destination: {:?}. This may indicate an unmapped glyph was not filtered correctly."` ## Test Results ✅ **PASS**: `test_cmap_unmapped_glyph_skip` - Compiled and ran successfully - The test correctly verifies that unmapped glyphs (g001-g003, .notdef, .null as configured in `build/unmapped-glyph-names.json`) are absent from the CMAP output ## Notes The CMAP output structure maps byte sequences to Unicode characters, not glyph names directly. Therefore, the unmapped glyph filtering is verified indirectly by: 1. Ensuring the map contains only valid, expected entries 2. Checking that no entries have invalid or suspicious Unicode destinations The differences overlay tests (`test_differences_overlay_filters_unmapped_glyphs`, etc.) provide direct verification of unmapped glyph name filtering since they work with glyph names directly. ## Acceptance Criteria Met - ✅ Test asserts unmapped glyphs are absent from CMAP - ✅ Assertion message is clear and helpful - ✅ Test compiles and runs - ✅ Failure message identifies which mapping should be absent (via byte sequence inspection) ## References - Parent bead: bf-okdnk (CMAP parsing) - Fixture: build/unmapped-glyph-names.json - Related test: `test_differences_overlay_filters_unmapped_glyphs` (differences overlay filtering)