Cockatrice/tests
Bryce! 078d0858a3
[Game] Reveal multiple distinct random hand cards to a recipient (#7753)
* Add distinct random hand reveals with private recipient delivery

* Route random hand reveals through PlayerActions

Keep command creation, dispatch and response handling in the game action
layer. HandMenu requests the typed operation and presents the count and
failure dialogs. Show the chosen recipient, distinguish the count action
from the immediate single-card reveal, and use the game window as parent.

* Apply project formatting to random-reveal warning construction

* Simplify random reveal to follow existing command patterns

Forward server dispatch through cmdRevealRandomCards and use ordinary PlayerActions command sending. Remove the bespoke server-version error UI and long-lived-object guards.

Reduce the test from 246 to 150 lines with two focused cases using the current RoleInfo player API, preserving distinct-card, private-event and rejected-count coverage.

* Extract the shared reveal helper and name the test's CardRef fields

RickyRister asked for cmdRevealCards and cmdRevealRandomCards to share a
helper instead of threading a randomCount parameter through the reveal
virtual. Restore the three-argument cmdRevealCards signature, resolve the
reveal preconditions and zone in resolveRevealZone, and let both commands
build their card list and hand it to revealCards, which owns the private and
public Event_RevealCards construction and the enqueue. The random command no
longer fabricates a Command_RevealCards with the -2 sentinel to re-enter the
legacy path; its behaviour is unchanged.

Name the CardRef fields in random_reveal_test instead of relying on
declaration order, and state in the user documentation that a rejected
reveal is not reported in the client, matching what the client does.

---------

Co-authored-by: Lukas Brübach <44814898+BruebachL@users.noreply.github.com>
2026-11-08 16:41:14 +01:00
..
card_zone_algorithms [Refactor] Move game logic into libcockatrice_game (#7437) 2026-10-31 18:44:15 +01:00
carddatabase Translate the filter string error at display time (#5283) 2026-11-07 16:26:31 +01:00
deck_list_model Fix deck export and mana group ordering (#7729) 2026-11-04 15:43:38 +01:00
deck_list_zones Fix deck export and mana group ordering (#7729) 2026-11-04 15:43:38 +01:00
game Show the library edge on the card in limited deck views (#6741) (#6741) 2026-11-07 17:24:40 +01:00
icon_assets [Icons] Add an icon asset ratchet test (#7596) 2026-11-04 18:39:42 +01:00
loading_from_clipboard Support tab-separated deck imports (#4222) (#7267) 2026-10-11 21:19:10 +02:00
model_contract [Tests] Use QtTest for model contracts and signal spies (#7630) 2026-11-02 07:27:43 +01:00
movecard_tests [Server/Client/Protocol] Shuffle or reorder player seats before a game starts (#7398) 2026-11-04 15:44:50 +01:00
oracle [DlgCreateGame] Heap-allocate create game dialog to prevent crash on parent deletion (#7777) 2026-11-05 07:49:20 +01:00
picture_loader_benchmark [Network] Add a configured QNetworkAccessManager factory (#7628) 2026-10-25 00:33:43 +02:00
settings [Settings] Store server profiles with QSettings arrays (#7629) 2026-11-02 07:30:29 +01:00
support [DlgCreateGame] Heap-allocate create game dialog to prevent crash on parent deletion (#7777) 2026-11-05 07:49:20 +01:00
theme_migration [CI] Pin used GH Actions (#7716) 2026-11-08 15:45:54 +01:00
card_art_crop_test.cpp [Banner] Keep horizontal user banner crops inside the artwork (#7742) 2026-11-04 17:08:54 +01:00
card_update_progress_test.cpp [Client] Improve card database update visibility (#7458) 2026-10-09 11:07:48 +02:00
clamped_arithmetic_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
client_login_status_test.cpp [CI] Pin used GH Actions (#7716) 2026-11-08 15:45:54 +01:00
CMakeLists.txt [Game] Reveal multiple distinct random hand cards to a recipient (#7753) 2026-11-08 16:41:14 +01:00
crash_reporter_test.cpp [CrashReporting] Breakpad capture, session detection and symbol upload (#7523) 2026-10-19 14:57:04 +02:00
create_game_form_widget_test.cpp [Refactor] Split CreateGameFormWidget out of DlgCreateGame (#7801) 2026-11-08 16:22:31 +01:00
deck_hash_performance_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
deck_state_manager_test.cpp [Client] Make DeckStateManager::decrementCard remove tokens from the token zone if the token is not in the given zone (#7588) 2026-11-03 10:37:17 +01:00
expression_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
font_config_test.cpp [Fonts] Add AppFont roles and FontConfig fonts.toml round-trip (#7534) 2026-11-04 07:57:52 +01:00
forwarded_address_test.cpp [Server] Parse the rightmost address from forwarded header lists (#7586) 2026-10-18 16:53:55 -04:00
game_creation_options_test.cpp [Refactor] Split CreateGameFormWidget out of DlgCreateGame (#7801) 2026-11-08 16:22:31 +01:00
holder_line_test.cpp [CrashReporting] Name the files and processes behind a failed installer purge (#7590) 2026-10-24 00:46:54 +02:00
installer_close_server_test.cpp [Installer] Graceful close and a way out of a stuck update (#7687) 2026-10-31 15:32:59 +01:00
lag_monitor_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
latency_tracker_test.cpp [CI] Update Linux Dockerfiles (#6894) 2026-11-08 09:01:56 +01:00
loader_local_matching_test.cpp [CI] Update Linux Dockerfiles (#6894) 2026-11-08 09:01:56 +01:00
local_client_lifetime_test.cpp [Client] Fix crash when local game commands are sent after shutdown (#7714) 2026-11-02 13:28:23 +01:00
metrics_registry_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
moxfield_signature_spells_test.cpp Import Moxfield signature spells into the deck [skip ci] (#7751) 2026-11-03 10:40:28 +01:00
password_hash_test.cpp [Utility] Budget scrypt's XY array in the derivation memory limit (#7712) 2026-11-02 07:29:15 +01:00
payload_paths_test.cpp [Installer] Name only the payload programs installed in the directory (#7684) 2026-10-30 13:16:50 +01:00
playmat_resolver_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
random_reveal_test.cpp [Game] Reveal multiple distinct random hand cards to a recipient (#7753) 2026-11-08 16:41:14 +01:00
rate_limiter_test.cpp [Server] Inform client of login/registration rate limit timeout (#7468) 2026-10-16 05:47:43 +02:00
report_categories_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_card_counter_test.cpp [Build] Let AUTOMOC process library headers (#7638) 2026-10-31 18:49:05 +01:00
server_counter_test.cpp [CI] Update Linux Dockerfiles (#6894) 2026-11-08 09:01:56 +01:00
server_developer_role_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_dump_zone_test.cpp [CI] Pin used GH Actions (#7716) 2026-11-08 15:45:54 +01:00
server_forced_password_change_test.cpp [Server/Client] Enforce and complete the forced password change at login (#7680) 2026-11-02 07:01:29 +01:00
server_game_join_test.cpp [ServerGame] Refactor out spectator/judge bools into RoleInfo (#7761) 2026-11-02 00:37:05 -07:00
server_logger_test.cpp [CardDB] Break the CardInfo <-> CardSet cycle on reload (#7645) 2026-10-31 19:37:15 +01:00
server_moderator_role_test.cpp [Report] Add report reopen action for closed reports (#7442) 2026-10-11 15:28:45 +02:00
server_rate_limiter_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_room_channels_test.cpp [Servatrice] Log room channel messages in audit log (#7479) 2026-10-16 22:46:39 +02:00
single_instance_manager_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
spoiler_file_test.cpp [DlgCreateGame] Heap-allocate create game dialog to prevent crash on parent deletion (#7777) 2026-11-05 07:49:20 +01:00
svg_recolor_test.cpp [Icons] Add SVG currentColor sentinel resolver (#7593) 2026-11-04 18:39:40 +01:00
test_age_formatting.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
translation_loader_test.cpp [Translation] Name languages without reading the translation files (#7662) 2026-10-26 02:39:26 +01:00
translation_loader_test.ts [Translations] Load Qt's own translations and build ours with the binary (#7384) 2026-10-03 15:04:30 +02:00
trusted_sources_test.cpp [Servatrice] Match trusted_sources by address, not substring (#7582) 2026-10-18 16:50:04 -04:00
user_data_backup_test.cpp [Installer][Client] Back up user data before old uninstallers can delete it (#7503) 2026-10-16 22:05:42 +02:00
user_games_model_test.cpp Fix user card games for offline users and stale requests (#7738) 2026-11-04 05:29:51 +01:00
warning_categories_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00