Files
Bubberstation/code/modules/unit_tests/area_contents.dm
SkyratBot b6f1945793 [MIRROR] Fixes horrible CI times [MDB IGNORE] (#17511)
* Fixes horrible CI times (#71295)

## About The Pull Request
Ok so like, I was using an assoc list in the unit test to map turfs to
their tracked area parent.

This was foolish because unless the test fails we will be doing this for
EVERY TURF IN THE GAME.

Assoc lists are red black tress, so insert time, more then just the list
expansion cost, also just scales with the amount of keys, since we need
to binary search them all to ensure we don't already exist.

This is really slow, and was costing us like actually 300 seconds or
something.

I've switched to storing this information in just the turf. It should
bring this down to like 6 seconds instead of 6 minutes.

Remember, assoc lists are dumb for high scales kids

* Fixes horrible CI times

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-11-16 21:47:42 -05:00

30 lines
1.2 KiB
Plaintext

/// Verifies that an area's perception of their "turfs" is correct, and no other area overlaps with them
/// Quite slow, but needed
/datum/unit_test/area_contents
priority = TEST_LONGER
/datum/unit_test/area_contents/Run()
// First, we check that there are no entries in more then one area
// That or duplicate entries
for(var/area/space in GLOB.areas)
for(var/turf/position as anything in space.get_contained_turfs())
if(!isturf(position))
TEST_FAIL("Found a [position.type] in [space.type]'s turf listing")
if(position.in_contents_of)
var/area/existing = position.in_contents_of
if(existing == space)
TEST_FAIL("Found a duplicate turf [position.type] inside [space.type]'s turf listing")
else
TEST_FAIL("Found a shared turf [position.type] between [space.type] and [existing.type]'s turf listings")
var/area/dream_spot = position.loc
if(dream_spot != space)
TEST_FAIL("Found a turf [position.type] which is IN [dream_spot.type], but is registered as being in [space.type]")
position.in_contents_of = space
for(var/turf/position in ALL_TURFS())
if(!position.in_contents_of)
TEST_FAIL("Found a turf [position.type] inside [position.loc.type] that is NOT stored in any area's turf listing")