Commit Graph

1 Commits

Author SHA1 Message Date
Dion Moult 379f913f65 wgpu tests: port selection + visibility state coverage
Two Tier-1 unit binaries under src/ifcviewer-wgpu/tests/ — same Catch2
+ CTest harness as the surviving GL-side tests, gated by
BUILD_BONSAIVIEWER_TESTS.

- test_wgpu_selection: 17 cases / 71 assertions covering replace, add,
  remove, toggle, clear, contains, count, selectionIds, fillFlagsArray,
  active-id semantics, dirty-bit, and id == 0 sentinel handling.
- test_wgpu_visibility: 8 cases / 27 assertions covering hide, show,
  clear, isHidden, hiddenIds, idempotence, and the 0 sentinel.

The wgpu state classes have a deliberately simpler shape than the GL
ones (no Q_OBJECT, no signals — replaced by a dirty bit; no bulk
set/add/remove methods — bulk behaviour lives in the viewport verbs).
One *intentional* behavioural difference is documented in the test:
add(id) steals active in the wgpu API, where GL's addToSelection kept
the prior active. Each pick should drive the properties panel to the
most recently touched object.

Bulk hide/isolate/show-all semantics live in WgpuViewportWindow, which
composes WgpuVisibilityState + the model instance lists; those are
integration-level, not Tier-1, so they're not covered here.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-01 17:39:34 +10:00