Add unit-tests for card decks (#24791)

* Add unit-tests for card decks

* Fix linter CI comments

* Rename unit-test file due to duplicate filename

* Fix review comments

* Fix unit-test broken after review comment fixing

* Remove blank unit-tests for card-decks

* Use TRUE instead of magic-value 1 in cardshuffle sound call

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

---------

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
This commit is contained in:
Zantox
2024-04-14 13:35:48 +02:00
committed by GitHub
parent c73443bc47
commit cb03f174a0
3 changed files with 42 additions and 3 deletions
+1
View File
@@ -2,6 +2,7 @@
//Keep this sorted alphabetically
#ifdef UNIT_TESTS
#include "games\test_cards.dm"
#include "jobs\test_job_globals.dm"
#include "aicard_icons.dm"
#include "announcements.dm"
@@ -0,0 +1,30 @@
/datum/unit_test/card_deck/proc/validate_deck(obj/item/deck/deck)
var/list/card_count = list()
for(var/datum/playingcard/card in deck.cards)
if(card_count[card.name] == null)
card_count[card.name] = 1
else if(card.name == "Joker")
card_count[card.name]++
else
// duplicate card in deck
return FALSE
if(length(card_count) != 53) // 2 Jokers, so 53 unique cards
return FALSE
return TRUE
/datum/unit_test/card_deck/Run()
// setup
var/loc = pick(block(run_loc_bottom_left, run_loc_top_right))
var/obj/item/deck/cards/cards = new /obj/item/deck/cards(loc)
cards.build_decks()
// is deck proper upon spawning
if(!validate_deck(cards))
Fail("52 card deck not initialized correctly.")
// is deck proper after shuffling
cards.deckshuffle()
if(!validate_deck(cards))
Fail("52 card deck broken after shuffling.")