mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
56 lines
2.4 KiB
Plaintext
56 lines
2.4 KiB
Plaintext
/datum/unit_test/integrated_circuit_prefabs_shall_respect_complexity_and_size_contraints
|
|
name = "Integrated Circuit Prefabs Shall Respect Complexity and Size Constraints"
|
|
|
|
/datum/unit_test/integrated_circuit_prefabs_shall_respect_complexity_and_size_contraints/start_test()
|
|
var/list/failed_prefabs = list()
|
|
var/list/prefab_types = decls_repository.get_decls_of_subtype(/decl/prefab/ic_assembly)
|
|
for(var/prefab_type in prefab_types)
|
|
var/decl/prefab/ic_assembly/prefab = prefab_types[prefab_type]
|
|
var/obj/item/electronic_assembly/assembly = prefab.assembly_type
|
|
|
|
var/available_size = initial(assembly.max_components)
|
|
var/available_complexity = initial(assembly.max_complexity)
|
|
for(var/datum/ic_assembly_integrated_circuits/iaic as anything in prefab.integrated_circuits)
|
|
var/obj/item/integrated_circuit/circuit = iaic.circuit_type
|
|
available_size -= initial(circuit.size)
|
|
available_complexity -= initial(circuit.complexity)
|
|
if(available_size < 0)
|
|
log_bad("[prefab_type] has an excess component size of [abs(available_size)]")
|
|
failed_prefabs |= prefab_type
|
|
if(available_complexity < 0)
|
|
log_bad("[prefab_type] has an excess component complexity of [abs(available_complexity)]")
|
|
failed_prefabs |= prefab_type
|
|
|
|
if(failed_prefabs.len)
|
|
fail("The following integrated prefab types are out of bounds: [english_list(failed_prefabs)]")
|
|
else
|
|
pass("All integrated circuit prefabs are within complexity and size limits.")
|
|
|
|
return 1
|
|
|
|
/datum/unit_test/integrated_circuit_prefabs_shall_not_fail_to_create
|
|
name = "Integrated Circuit Prefabs Shall Not Fail To Create"
|
|
|
|
/datum/unit_test/integrated_circuit_prefabs_shall_not_fail_to_create/start_test()
|
|
var/list/failed_prefabs = list()
|
|
var/list/prefab_types = decls_repository.get_decls_of_subtype(/decl/prefab/ic_assembly)
|
|
for(var/prefab_type in prefab_types)
|
|
var/decl/prefab/ic_assembly/prefab = prefab_types[prefab_type]
|
|
try
|
|
var/built_item = prefab.create(get_standard_turf())
|
|
if(built_item)
|
|
qdel(built_item)
|
|
else
|
|
log_bad("[prefab_type] failed to create or return its item.")
|
|
failed_prefabs |= prefab_type
|
|
catch(var/exception/e)
|
|
log_bad("[prefab_type] caused an exception: [e] on [e.file]:[e.line]")
|
|
failed_prefabs |= prefab_type
|
|
|
|
if(failed_prefabs.len)
|
|
fail("The following integrated prefab types failed to create their assemblies: [english_list(failed_prefabs)]")
|
|
else
|
|
pass("All integrated circuit prefabs are within complexity and size limits.")
|
|
|
|
return 1
|