mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 00:27:31 +01:00
4a95d7025d
## About The Pull Request If a crate fails to generate, fail but actually give you the type path so you can fix it ## Why It's Good For The Game Ran up with an issue trying to debug the return of generate being null while having no clue what type path it was. Prevents that headache in future ## Changelog N/A
45 lines
2.1 KiB
Plaintext
45 lines
2.1 KiB
Plaintext
/**
|
|
* This unit test loops through all cargo crates that are available to purchase, and confirms that they're below the expected sanity minimum when sold.
|
|
* This prevents us from merging a crate that sells for more that it costs to buy.
|
|
*/
|
|
|
|
/datum/unit_test/cargo_crate_sanity
|
|
|
|
/datum/unit_test/cargo_crate_sanity/Run()
|
|
|
|
for(var/crate in subtypesof(/datum/supply_pack))
|
|
var/datum/supply_pack/new_crate = allocate(crate)
|
|
if(new_crate.test_ignored)
|
|
continue // We can safely ignore custom supply packs like the stock market or mining supply crates, or packs that have innate randomness.
|
|
if(!new_crate?.crate_type)
|
|
continue
|
|
var/obj/crate_type = allocate(new_crate.crate_type)
|
|
var/turf/open/floor/testing_floor = get_turf(crate_type)
|
|
var/datum/export_report/minimum_cost = export_item_and_contents(crate_type, delete_unsold = TRUE, dry_run = TRUE)
|
|
var/crate_value = counterlist_sum(minimum_cost.total_value)
|
|
|
|
var/obj/results = new_crate.generate(testing_floor)
|
|
if(!results)
|
|
TEST_FAIL("Cargo crate [new_crate.type] failed to generate an object to export.")
|
|
var/datum/export_report/export_log = export_item_and_contents(results, apply_elastic = TRUE, delete_unsold = TRUE, export_markets = list(EXPORT_MARKET_STATION))
|
|
|
|
// The value of the crate and all of it's contents.
|
|
var/value = counterlist_sum(export_log.total_value)
|
|
|
|
// We're selling the crate and it's contents for more value than it's supply_pack costs.
|
|
if(value > new_crate.get_cost())
|
|
TEST_FAIL("Cargo crate [new_crate.type] had a sale value of [value], Selling for more than [new_crate.get_cost()], the cost to buy")
|
|
|
|
// We're selling the crate & it's contents for less than the value of it's own crate, meaning you can buy and infinite number
|
|
if(crate_value > new_crate.get_cost())
|
|
TEST_FAIL("Cargo crate [new_crate.type] container sells for [crate_value], Selling for more than [new_crate.get_cost()], the cost to buy")
|
|
for(var/atom/stuff as anything in results.contents)
|
|
qdel(stuff)
|
|
stuff = null
|
|
|
|
qdel(results)
|
|
results = null
|
|
new_crate = null
|
|
minimum_cost = null
|
|
export_log = null
|