Files
hcie-rust-v3.05/test_inventory.md
T
Your Name 8447b2d796
mandatory-regression-gate / deterministic-tests (push) Has been cancelled
mandatory-regression-gate / protected-performance-path (push) Has been cancelled
Refactor code structure for improved readability and maintainability
2026-07-23 15:34:05 +03:00

58 KiB
Raw Blame History

HCIE-Rust v3.05 — Complete Test Inventory

Generated: 2026-07-23 Project root: /mnt/extra/00_PROJECTS/hcie-rust-v3.05

Total: ~415+ #[test] functions across 23+ crates organized in 6 layers.


Table of Contents

  1. Layer 1: DATA
  2. Layer 2: ENGINE CORE
  3. Layer 4: ENGINE API
  4. Layer 6: GUI — egui
  5. Layer 6: GUI — iced
  6. Brush Catalog Crates

Layer 1: DATA

hcie-protocol — tests/helpers.rs

Line Function Summary
4 test_to_u32_from_u32_roundtrip Tests that packing and unpacking RGBA colors to/from u32 round-trips correctly for several test colors.
20 test_color_constants Verifies that TRANSPARENT, BLACK, WHITE, and RED constants have the expected RGBA values.
28 test_lerp_boundaries Confirms linear interpolation at t=0, t=0.5, and t=1 returns correct boundary/midpoint values.
35 test_color_lerp Verifies color lerp between two RGBA colors at 0.5 blend produces expected midpoint values.
46 test_lerp_clamp Confirms lerp clamps t values below 0 and above 1 to the range endpoints.
52 test_clamp Tests the clamp function with in-range, below-min, and above-max values.
59 test_distance Verifies Euclidean distance calculation (3-4-5 triangle) and zero-distance for same point.
65 test_point_in_rect Tests point_in_rect with points inside and outside a rectangle.
72 test_thumbnail_nearest Tests nearest-neighbor thumbnail generation from a 2×1 RGBA image to 1×1.
83 test_selection_rect_from_mask Verifies extracting a bounding rectangle from a selection mask with a 2×2 selected region.
95 test_blank_mask_no_selection Confirms a mask of all zeros returns None from selection_rect_from_mask.
101 test_blend_mode_all_contains_all Asserts that BlendMode::ALL contains exactly 28 blend modes.
106 test_all_tools_listed Asserts that Tool::ALL contains exactly 36 tools.
111 test_expand_dirty_bounds Tests expanding dirty bounds with a given rectangle, verifying the union result.
118 test_version_string_format Checks that the version string starts with "3." (expected format).
125 from_u32_to_u32_roundtrip Property-based test using proptest to verify u32 round-trip for random RGBA values.

hcie-color — tests/color_roundtrip.rs

Line Function Summary
4 test_gamma_encode_boundary_zero Verifies gamma encoding of 0.0 equals 0.0.
9 test_gamma_encode_boundary_one Verifies gamma encoding of 1.0 equals 1.0.
14 test_gamma_decode_boundary_zero Verifies gamma decoding of 0.0 equals 0.0.
19 test_gamma_decode_boundary_one Verifies gamma decoding of 1.0 equals 1.0.
24 test_gamma_roundtrip Ensures gamma encode→decode round-trip preserves values within 0.01 epsilon for 7 test values.
33 test_srgb_to_linear_black Confirms sRGB black [0,0,0] converts to linear [0.0, 0.0, 0.0].
38 test_srgb_to_linear_white Confirms sRGB white [255,255,255] converts to linear [1.0, 1.0, 1.0].
47 srgb_linear_roundtrip Property-based test verifying sRGB→linear→sRGB round-trip preserves values.
58 test_rgb_to_hsl_basic Tests RGB→HSL conversion for pure red, expecting H=0, S=1, L=0.5.
66 test_rgb_to_hsl_gray Tests RGB→HSL for gray (0.5,0.5,0.5), expecting S=0.
74 test_linear_to_srgb_clamps Confirms linear→sRGB clamps values below 0 to 0 and above 1 to 255.

Layer 2: ENGINE CORE

hcie-blend — tests/blend_modes.rs

Line Function Summary
5 test_normal_zero_opacity_identity Verifies that blending with opacity=0 returns the destination unchanged for Normal mode.
13 test_normal_full_opacity Verifies that Normal mode with opacity=1 outputs the source pixel unchanged.
21 test_opacity_zero_no_mutation_for_all_modes Confirms that opacity=0 returns dst unchanged for every blend mode (except PassThrough).
38 test_specific_blend_modes Parametric test (rstest) checking specific blend modes (Multiply, Screen, etc.) produce valid alpha.
51 test_transparent_src_normal Verifies that a fully transparent source leaves the destination unchanged.
59 test_all_modes_produce_valid_alpha Ensures all blend modes with opacity=0.5 produce valid u8 alpha values.
70 test_multiply_darkens Verifies Multiply blend mode darkens the destination channel.
78 test_screen_lightens Verifies Screen blend mode lightens the destination channel.
87 identity_at_zero_opacity Property-based test: random pixels blended with opacity 0 always equal the destination for all modes.

hcie-brush-engine — tests/stamp.rs

Line Function Summary
13 test_generate_brush_stamp_size Verifies a round brush stamp of size 10 produces a 20×20 square stamp buffer.
25 test_generate_brush_stamp_center_nonzero Confirms the center pixel of a hardness=1.0 round stamp is opaque.
34 test_generate_brush_stamp_hardness_gradient Checks that soft (0.0) and hard (1.0) stamps have the same buffer length.
45 test_brush_spacing_pixels Verifies brush_spacing_pixels returns size×ratio for 0.5 ratio and minimum ~0.2 for 0.0 ratio.
57 test_jitter_offset_within_bounds Confirms zero jitter amount produces zero offset.
64 test_bitmap_stamp_fallback_to_round Verifies that an empty bitmap stamp falls back to a round stamp (non-empty buffer).

hcie-brush-engine — src/lib.rs (internal)

Line Function Summary
4241 watercolor_detail_count_is_hard_bounded Verifies watercolor detail counts (satellites, splatters, blooms) stay within WATERCOLOR_MAX_DABS_PER_SAMPLE for sizes 0.51024.
4257 every_specialized_style_is_noop_at_zero_pressure Tests that all 28 specialized brush styles produce zero-painted pixels when pressure is 0.
4328 blender_preserves_uniform_color_and_transparency Verifies the Blender brush doesn't change uniform color fields and doesn't paint on empty areas.
4352 rotated_dab_uses_single_channel_stroke_mask Confirms rotated dabs write into a single-channel stroke mask during specialized stroke drawing.
4389 rotated_pen_respects_stroke_opacity_cap Verifies three overlapping pen dabs at 50% flow stay within the 50% stroke opacity cap (~128 alpha).
4430 pigment_mix_is_subtractive_and_bounded Confirms pigment mixing is subtractive (red+blue → dark purple) and respects blend factor boundaries.
4447 diagnostic_watercolor_sample_latency Diagnostic benchmark (ignored) measuring round dab and watercolor brush latency at various sizes.

hcie-draw — tests/draw_pixels.rs

Line Function Summary
4 test_draw_filled_rect Draws a filled red rectangle and checks the center pixel is red.
14 test_draw_filled_rect_outside Confirms pixels outside a drawn rectangle remain unchanged (transparent).
22 test_draw_filled_circle Draws a filled green circle and checks the center pixel is green.
30 test_draw_filled_ellipse Draws a filled blue ellipse and checks the center pixel is blue.
38 test_draw_line Draws a yellow horizontal line and checks a pixel on the line.
56 test_flood_fill Performs flood fill from (0,0) and checks that the filled area is red.
64 test_draw_with_mask_restricts_pixels Draws a rect with a mask where only pixel (0,0) is masked; verifies only that pixel is painted.
84 test_line_at_edge Draws a diagonal line from corner to corner and checks the start pixel.

hcie-composite — tests/

File Line Function Summary
pass_through.rs 24 test_pass_through_group_skipped_in_composite Verifies child layers in a PassThrough group blend directly onto the background (Multiply on white→gray).
pass_through.rs 56 test_pass_through_group_invisible_children Confirms invisible children of a PassThrough group are excluded and only background appears.
pass_through.rs 78 test_pass_through_group_with_opacity Documents current MVP behavior: PassThrough group opacity is skipped so child blends at full strength.
ff_visibility.rs 20 test_composite_visibility_from_protocol_layer Tests composite with protocol layers toggling visibility of background and top layers, printing opaque pixel counts.
visibility.rs 17 test_composite_visibility_toggle Tests compositing with both visible, background hidden, top hidden, and both hidden, asserting correct opaque pixel counts.

hcie-composite — src/test_composite.rs

Line Function Summary
5 test_composite_basic Basic composite test: single red layer output, then two layers (red background, blue overlay) checking top-wins compositing.

hcie-filter — tests/filters.rs

Line Function Summary
22 test_blur_does_not_panic Applies box_blur with radius 2 and checks dimensions remain valid.
30 test_gaussian_blur_does_not_panic Applies gaussian_blur with radius 2 and checks dimensions remain valid.
38 test_motion_blur_does_not_panic Applies motion_blur with distance 5, angle 45 and checks dimensions remain valid.
46 test_invert_filter Applies invert filter and verifies at least one pixel changed value.
55 test_grayscale_filter Applies grayscale filter and verifies R, G, B values differ by at most 3 (effectively gray).
69 test_filter_ids Checks that filter_ids() returns at least one filter and includes "invert" and "box_blur".
78 test_sharpen_does_not_panic Applies sharpen filter and checks dimensions remain valid.
86 test_unknown_filter_is_noop Confirms applying a nonexistent filter name leaves pixels unchanged.
94 test_unsharp_mask_does_not_panic Applies unsharp_mask with radius 2, amount 0.5 and checks dimensions remain valid.
102 test_brightness_contrast Applies brightness_contrast filter and confirms output contains non-zero pixel values.
110 test_hue_saturation_does_not_panic Applies hue_saturation filter and checks dimensions remain valid.
118 test_emboss_does_not_panic Applies emboss filter and checks dimensions remain valid.
126 test_find_edges_does_not_panic Applies find_edges filter and checks dimensions remain valid.

hcie-selection — tests/mask_ops.rs

Line Function Summary
2 test_create_rect_mask_full Creates a 4×4 rect mask covering the full area and verifies all values are 255.
8 test_create_rect_mask_partial Creates a partial rect mask (1,1 to 2,2 in 4×4) and verifies inside/outside pixels.
15 test_create_ellipse_mask Creates an ellipse mask and verifies center is selected, corner is not.
22 test_invert_mask Inverts a mask and verifies 255→0 and 0→255.
31 test_invert_twice_is_identity Inverts a mask twice and confirms the result equals the original.
45 test_grow_mask Grows a single selected pixel by 1 and verifies more pixels become selected.
54 test_grow_zero_is_noop Confirms growing by 0 leaves the mask unchanged.
66 test_shrink_mask Shrinks a fully-selected mask by 1 and verifies fewer selected pixels.
74 test_shrink_zero_is_noop Confirms shrinking by 0 leaves the mask unchanged.
82 test_grow_shrink_roundtrip Grows then shrinks a mask by 1 and verifies it returns to the original state.
97 test_feather_mask Feathers a 3×3 selected area with radius 1 and checks center remains 255 and corners are feathered.
110 test_feather_zero_is_noop Confirms feathering with radius 0 leaves the mask unchanged.
119 test_mask_at Tests mask_at with and without a mask, checking correct values returned at various positions.
131 test_magic_wand Tests magic wand selection on a 2×2 pixel grid, checking seed and adjacent same-color pixels are selected.
143 test_lasso_fill_mask Fills a 5×5 mask with a square lasso and verifies the center pixel is filled.

hcie-vector — src/lib.rs (internal)

Line Function Summary
1101 test_crescent_sharp_tips Verifies the crescent shape's outer and inner ellipse arcs meet exactly at both tips.
1129 test_bubble_tail_points Verifies the speech bubble contains the tail tip and inner connection points.
1154 test_rotate_point Tests rotating a point 90° around a center and verifies correct output coordinates.
1167 svg_points_follow_shape_angle Verifies SVG-backed shape rotation applies correctly around bounds center.

hcie-history — tests/history_state.rs

Line Function Summary
31 test_history_new_is_empty Verifies a new HistoryManager has len=0, can_undo=false, can_redo=false, index=-1.
40 test_history_push_undo_redo Pushes two pixel changes, undoes one step (checking pixel value), then redoes.
65 test_history_undo_twice_is_stable Verifies double-undo doesn't go past the bottom of the history stack.
79 test_history_redo_twice_is_stable Verifies double-redo doesn't go past the top of the history stack.
94 test_history_max_steps Pushes 10 actions with max_steps=3 and verifies only 3 are retained.
108 test_history_new_action_truncates_redo Undoes, then pushes a new action; verifies redo stack is truncated.
133 test_history_jump_to Pushes 3 actions, jumps to index -1, verifies at bottom with full redo stack.
161 test_entry_description Tests that entry_description returns the action description for valid indices and None for invalid.

hcie-history — src/lib.rs (internal)

Line Function Summary
126 first_entry_can_redo_from_pre_history_cursor Verifies the first history entry can be redone after undo when cursor starts at pre-history state.

hcie-fx — src/parser.rs (internal)

Line Function Summary
1671 test_parse_asl_emboss Tests parsing an ASL file for emboss styles, verifying styles are non-empty with UUIDs and effects. Ignored by default (requires fixture).

hcie-io — src/test_psd_composite.rs

Line Function Summary
3 test_psd_import_sizes_and_offsets Imports Example3-mini.psd, checks background has >1M non-zero pixels and named layers have correct data.
43 test_psd_composite_against_ref Full composite comparison of PSD layers against reference PNG, asserting MAE < 2.0 and match ≥ 88%.
241 test_layer_pixels_direct Compares raw layer pixels (layer 0 and all layers) against reference PNG pixel-by-pixel per layer.
301 test_base_generated_2_vs_merged Compares our composited output against ImageMagick-extracted PSD merged image.
345 test_blend_normal Tests basic src-over compositing with known RGBA values and prints expected vs actual.
364 test_teal_circle_emboss_debug Imports base_test_generated_2.psd, extracts the BevelEmboss effect from the teal circle layer.
378 test_base_generated_2_no_effects Composites with all effects disabled and compares against reference to measure baseline error.
420 test_base_generated_2_composite Composite and compare base_test_generated_2.psd against reference PNG.
428 test_hc_emboss_composite Composite and compare hc_emboss.psd against its reference PNG.
438 test_base_generated_2_effect_isolation Disables effects layer-by-layer, measuring MAE delta to isolate which effects contribute most to error.
491 test_check_soft_orange_pixels Prints RGBA values of specific pixels in Soft Orange Shape and Pink Rectangle layers.
516 test_find_orange_pixels Finds non-zero pixel bounds in Soft Orange Shape layer and samples pixels.
555 test_layer_bounds Computes and prints non-zero pixel bounds for every layer in base_test_generated_2.psd.
584 test_check_layer_offsets Finds leftmost/topmost non-zero pixels to determine layer position offsets.
621 test_save_layer_pixels Saves each layer as a separate PNG to /tmp for visual inspection.
635 test_pixel_layer_contributions Prints RGBA contributions from each layer at 5 specific pixel coordinates.
658 test_load_test_2_psd Loads and composites all PSDs from test_2 directory, printing load/composite times.
696 test_per_layer_effects_vs_photoshop_export Per-layer effect comparison: applies effects to each layer and compares against Photoshop-exported PNGs.
795 test_test2_effects_mae Computes MAE for all PSDs in test_2 directory against JPG references and prints average.
861 test_sultan_effects_mae Full sultan.psd composite analysis: per-layer skip analysis, grid-based MAE breakdown, debug saves.
1057 test_emboss_optimize emboss.psd detailed analysis: channel MAE, opaque-only MAE, regional grid, horizontal/vertical line scans, saves debug heatmaps.
1246 test_effects_survive_ffi_boundary Verifies that effects parsed from PSD survive the PSD→protocol layer boundary (effects > 0).
1276 test_ffi_bincode_roundtrip Verifies bincode serialization/deserialization round-trip preserves all layer effects.

hcie-psd — src/

File Line Function Summary
lib.rs 341 psd_signature_fail Verifies that loading a PNG file through Psd::from_bytes returns a PSD signature error.
psd_channel.rs 357 does_not_read_beyond_rle_channels_bytes Verifies RLE channel insertion doesn't read beyond channel bytes by testing 1×1 layer with RLE-compressed Red channel.
sections/file_header_section.rs 291 valid_channel_count Verifies ChannelCount::new accepts all channel counts from 1 to 56.
sections/file_header_section.rs 300 invalid_channel_count Verifies ChannelCount::new rejects 0 and 57.
sections/file_header_section.rs 307 incorrect_file_header_section_length Verifies a 25-byte input returns IncorrectLength error.
sections/file_header_section.rs 317 first_four_bytes_incorrect Tests that invalid first 4 bytes (wrong PSD signature) returns InvalidSignature error.
sections/file_header_section.rs 329 version_incorrect Tests that wrong version number returns InvalidVersion error.
sections/file_header_section.rs 339 invalid_reserved_section Tests that wrong reserved section returns InvalidReserved error.

hcie-vision — src/smart_patch.rs

Line Function Summary
415 identity_patch_on_uniform_regions_is_stable Smart patch on two identical uniform 120-gray 16×16 layers; verifies output changes by at most 1 per channel.
433 patch_interior_moves_toward_source_gradient Patches a gradient source into a uniform destination; verifies exterior unchanged and interior follows gradient direction.

hcie-build-info — src/lib.rs

Line Function Summary
31 generated_version_contains_the_same_build_id Verifies build_id() > 0 and VERSION string ends with "+build.{BUILD_ID}".

Layer 4: ENGINE API

hcie-engine-api — tests/visual_regression.rs

Line Function Summary
39 white_canvas_empty_document Validates blank 8×8 transparent document produces deterministic SHA-256 hash.
58 green_rect_draw_and_composite Draws a green rectangle and checks center pixel + deterministic hash.
79 red_rect_over_green_rect Two-layer composite (green bottom, red top) verifying top layer wins + hash.
109 vector_rect_golden Adds a vector rect shape and verifies rendering through Engine API with hash.
145 brush_stroke_golden Draws a brush stroke and verifies deterministic output via golden hash.
178 invert_filter_golden Applies invert filter and validates pixel values + deterministic hash.
200 undo_after_rect_golden Draws then undoes a rectangle; verifies composite hash matches initial state.
221 vector_fill_toggle_and_delete Creates vector rect, toggles fill on/off, deletes shape, verifying state at each step.

hcie-engine-api — tests/vector_creation_history.rs

Line Function Summary
35 first_vector_shape_is_one_atomic_layer_transaction Verifies first vector shape auto-creates vector layer as one history transaction with correct description.
71 later_vector_shapes_each_add_one_snapshot Verifies later vector shapes on the same layer each add one snapshot and undo correctly reduces shape count.

hcie-engine-api — tests/meadow_check.rs

Line Function Summary
18 meadow_brush_visual_check Manual visual check: renders Meadow brush strokes to 512×512 canvas and saves PNG; asserts colored pixels exist.

hcie-engine-api — tests/leaves_check.rs

Line Function Summary
11 leaves_brush_visual_check Manual visual check: renders Leaf brush strokes and saves to PNG; asserts colored pixels exist.

hcie-engine-api — tests/stamp_floor_check.rs

Line Function Summary
11 stamp_floor_brush_visual_check Manual visual check: renders Dirt/StampFloor brush strokes and saves to PNG; asserts colored pixels exist.

hcie-engine-api — tests/bitmap_brush_stamp.rs

Line Function Summary
4 bitmap_brush_stamp_shape Tests bitmap brush stamp produces roughly square bounding box (~8×8) with enough painted pixels.

hcie-engine-api — tests/selection_clear.rs

Line Function Summary
30 clear_selection_pixels_clears_inside_and_preserves_outside Creates 3×3 opaque layer, selects center pixel, clears selection; verifies center cleared, outside preserved.

hcie-engine-api — tests/performance_stroke_4k.rs

Line Function Summary
41 benchmark_4k_stroke_on_multilayer_document Performance benchmark: 10 layers on 3840×2160 canvas, 100 stroke segments with per-segment timing.

hcie-engine-api — src/stroke_brush.rs (internal)

Line Function Summary
547 watercolor_dirty_radius_covers_jitter_and_scatter Verifies brush_dirty_radius for watercolor with jitter/scatter matches expected value 74.8.

Layer 6: GUI — egui

hcie-gui-egui — tests/canvas_engine.rs

Line Function Summary
23 canvas_widget_creation Tests CanvasWidget can be created and rendered in an egui test UI.
41 canvas_widget_zoom_0_1 Tests canvas widget renders with zoom=0.1.
45 canvas_widget_zoom_0_5 Tests canvas widget renders with zoom=0.5.
49 canvas_widget_zoom_1_0 Tests canvas widget renders with zoom=1.0.
53 canvas_widget_zoom_2_0 Tests canvas widget renders with zoom=2.0.
57 canvas_widget_zoom_4_0 Tests canvas widget renders with zoom=4.0.
61 canvas_widget_zoom_8_0 Tests canvas widget renders with zoom=8.0.
65 canvas_widget_zoom_min Tests canvas widget renders at ZOOM_MIN.
69 canvas_widget_zoom_max Tests canvas widget renders at ZOOM_MAX.
83 canvas_widget_pen Tests canvas widget with Pen tool.
87 canvas_widget_brush Tests canvas widget with Brush tool.
91 canvas_widget_eraser Tests canvas widget with Eraser tool.
95 canvas_widget_rect Tests canvas widget with VectorRect tool.
99 canvas_widget_line Tests canvas widget with VectorLine tool.
103 canvas_widget_select Tests canvas widget with Select tool.
107 canvas_widget_lasso Tests canvas widget with Lasso tool.
111 canvas_widget_magic_wand Tests canvas widget with MagicWand tool.
115 canvas_widget_eyedropper Tests canvas widget with Eyedropper tool.
119 canvas_widget_flood_fill Tests canvas widget with FloodFill tool.
123 canvas_widget_gradient Tests canvas widget with Gradient tool.
127 canvas_widget_move Tests canvas widget with Move tool.
131 canvas_widget_crop Tests canvas widget with Crop tool.
136 canvas_widget_with_pan Tests canvas widget with pan offset applied.
146 canvas_widget_with_selection Tests canvas widget with a selection rectangle active.
156 canvas_widget_lasso_with_points Tests canvas widget with Lasso tool and lasso points.
167 canvas_widget_text_active Tests canvas widget with Text tool and draft text active.
181 app_document_zoom_roundtrip Tests Zoom round-trip for many zoom values (0.164.0) through AppDocument.
193 engine_composite_after_draw Tests Engine compositing after drawing a green rectangle through AppDocument.
207 engine_multi_layer_composite Tests multi-layer compositing through AppDocument (adds layer, draws red rect, checks pixel).
218 transform_handle_variants Basic match test ensuring all TransformHandle variants exist.
232 selection_transform_from_engine_empty_mask Tests SelectionTransform::from_engine with empty mask produces empty transform.
241 zoom_clamp_values Tests zoom clamping for values from -1.0 to 100.0 stays within [ZOOM_MIN, ZOOM_MAX].
257 event_bus_events_dispatched_to_engine Tests that engine undo changes composite pixel values through AppDocument.
267 test_text_layer_rotation Adds rotated text layer and verifies at least one non-transparent pixel was rasterized.

hcie-gui-egui — tests/gui_audit.rs

Line Function Summary
6 test_all_tools_in_toolbox_groups Verifies every Tool variant is present in TOOL_SLOTS.
23 test_all_tools_have_labels Verifies every tool has a non-empty label().
32 test_all_tools_have_icons Verifies every tool has a non-empty icon().
41 test_all_blend_modes_have_labels Verifies every BlendMode has a non-empty label().
50 test_tools_menu_coverage Verifies expected tools in menu are defined in Tool::ALL.
81 test_view_menu_panels_match Verifies panel labels are unique.
102 test_all_tools_layer_type_known Calls allowed_layer_type() on every tool to ensure it doesn't panic.
110 test_feature_flags_are_non_empty Verifies all_features() returns non-empty flags including "layers", "undo_redo", "selection".
123 test_app_event_variants_exist Creates an EventBus to verify the module exists.
131 test_dock_panels_have_icons Verifies all HciePane variants have icons.
154 test_shape_tools_consistency Verifies 15 specific shape tools return true for is_shape_tool().
181 test_raster_tools_consistency Verifies raster tools are also raster_compatible.
194 test_brush_presets Verifies 5 brush presets have positive size and opacity.
211 test_canvas_presets Verifies 1080p and Instagram canvas presets have correct dimensions.

hcie-gui-egui — tests/widget_ui.rs

Line Function Summary
24 plain_slider_default_range Tests slider with in-range value (50 in 0..100) stays at 50.
29 plain_slider_out_of_range_clamps Tests slider clamps value above range to max.
34 plain_slider_negative_clamps Tests slider clamps negative value to range min.
39 plain_slider_suffix Tests slider renders with "px" suffix.
49 plain_slider_integer_type Tests slider with i32 integer type.
58 plain_slider_custom_width Tests slider with custom width.
68 plain_slider_both_themes Tests slider renders with both ProDark and PhotoshopLight themes.
79 tool_state_default_active_tool_is_brush Verifies default active tool is Brush.
85 tool_state_default_colors Verifies default primary (black) and secondary (white) colors.
92 tool_state_default_pressure Verifies default pressure is 1.0.
98 tool_state_default_not_drawing Verifies default state has is_drawing=false, no drag start, no selection rect.
106 tool_state_default_tool_configs Verifies active_size() returns a positive value.
113 tool_state_default_brush_presets Verifies default brush presets exist and active preset is "basic_round".
120 tool_state_pinned_panels_default Verifies default pinned panels include Tools, Brushes & Tips, Color Palette, Layers.
129 app_document_new_defaults Tests AppDocument default state (name, zoom=1, no textures, empty buffer).
139 app_document_engine_accessible Verifies AppDocument wraps Engine with correct canvas dimensions.
147 app_document_default_name Tests AppDocument name is set correctly.
153 event_bus_push_pop Tests EventBus push and pop single event.
166 event_bus_fifo_order Tests EventBus maintains FIFO order.
177 event_bus_drain Tests EventBus drain returns all events.
189 event_bus_tool_changed Tests EventBus pushes/reads ToolChanged event.
197 event_bus_zoom_set Tests EventBus pushes/reads ZoomSet event.
205 event_bus_theme_changed Tests EventBus pushes/reads ThemeChanged event.
216 event_bus_apply_filter Tests EventBus pushes/reads ApplyFilter event with params.
226 event_bus_multiple_events Tests EventBus with three selection events in sequence.
238 event_bus_new_empty Tests new EventBus is empty.
245 event_bus_doc_created Tests EventBus pushes/reads DocCreated event with name, width, height.
260 tool_button_selected Tests ToolButton renders in selected state.
268 tool_button_unselected Tests ToolButton renders in unselected state.
276 tool_button_both_themes Tests ToolButton renders with both themes.
286 plain_slider_logarithmic Tests slider in logarithmic mode.
296 plain_slider_snap_steps Tests slider with snap steps.
306 plain_slider_percent_suffix Tests slider with "%" suffix.
316 plain_slider_u8_range Tests slider with u8 range.
325 plain_slider_usize_range Tests slider with usize range.
334 selection_op_variants Tests SelectionOp enum variants can be constructed.
343 event_bus_selection_shrink Tests EventBus SelectionShrink event.
351 event_bus_selection_feather Tests EventBus SelectionFeather event.
359 event_bus_selection_erode Tests EventBus SelectionErode event.
367 event_bus_selection_fade Tests EventBus SelectionFade event.
375 event_bus_clipboard_cut Tests EventBus ClipboardCut event.
383 event_bus_clipboard_paste_special Tests EventBus ClipboardPasteSpecial event.
391 event_bus_layer_added Tests EventBus LayerAdded event.
399 event_bus_layer_deleted Tests EventBus LayerDeleted(42) event.
407 event_bus_rotate_clockwise Tests EventBus RotateClockwise event.
415 event_bus_rotate_counter_clockwise Tests EventBus RotateCounterClockwise event.
423 event_bus_rotate_180 Tests EventBus Rotate180 event.
431 event_bus_rotate_layer Tests EventBus RotateLayer(45) event.
439 event_bus_flip_horizontal Tests EventBus FlipHorizontal event.
447 event_bus_flip_vertical Tests EventBus FlipVertical event.
455 event_bus_layer_clear Tests EventBus LayerClear event.
463 event_bus_transform_start Tests EventBus TransformStart event.
471 event_bus_image_size Tests EventBus ImageSize event.
479 event_bus_canvas_size Tests EventBus CanvasSize event.
487 event_bus_ai_chat_submit Tests EventBus AiChatSubmit event.
495 event_bus_adjustment_brightness_contrast Tests EventBus ApplyAdjustmentBrightnessContrast event.
505 event_bus_adjustment_hue_saturation Tests EventBus ApplyAdjustmentHueSaturation event.
515 event_bus_vector_shape_deleted Tests EventBus VectorShapeDeleted event.
523 event_bus_file_export_import Tests EventBus Export/Import/ImportBrushes events.
534 event_bus_align_all_axes Tests EventBus AlignLayer event for all 6 align axes (HCenter, VCenter, Top, Bottom, Left, Right).

hcie-gui-egui — src/brush_import.rs (internal)

Line Function Summary
604 test_extract_desc_block_names Tests extracting descriptor block names from an ABR brush file; verifies names are descriptive.
623 test_abr_import_with_names Tests importing ABR brush presets; verifies bitmap presets have descriptive names.

Layer 6: GUI — iced

hcie-iced-gui — tests/selection_test.rs

Line Function Summary
11 test_selection_transform_is_empty Verifies empty SelectionTransform returns true for is_empty().
24 test_selection_transform_with_data Verifies non-empty SelectionTransform returns false for is_empty().
37 test_crop_state_lifecycle Tests CropState: start_drag, update_drag, end_drag, confirm lifecycle.
63 test_crop_cancel Tests CropState cancel restores idle state.
73 test_transform_handle_cursor_hints Verifies cursor_hint() returns correct strings for Move, TopLeft, Rotate handles.
80 selection_modes_combine_alpha_without_losing_soft_edges Tests combine_masks with Replace, Add, Subtract, Intersect modes.
99 irregular_mask_bounds_and_fill_spans_are_exact Tests mask_bounds and selected_spans on irregular mask.
109 crop_clamps_drag_and_cancel_restores_idle_state Tests CropState start_drag_clamped, update_drag clamped to canvas, cancel restores state.
120 clipboard_transform_is_centered_and_transform_geometry_is_safe Tests centered_transform produces correct position and sanitize_geometry handles NaN/negative sizes.
136 inverse_affine_identity_sampling_is_exact Verifies the inverse-affine rasterizer preserves identity placement exactly.
159 rotated_bounds_expand_to_cover_corners Tests that rotated bounds include every corner rather than clipping to unrotated box.
177 rotated_handle_hit_test_and_resize_share_geometry Verifies rotated handle hit-testing and opposite-corner anchoring during resize.
204 rotation_drag_adds_delta_to_original_angle Verifies rotation uses drag-start delta and retains pre-existing rotation.

hcie-iced-gui — tests/feature_scorecard.rs

Line Function Summary
55 semantic_menu_dispatch_has_no_positional_message Verifies menu uses semantic MenuCommand dispatch not positional (usize, usize).
73 cut_does_not_dispatch_copy Verifies Cut uses distinct MenuCommand::Cut not menu-alias-based Copy.
91 cycle_three_canvas_selection_clipboard_crop_text_paths_are_connected Verifies selection overlay, distinct cut, transform placement, crop lifecycle, text multiline, gradient, canvas input parity, and pen/spray distinct.
152 screenshot_cli_uses_native_capture_and_panel_crop Verifies screenshot CLI uses native window capture and panel crop functions.
170 cycle_one_state_paths_are_complete_and_persisted Verifies dock drop targets, theme sync isolation, and sidebar mode persistence.
211 cycle_two_vector_completion_paths_are_connected Verifies vector screen-constant handles, constrained drag, layer-bound cancel, boolean result, and clamped controls.
252 cycle_four_panel_and_document_paths_are_connected Verifies layer hierarchy controls, style cancel/restore, immutable previews, filter schema coverage, document path identity, and close-save continuation.
316 cycle_five_practical_paths_are_connected Verifies AI real streaming, reasoning transcript, validated script output, viewer deterministic navigation, and safe edit.

hcie-iced-gui — tests/raster_test.rs

Line Function Summary
6 linear_gradient_interpolates_and_respects_mask Tests linear gradient interpolation with pixel mask applied.
27 radial_gradient_uses_distance_from_origin Tests radial gradient using distance from origin.

hcie-iced-gui — src/app.rs (internal)

Line Function Summary
1536 move_commit_pushes_one_named_snapshot Tests apply_transform_to_layer pushes exactly one history entry named "Move Selection".
10083 popup_and_menu_escape_priority_is_stable Tests overlay_escape_target returns correct priority ordering.
10098 document_tab_close_uses_semantic_continuations Tests document_close_disposition for dirty, clean, last-tab, and invalid scenarios.
10119 document_tab_close_keeps_active_index_safe Tests active_index_after_document_close produces safe indices.
10128 selection_sync_request_is_consumed_once Tests consume_selection_sync_request flag is consumed once and stays false until reset.
10140 dirty_region_union_retains_all_updates_before_view Tests union_regions correctly merges two overlapping regions.
10152 proximate_identical_color_is_skipped Tests is_proximate_to_last returns true for identical colors (diff=0 ≤ threshold).
10163 proximate_small_slider_step_skipped Tests is_proximate_to_last returns true for +1 channel change.
10171 large_change_not_proximate Tests is_proximate_to_last returns false for +3 in all channels.
10179 three_unit_change_exceeds_threshold Tests is_proximate_to_last returns false for single +3 channel change.
10187 mixed_small_changes_are_proximate Tests is_proximate_to_last returns true for +1 in all channels.

hcie-iced-gui — src/app/transform_dirty.rs

Line Function Summary
70 consecutive_positions_retain_old_and_new_extents Tests that two consecutive transform positions produce correct old+new union bounds.

hcie-iced-gui — src/color_picker.rs

Line Function Summary
1048 rgb_hsl_roundtrip_preserves_channels_with_rounding_tolerance Tests RGB→HSL→RGB roundtrip for 4 colors with ≤1 tolerance per channel.
1059 rgb_hsv_roundtrip_preserves_channels_with_rounding_tolerance Tests RGB→HSV→RGB roundtrip for 4 colors with ≤1 tolerance per channel.
1070 hex_parser_preserves_or_explicitly_updates_alpha Tests parse_hex_color with 6-digit, 8-digit, and invalid hex strings.

hcie-iced-gui — src/ai_chat.rs

Line Function Summary
794 canvas_context_replaces_only_latest_user_payload Tests build_messages_json replaces only the latest user message with canvas context.
818 transcript_includes_reasoning_and_tool_results Tests transcript_text includes reasoning and tool messages correctly.

hcie-iced-gui — src/ai_script.rs

Line Function Summary
244 generated_output_must_parse_before_run_is_enabled Tests validate_script_output accepts valid DSL and rejects invalid input.

hcie-iced-gui — src/screenshot.rs

Line Function Summary
126 physical_crop_scales_and_clamps Tests physical_crop_rect scaling rounds outward and clamps to viewport.

hcie-iced-gui — src/sidebar/mod.rs

Line Function Summary
858 every_subtool_has_an_svg_icon Tests that every tool in TOOL_SLOTS has a resolvable SVG icon path.

hcie-iced-gui — src/theme.rs

Line Function Summary
65 theme_state_retains_and_reports_selected_preset Tests ThemeState preset changes are retained and colors updated accordingly.

hcie-iced-gui — src/viewer/mod.rs

Line Function Summary
989 navigation_wraps_deterministically Tests ViewerState prev/next wraps correctly with 2 images.
999 supported_extensions_are_case_insensitive Tests is_supported_image is case-insensitive and rejects non-image files.

hcie-iced-gui — src/settings.rs

Line Function Summary
367 legacy_settings_default_new_cycle_one_fields Tests deserializing legacy settings (without new fields) gets safe defaults.

hcie-iced-gui — src/cli.rs

Line Function Summary
206 parses_full_screenshot_and_startup_file Tests CLI parses --screenshot flag with output file and startup file.
223 parses_named_panel_screenshot Tests CLI parses --screenshot-panel flag.
229 parses_svg_editor_screenshot Tests CLI parses --screenshot-svg-editor flag.
237 rejects_duplicate_positional_files Tests CLI rejects multiple positional file arguments.
242 supports_dash_prefixed_file_after_terminator Tests CLI supports dash-prefixed filenames after -- terminator.

hcie-iced-gui — src/canvas/shader_canvas.rs

Line Function Summary
1282 selection_overlay_uses_one_texture_sample Verifies the WGSL shader uses exactly one textureSample(selection_texture call (anti-regression for nine-sample detector).

hcie-iced-gui — src/canvas/texture_update.rs

Line Function Summary
196 retained_shader_reference_keeps_stable_allocation_and_dirty_budget Tests that retained shader reference keeps stable allocation and correct dirty budget over 120 updates.
227 legacy_arc_copy_on_write_reproduction_is_full_canvas Demonstrates that Arc::get_mut on a cloned Arc returns None, forcing 33MB fallback clone (documents removed CoW fallback).
237 packed_update_is_exact_and_bounds_checked Tests TextureUpdate::pack produces correct rows and rejects invalid regions.
253 diagnostic_4k_dirty_staging_latency Diagnostic benchmark (ignored) measuring 4K dirty region staging latency and byte reduction vs legacy.

hcie-iced-gui — src/selection/state.rs

Line Function Summary
188 selection_texture_encodes_membership_and_border_once Tests encode_selection_texture correctly classifies interior (128), border (255), and empty (0).
212 feathered_mask_uses_existing_threshold Tests feathered mask encoding: values >127 become 255 (border), ≤127 become 0 (outside).

hcie-iced-gui — src/panels/menus.rs

Line Function Summary
1205 enabled_menu_leaves_have_commands Verifies enabled menu items always have a command and submenus never have commands.
1232 recent_file_commands_are_path_based Tests recent file menu items use path-based commands, not positional indices.
1253 implemented_static_menu_leaves_match_audited_set Snapshot test: verifies all 153 enabled menu entries match expected paths.
1423 context_cut_is_enabled_and_distinct_from_copy Verifies context Cut uses MenuCommand::Cut with enabled=true.
1432 shared_menu_metrics_keep_rows_compact_and_gutters_stable Verifies MENU_ROW_HEIGHT, paddings, gutters, and arrow character are within expected ranges.

hcie-iced-gui — src/panels/styles.rs

Line Function Summary
319 tooltip_balloon_is_opaque_and_uses_theme_contrast_tokens Tests tooltip balloon background opacity, text color, border, and shadow in two themes.

hcie-iced-gui — src/panels/custom_shapes.rs

Line Function Summary
211 responsive_grid_adds_columns_as_width_grows Tests grid_column_count adds one column per ~64px of width (with margin).

hcie-iced-gui — src/panels/brushes.rs

Line Function Summary
874 catalog_contains_every_engine_brush_style Asserts BRUSH_STYLES has exactly 34 entries.
879 category_filter_keeps_expected_groups Tests category_matches_style for various category combinations.
900 media_crates_expose_complete_unique_catalog Verifies all media brush crates combined give exactly 47 unique presets.

hcie-iced-gui — src/panels/svg_editor.rs

Line Function Summary
874 straight_paths_retain_author_nodes Tests straight SVG paths retain their exact node count.
882 curved_paths_fall_back_to_dense_visual_nodes Tests curved SVG paths flatten to ≥19 visual nodes.
892 selection_updates_numeric_inputs_and_snap_is_deterministic Tests node selection updates x/y inputs, snap function works correctly, and toggling snap off.

hcie-iced-gui — src/panels/title_bar.rs

Line Function Summary
299 menu_anchors_are_deterministic_across_viewport_widths Tests menu_anchor_x calculation for various indices and viewport widths.

hcie-iced-gui — src/vector_edit.rs

Line Function Summary
386 overlap_selection_cycles_without_external_counter Tests cycle_selection cycles through hit indices in reverse order without external state.
397 handle_hit_area_is_screen_constant_across_zoom Tests hit_test_handle returns correct handle at two different zoom levels.
416 rotation_handle_offset_is_screen_constant_at_low_zoom Tests rotation handle offset is screen-constant at 0.25 zoom.
430 every_resize_handle_prevents_inversion_and_nan Tests all 8 resize handles prevent inversion and NaN with extreme/finite deltas.
463 shift_aspect_and_alt_center_constraints_hold Tests Shift+Alt resize preserves 2:1 aspect ratio and original center.
480 drag_is_deterministic_and_rejects_non_finite_input Tests transform_shape returns correct moved bounds and handles NaN gracefully.
498 rotated_handle_hit_test_uses_rotated_position Tests hit_test_handle works correctly with a 90° rotated shape.

hcie-iced-gui — src/widgets/plain_slider.rs

Line Function Summary
442 percentage_format_parse_and_clamp_are_stable Tests slider format_value with "%" suffix and parse_value clamping.
450 hover_typing_accepts_only_numeric_fragments Tests typing state accepts "-" and numeric fragments, rejects "px".
460 pointer_mapping_respects_endpoints_and_step Tests value_at maps 0→0%, 100→100%, 33→~33%.

hcie-iced-gui — src/dock/state.rs

Line Function Summary
161 pane_labels_round_trip Tests PaneType::from_label round-trip is case-sensitive.
168 pane_drops_support_all_regions_and_preserve_one_canvas Tests all dock drop regions accept non-Canvas panes and reject Center for non-Canvas.
195 canvas_drop_is_rejected_and_auto_hide_restores_uniquely Tests Canvas pane drops reject, auto-hide/restore works, and invariants hold.
214 floating_panel_redocks_at_preview_target_and_can_minimize Tests floating panel float, redock at target, auto-hide floating, and invariants.
234 global_release_clears_click_only_and_floating_drag_state Tests cancel_transient_drags clears both drag and floating_drag state.

hcie-iced-gui — src/dock/manager.rs

Line Function Summary
145 policy_matrix_allows_only_tool_edges Tests DockDropPolicy::accepts rejects Canvas for Center and allows non-Canvas for edges.
162 document_cannot_close_auto_hide_or_float Tests DockDropPolicy::accepts_placement rejects Canvas for Closed, AutoHidden, Floating.

hcie-iced-gui — src/dock/sizing.rs

Line Function Summary
436 policy_values_prioritize_canvas_and_bound_color_picker Tests panel_size_policy values for Canvas (min 320×240, grow priority) and ColorPicker (preferred 280×460, bounded).
451 subtree_constraints_follow_split_axis Tests aggregate_subtree_policy produces correct min/max for Canvas+ColorPicker split.
462 default_and_compact_viewports_have_feasible_bounds Tests both 1280×820 and 1100×700 viewports satisfy all panel minimums in default dock.
483 color_picker_does_not_receive_vertical_surplus_with_list_sibling Tests vertical surplus distribution keeps ColorPicker within its height bounds with a Layers sibling.
509 structure_rebalance_avoids_oversized_color_picker Tests StructureChanged rebalance corrects 50/50 split to give Canvas >60%.
526 user_resize_preserves_valid_and_clamps_invalid_ratios Tests constrain_user_resize_ratio preserves 0.7 and clamps 0.95 to a feasible range.
536 window_growth_gives_surplus_to_canvas Tests WindowResize rebalance gives all extra width to Canvas, not utility panels.
555 color_picker_minimum_height_is_420 Asserts ColorPicker minimum height policy is exactly 420 pixels.

hcie-iced-gui — src/dock/persistence.rs

Line Function Summary
171 persisted_layout_round_trips_without_runtime_ids Tests PersistedDockLayout serialization strips runtime Pane IDs and round-trips with valid invariants.
180 malformed_tree_deduplicates_and_injects_canvas Tests restore handles duplicate panels (two Layers) by deduplicating and injecting Canvas.
201 missing_new_fields_are_serde_compatible Tests that minimal JSON ({"tree":null}) deserializes with empty auto_hidden and floating.
208 ratio_sanitization_accepts_extreme_finite_values_only Tests sanitized_ratio accepts 0.02, clamps 0.999→0.99, and converts NaN→0.5.
221 floating_round_trip_clamps_and_redocks_uniquely Tests floating panel serialization, clamp within viewport, and unique redock.

hcie-iced-gui — src/dock/view.rs

Line Function Summary
707 title_bar_uses_explicit_drag_handle_and_separate_controls Verifies the dock title bar uses explicit mouse_area drag handle and separate controls, not Fill space.

hcie-iced-gui — src/dock/preview.rs

Line Function Summary
198 centers_are_never_approved Tests approved_target returns None for grid center point.
210 outer_and_pane_edges_are_approved Tests approved_target correctly identifies left outer edge and top pane edge.
230 narrow_viewport_clamps_to_empty_bounds Tests narrow viewport (toolbox > viewport width) produces zero-size grid.
239 edge_classification_matches_iced_thirds_and_priority Tests pane_edge returns correct edge within first third and None in middle.
257 outer_edge_uses_iced_dynamic_thickness_and_priority Tests outer_edge returns correct edge within first 10px and None beyond.

hcie-iced-gui — src/dock/floating.rs

Line Function Summary
118 default_rect_clamps_to_small_viewports Tests default_rect clamps position so 240×180 window fits in 4-pane viewport.

Brush Catalog Crates

Crate File Line Function Summary
hcie-dry-media-brushes src/lib.rs 246 dry_media_catalog_is_complete_and_unique Verifies exactly 19 dry media presets with unique IDs.
hcie-paint-brushes src/lib.rs 129 paint_catalog_is_complete_and_unique Verifies exactly 7 paint presets with unique IDs.
hcie-digital-brushes src/lib.rs 144 digital_catalog_separates_raster_and_vector_tools Verifies 5 digital presets and 2 vector brush presets.
hcie-watercolor-brushes src/lib.rs 438 presets_count Verifies exactly 8 watercolor presets.
hcie-watercolor-brushes src/lib.rs 443 all_presets_use_watercolor_style Verifies all watercolor presets use BrushStyle::Watercolor.
hcie-watercolor-brushes src/lib.rs 450 splat_dimensions Verifies render_watercolor_splat produces SPLAT_SIZE×SPLAT_SIZE×4 pixels.
hcie-watercolor-brushes src/lib.rs 456 splat_has_nonzero_alpha Verifies the rendered splat has at least one visible (non-zero alpha) pixel.
hcie-ink-brushes src/lib.rs 141 ink_catalog_is_complete_and_unique Verifies exactly 8 ink presets with unique IDs.

Summary

Category Approx. Count
Layer 1: DATA (protocol, color) 27
Layer 2: ENGINE CORE (blend, brush, draw, composite, filter, selection, vector, history, fx, io, psd, vision, build-info) ~155
Layer 4: ENGINE API 15
Layer 6: GUI — egui (canvas_engine, gui_audit, widget_ui, brush_import) ~90
Layer 6: GUI — iced (selection, feature_scorecard, raster, app, dock, panels, widgets, color, ai, etc.) ~120+
Brush catalog crates 8
Total ~415+