mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-31 12:01:47 +00:00
* tgui Preferences Menu + total rewrite of the preferences backend * nah, we dont need to ping those people * trying to remove the funny stuff * unmodularizing this * prefs reset * this may need to be reverted, who knows * okay, this part * perhaps * EEEEEEEEE * unsanitary * E * Stage 1 + loadout system * more fixes * E * I mean, it launches? * More fixes and reorganisation * E * customisation code is spaget. * disable ERP prefs * Update erp_preferences.dm * Update erp_preferences.dm * E * Slowly getting there * It may be time for help :) * tri...colors... help * preferences now pass preferences * Update dna.dm * Fuck this man * missing savefile return, set_species works, removed dumb stuff from updateappearance * https://github.com/Skyrat-SS13/Skyrat-tg/pull/8199 * https://github.com/Skyrat-SS13/Skyrat-tg/pull/8224 * https://github.com/tgstation/tgstation/pull/61519 * https://github.com/Skyrat-SS13/Skyrat-tg/pull/8278 * e * le butonAZARAK HELLO * hhh * Proper recognition where it's due, MrMelbert! * EEEE * examine block * Better gen hit sounds from whitedream * final loadout touches, more bug fixes im sure to come * i said there would be bugfixes * Update LoadoutManager.js * Missing preferences in the html menu * LIVE TESTING PHASE BABY * Update LoadoutManager.js * EEE * LAUNCH TEST FIRE * Update job.dm * Update new_player.dm * 50gb DAY ONE PATCH * EEE * Update preferences.dm * buggle fixes * Update examine.dm * >LOOC starts on Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Co-authored-by: Gandalf <jzo123@hotmail.com> Co-authored-by: Azarak <azarak10@gmail.com>
113 lines
4.5 KiB
Plaintext
113 lines
4.5 KiB
Plaintext
#define SECURITY_OFFICER_DEPARTMENTS list("a", "b", "c", "d")
|
|
#define SECURITY_OFFICER_DEPARTMENTS_TO_NAMES (list( \
|
|
"a" = SEC_DEPT_ENGINEERING, \
|
|
"b" = SEC_DEPT_MEDICAL, \
|
|
"c" = SEC_DEPT_SCIENCE, \
|
|
"d" = SEC_DEPT_SUPPLY, \
|
|
))
|
|
|
|
/// Test that security officers with specific distributions get their departments.
|
|
/datum/unit_test/security_officer_roundstart_distribution
|
|
|
|
/datum/unit_test/security_officer_roundstart_distribution/proc/test(
|
|
list/preferences,
|
|
list/expected,
|
|
)
|
|
var/list/outcome = get_officer_departments(preferences, SECURITY_OFFICER_DEPARTMENTS)
|
|
var/failure_message = "Tested with [json_encode(preferences)] and expected [json_encode(expected)], got [json_encode(outcome)]"
|
|
|
|
if (outcome.len == expected.len)
|
|
for (var/index in 1 to outcome.len)
|
|
if (outcome[index] != expected[index])
|
|
Fail(failure_message)
|
|
return
|
|
else
|
|
Fail(failure_message)
|
|
|
|
/datum/unit_test/security_officer_roundstart_distribution/Run()
|
|
test_distributions()
|
|
test_with_mock_players()
|
|
|
|
/datum/unit_test/security_officer_roundstart_distribution/proc/test_distributions()
|
|
test(list("a"), list("a"))
|
|
test(list("a", "b"), list("a", "a"))
|
|
test(list("a", "b", "c"), list("a", "a", "a"))
|
|
test(list("a", "a", "b"), list("a", "a", "a"))
|
|
test(list("a", "a", "b", "b"), list("a", "a", "b", "b"))
|
|
test(list("a", "a", "a", "b"), list("a", "a", "b", "b"))
|
|
test(list("a", "b", "c", "d"), list("a", "b", "b", "a"))
|
|
test(list(SEC_DEPT_NONE), list("d"))
|
|
test(list("a", SEC_DEPT_NONE), list("a", "a"))
|
|
test(list(SEC_DEPT_NONE, SEC_DEPT_NONE, SEC_DEPT_NONE, SEC_DEPT_NONE), list("d", "d", "c", "c"))
|
|
|
|
/datum/unit_test/security_officer_roundstart_distribution/proc/test_with_mock_players()
|
|
var/mob/dead/new_player/officer_a = create_officer("a")
|
|
var/mob/dead/new_player/officer_b = create_officer("b")
|
|
var/mob/dead/new_player/officer_c = create_officer("c")
|
|
var/mob/dead/new_player/officer_d = create_officer("d")
|
|
|
|
var/list/outcome = SSticker.decide_security_officer_departments(
|
|
list(officer_a, officer_b, officer_c, officer_d),
|
|
SECURITY_OFFICER_DEPARTMENTS,
|
|
)
|
|
|
|
TEST_ASSERT_EQUAL(outcome[REF(officer_a.new_character)], SECURITY_OFFICER_DEPARTMENTS_TO_NAMES["a"], "Officer A's department outcome was incorrect.")
|
|
TEST_ASSERT_EQUAL(outcome[REF(officer_b.new_character)], SECURITY_OFFICER_DEPARTMENTS_TO_NAMES["b"], "Officer B's department outcome was incorrect.")
|
|
TEST_ASSERT_EQUAL(outcome[REF(officer_c.new_character)], SECURITY_OFFICER_DEPARTMENTS_TO_NAMES["b"], "Officer C's department outcome was incorrect.")
|
|
TEST_ASSERT_EQUAL(outcome[REF(officer_d.new_character)], SECURITY_OFFICER_DEPARTMENTS_TO_NAMES["a"], "Officer D's department outcome was incorrect.")
|
|
|
|
/datum/unit_test/security_officer_roundstart_distribution/proc/create_officer(preference)
|
|
var/mob/dead/new_player/new_player = allocate(/mob/dead/new_player)
|
|
var/datum/client_interface/mock_client = new
|
|
|
|
mock_client.prefs = new
|
|
var/write_success = mock_client.prefs.write_preference(
|
|
GLOB.preference_entries[/datum/preference/choiced/security_department],
|
|
SECURITY_OFFICER_DEPARTMENTS_TO_NAMES[preference],
|
|
)
|
|
|
|
TEST_ASSERT(write_success, "Couldn't write department [SECURITY_OFFICER_DEPARTMENTS_TO_NAMES[preference]]")
|
|
|
|
var/mob/living/carbon/human/new_character = allocate(/mob/living/carbon/human)
|
|
new_character.mind_initialize()
|
|
new_character.mind.set_assigned_role(SSjob.GetJobType(/datum/job/security_officer))
|
|
|
|
new_player.new_character = new_character
|
|
new_player.mock_client = mock_client
|
|
return new_player
|
|
|
|
/// Test that latejoin security officers are put into the correct department
|
|
/datum/unit_test/security_officer_latejoin_distribution
|
|
|
|
/datum/unit_test/security_officer_latejoin_distribution/proc/test(
|
|
preference,
|
|
list/preferences_of_others,
|
|
expected,
|
|
)
|
|
var/list/distribution = list()
|
|
|
|
for (var/officer_preference in preferences_of_others)
|
|
var/mob/officer = allocate(/mob/living/carbon/human)
|
|
distribution[officer] = officer_preference
|
|
|
|
var/result = get_new_officer_distribution_from_late_join(
|
|
preference,
|
|
SECURITY_OFFICER_DEPARTMENTS,
|
|
distribution,
|
|
)
|
|
|
|
var/failure_message = "Latejoin distribution was incorrect (preference = [preference], preferences_of_others = [json_encode(preferences_of_others)])."
|
|
|
|
TEST_ASSERT_EQUAL(result, expected, failure_message)
|
|
|
|
/datum/unit_test/security_officer_latejoin_distribution/Run()
|
|
test("a", list(), "a")
|
|
test("b", list(), "b")
|
|
test("a", list("b"), "b")
|
|
test("a", list("a", "a"), "b")
|
|
test("a", list("a", "a", "b"), "b")
|
|
test("a", list("a", "a", "b", "b"), "c")
|
|
test("a", list("a", "a", "b", "b", "c", "c", "d", "d"), "a")
|
|
|
|
#undef SECURITY_OFFICER_DEPARTMENTS
|