mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Permanent Revolution Update
This commit is contained in:
174
code/unit_tests/integrated_circuits/arithmetic.dm
Normal file
174
code/unit_tests/integrated_circuits/arithmetic.dm
Normal file
@@ -0,0 +1,174 @@
|
||||
/datum/unit_test/integrated_circuits/additon_1
|
||||
name = "Arithmetic Circuits: Addition - Basic"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/addition
|
||||
inputs_to_give = list(25, 75)
|
||||
expected_outputs = list(100)
|
||||
|
||||
/datum/unit_test/integrated_circuits/additon_2
|
||||
name = "Arithmetic Circuits: Addition - Multiple"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/addition
|
||||
inputs_to_give = list(7, 5, 3, 26, 974, -51, 77, 0)
|
||||
expected_outputs = list(1041)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/subtraction_1
|
||||
name = "Arithmetic Circuits: Subtraction - Basic"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/subtraction
|
||||
inputs_to_give = list(20, 15)
|
||||
expected_outputs = list(5)
|
||||
|
||||
/datum/unit_test/integrated_circuits/subtraction_2
|
||||
name = "Arithmetic Circuits: Subtraction - Multiple"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/subtraction
|
||||
inputs_to_give = list(5, 50, 30)
|
||||
expected_outputs = list(-75)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/multiplication_1
|
||||
name = "Arithmetic Circuits: Multiplication - Basic"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/multiplication
|
||||
inputs_to_give = list(5, 20)
|
||||
expected_outputs = list(100)
|
||||
|
||||
/datum/unit_test/integrated_circuits/multiplication_2
|
||||
name = "Arithmetic Circuits: Multiplication - Multiple"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/multiplication
|
||||
inputs_to_give = list(2, 10, 20)
|
||||
expected_outputs = list(400)
|
||||
|
||||
/datum/unit_test/integrated_circuits/multiplication_3
|
||||
name = "Arithmetic Circuits: Multiplication - Decimal"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/multiplication
|
||||
inputs_to_give = list(100, 0.5)
|
||||
expected_outputs = list(50)
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/division_1
|
||||
name = "Arithmetic Circuits: Division - Basic"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/division
|
||||
inputs_to_give = list(100, 5)
|
||||
expected_outputs = list(20)
|
||||
|
||||
/datum/unit_test/integrated_circuits/division_2
|
||||
name = "Arithmetic Circuits: Division - Multiple"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/division
|
||||
inputs_to_give = list(500, 100, 10)
|
||||
expected_outputs = list(0.5)
|
||||
|
||||
/datum/unit_test/integrated_circuits/division_3
|
||||
name = "Arithmetic Circuits: Division - Decimal"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/division
|
||||
inputs_to_give = list(100, 0.5)
|
||||
expected_outputs = list(200)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/exponent_1
|
||||
name = "Arithmetic Circuits: Exponent - Basic"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/exponent
|
||||
inputs_to_give = list(20, 2)
|
||||
expected_outputs = list(400)
|
||||
|
||||
/datum/unit_test/integrated_circuits/exponent_2
|
||||
name = "Arithmetic Circuits: Exponent - Powers"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/exponent
|
||||
inputs_to_give = list(5, 4)
|
||||
expected_outputs = list(625)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/sign_1
|
||||
name = "Arithmetic Circuits: Sign - Positive"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/sign
|
||||
inputs_to_give = list(5)
|
||||
expected_outputs = list(1)
|
||||
|
||||
/datum/unit_test/integrated_circuits/sign_2
|
||||
name = "Arithmetic Circuits: Sign - Negative"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/sign
|
||||
inputs_to_give = list(-500)
|
||||
expected_outputs = list(-1)
|
||||
|
||||
/datum/unit_test/integrated_circuits/sign_3
|
||||
name = "Arithmetic Circuits: Sign - Zero"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/sign
|
||||
inputs_to_give = list(0)
|
||||
expected_outputs = list(0)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/round_1
|
||||
name = "Arithmetic Circuits: Round - Basic"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/round
|
||||
inputs_to_give = list(4.25)
|
||||
expected_outputs = list(4)
|
||||
|
||||
/datum/unit_test/integrated_circuits/round_2
|
||||
name = "Arithmetic Circuits: Round - Floor"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/round
|
||||
inputs_to_give = list(8.95)
|
||||
expected_outputs = list(8)
|
||||
|
||||
/datum/unit_test/integrated_circuits/round_3
|
||||
name = "Arithmetic Circuits: Round - Round to X"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/round
|
||||
inputs_to_give = list(45.68, 0.1)
|
||||
expected_outputs = list(45.7)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/absolute_1
|
||||
name = "Arithmetic Circuits: Absolute - Positive"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/absolute
|
||||
inputs_to_give = list(50)
|
||||
expected_outputs = list(50)
|
||||
|
||||
/datum/unit_test/integrated_circuits/absolute_2
|
||||
name = "Arithmetic Circuits: Absolute - Negative"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/absolute
|
||||
inputs_to_give = list(-20)
|
||||
expected_outputs = list(20)
|
||||
|
||||
/datum/unit_test/integrated_circuits/absolute_3
|
||||
name = "Arithmetic Circuits: Absolute - Zero"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/absolute
|
||||
inputs_to_give = list(0)
|
||||
expected_outputs = list(0)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/average_1
|
||||
name = "Arithmetic Circuits: Average - Basic"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/average
|
||||
inputs_to_give = list(8, 20, 14, 6)
|
||||
expected_outputs = list(12)
|
||||
|
||||
/datum/unit_test/integrated_circuits/average_2
|
||||
name = "Arithmetic Circuits: Average - Negatives"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/average
|
||||
inputs_to_give = list(30, -5, 8, -50, 4)
|
||||
expected_outputs = list(-2.6)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/square_root_1
|
||||
name = "Arithmetic Circuits: Square Root"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/square_root
|
||||
inputs_to_give = list(64)
|
||||
expected_outputs = list(8)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/modulo_1
|
||||
name = "Arithmetic Circuits: Modulo - 1"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/modulo
|
||||
inputs_to_give = list(8, 5)
|
||||
expected_outputs = list(3)
|
||||
|
||||
/datum/unit_test/integrated_circuits/modulo_2
|
||||
name = "Arithmetic Circuits: Modulo - 2"
|
||||
circuit_type = /obj/item/integrated_circuit/arithmetic/modulo
|
||||
inputs_to_give = list(20, 5)
|
||||
expected_outputs = list(0)
|
||||
73
code/unit_tests/integrated_circuits/circuits.dm
Normal file
73
code/unit_tests/integrated_circuits/circuits.dm
Normal file
@@ -0,0 +1,73 @@
|
||||
|
||||
/datum/unit_test/integrated_circuits
|
||||
name = "circuit template"
|
||||
var/circuit_type = null
|
||||
var/obj/item/integrated_circuit/IC = null
|
||||
var/list/inputs_to_give = list()
|
||||
var/list/expected_outputs = list()
|
||||
|
||||
// Use this to set up.
|
||||
/datum/unit_test/integrated_circuits/proc/arrange()
|
||||
IC = new circuit_type(get_standard_turf()) // Make the circuit
|
||||
IC.cooldown_per_use = 0
|
||||
|
||||
// Use this when finished to remove clutter for the next test.
|
||||
/datum/unit_test/integrated_circuits/proc/clean_up()
|
||||
qdel(IC)
|
||||
|
||||
// Override this if needing special output (e.g. rounding to avoid floating point fun).
|
||||
/datum/unit_test/integrated_circuits/proc/assess()
|
||||
var/output_wrong = FALSE
|
||||
var/i = 1
|
||||
for(var/datum/integrated_io/io in IC.outputs)
|
||||
if(io.data != expected_outputs[i])
|
||||
log_bad("[io.name] did not match expected output of [expected_outputs[i]]. Output was [isnull(io.data) ? "NULL" : io.data].")
|
||||
output_wrong = TRUE
|
||||
i++
|
||||
return output_wrong
|
||||
|
||||
// Useful when doing floating point fun.
|
||||
/datum/unit_test/integrated_circuits/floor/assess()
|
||||
var/output_wrong = FALSE
|
||||
var/i = 1
|
||||
for(var/datum/integrated_io/io in IC.outputs)
|
||||
if(round(io.data) != expected_outputs[i])
|
||||
log_bad("[io.name] did not match expected output of [expected_outputs[i]]. Output was [isnull(io.data) ? "NULL" : round(io.data)].")
|
||||
output_wrong = TRUE
|
||||
i++
|
||||
return output_wrong
|
||||
|
||||
/datum/unit_test/integrated_circuits/start_test()
|
||||
var/output_wrong = FALSE
|
||||
if(!circuit_type)
|
||||
fail("[name] did not supply a circuit_type path.")
|
||||
return TRUE
|
||||
try
|
||||
// Arrange
|
||||
arrange()
|
||||
|
||||
var/i = 1
|
||||
for(var/input in inputs_to_give)
|
||||
var/datum/integrated_io/io = IC.inputs[i]
|
||||
io.write_data_to_pin(input)
|
||||
i++
|
||||
|
||||
// Act
|
||||
IC.do_work()
|
||||
|
||||
output_wrong = assess()
|
||||
|
||||
clean_up()
|
||||
|
||||
catch(var/exception/e)
|
||||
log_bad("[name] caught an exception: [e] on [e.file]:[e.line]")
|
||||
output_wrong = TRUE
|
||||
|
||||
// Assert
|
||||
if(output_wrong)
|
||||
fail("[name] failed.")
|
||||
return TRUE
|
||||
else
|
||||
pass("[name] matched all expected outputs.")
|
||||
return TRUE
|
||||
|
||||
52
code/unit_tests/integrated_circuits/converter.dm
Normal file
52
code/unit_tests/integrated_circuits/converter.dm
Normal file
@@ -0,0 +1,52 @@
|
||||
/datum/unit_test/integrated_circuits/num2text
|
||||
name = "Converter Circuits: Num2Text"
|
||||
circuit_type = /obj/item/integrated_circuit/converter/num2text
|
||||
inputs_to_give = list(10250)
|
||||
expected_outputs = list("10250")
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/text2num
|
||||
name = "Converter Circuits: Text2Num"
|
||||
circuit_type = /obj/item/integrated_circuit/converter/text2num
|
||||
inputs_to_give = list("2005")
|
||||
expected_outputs = list(2005)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/lowercase
|
||||
name = "Converter Circuits: Lowercase"
|
||||
circuit_type = /obj/item/integrated_circuit/converter/lowercase
|
||||
inputs_to_give = list("Lorem ipsum...")
|
||||
expected_outputs = list("lorem ipsum...")
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/uppercase
|
||||
name = "Converter Circuits: Uppercase"
|
||||
circuit_type = /obj/item/integrated_circuit/converter/uppercase
|
||||
inputs_to_give = list("Lorem ipsum...")
|
||||
expected_outputs = list("LOREM IPSUM...")
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/concatenatior
|
||||
name = "Converter Circuits: Concatenatior"
|
||||
circuit_type = /obj/item/integrated_circuit/converter/concatenatior
|
||||
inputs_to_give = list("Lorem", " ", "ipsum", "...")
|
||||
expected_outputs = list("Lorem ipsum...")
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/floor/radians2degrees
|
||||
name = "Converter Circuits: Radians2Degrees"
|
||||
circuit_type = /obj/item/integrated_circuit/converter/radians2degrees
|
||||
inputs_to_give = list(1.57)
|
||||
expected_outputs = list(89) // 89.95437
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/floor/degrees2radians
|
||||
name = "Converter Circuits: Degrees2Radians"
|
||||
circuit_type = /obj/item/integrated_circuit/converter/degrees2radians
|
||||
inputs_to_give = list(90)
|
||||
expected_outputs = list(1) // 1.570796
|
||||
17
code/unit_tests/integrated_circuits/data_transfer.dm
Normal file
17
code/unit_tests/integrated_circuits/data_transfer.dm
Normal file
@@ -0,0 +1,17 @@
|
||||
/datum/unit_test/integrated_circuits/splitter
|
||||
name = "Data Transfer Circuits: Splitter"
|
||||
circuit_type = /obj/item/integrated_circuit/transfer/splitter
|
||||
inputs_to_give = list("Test")
|
||||
expected_outputs = list("Test", "Test")
|
||||
|
||||
/datum/unit_test/integrated_circuits/splitter4
|
||||
name = "Data Transfer Circuits: Splitter 4"
|
||||
circuit_type = /obj/item/integrated_circuit/transfer/splitter/medium
|
||||
inputs_to_give = list("Test")
|
||||
expected_outputs = list("Test", "Test", "Test", "Test")
|
||||
|
||||
/datum/unit_test/integrated_circuits/splitter8
|
||||
name = "Data Transfer Circuits: Splitter 8"
|
||||
circuit_type = /obj/item/integrated_circuit/transfer/splitter/large
|
||||
inputs_to_give = list("Test")
|
||||
expected_outputs = list("Test", "Test", "Test", "Test", "Test", "Test", "Test", "Test")
|
||||
186
code/unit_tests/integrated_circuits/logic.dm
Normal file
186
code/unit_tests/integrated_circuits/logic.dm
Normal file
@@ -0,0 +1,186 @@
|
||||
/datum/unit_test/integrated_circuits/equals_1
|
||||
name = "Logic Circuits: Equals - String True"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/equals
|
||||
inputs_to_give = list("Test", "Test")
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/equals_2
|
||||
name = "Logic Circuits: Equals - String False"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/equals
|
||||
inputs_to_give = list("Test", "Nope")
|
||||
expected_outputs = list(FALSE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/equals_3
|
||||
name = "Logic Circuits: Equals - Number True"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/equals
|
||||
inputs_to_give = list(525, 525)
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/equals_4
|
||||
name = "Logic Circuits: Equals - Number False"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/equals
|
||||
inputs_to_give = list(1020, -580)
|
||||
expected_outputs = list(FALSE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/equals_5
|
||||
name = "Logic Circuits: Equals - Null True"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/equals
|
||||
inputs_to_give = list(null, null)
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/equals_6
|
||||
name = "Logic Circuits: Equals - Ref True"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/equals
|
||||
inputs_to_give = list()
|
||||
expected_outputs = list(TRUE)
|
||||
var/obj/A = null
|
||||
|
||||
/datum/unit_test/integrated_circuits/equals_6/arrange()
|
||||
A = new(get_standard_turf())
|
||||
inputs_to_give = list(weakref(A), weakref(A))
|
||||
..()
|
||||
|
||||
/datum/unit_test/integrated_circuits/equals_6/clean_up()
|
||||
qdel(A)
|
||||
..()
|
||||
|
||||
/datum/unit_test/integrated_circuits/equals_7
|
||||
name = "Logic Circuits: Equals - Ref False"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/equals
|
||||
inputs_to_give = list()
|
||||
expected_outputs = list(FALSE)
|
||||
var/obj/A = null
|
||||
var/obj/B = null
|
||||
|
||||
/datum/unit_test/integrated_circuits/equals_7/arrange()
|
||||
A = new(get_standard_turf())
|
||||
B = new(get_standard_turf())
|
||||
inputs_to_give = list(weakref(A), weakref(B))
|
||||
..()
|
||||
|
||||
/datum/unit_test/integrated_circuits/equals_7/clean_up()
|
||||
qdel(A)
|
||||
qdel(B)
|
||||
..()
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/and_1
|
||||
name = "Logic Circuits: And - True"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/and
|
||||
inputs_to_give = list("One", "Two")
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/and_2
|
||||
name = "Logic Circuits: And - False"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/and
|
||||
inputs_to_give = list("One", null)
|
||||
expected_outputs = list(FALSE)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/or_1
|
||||
name = "Logic Circuits: Or - True First"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/or
|
||||
inputs_to_give = list("One", null)
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/or_2
|
||||
name = "Logic Circuits: Or - True Second"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/or
|
||||
inputs_to_give = list(null, "Two")
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/or_3
|
||||
name = "Logic Circuits: Or - True Both"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/or
|
||||
inputs_to_give = list("One", "Two")
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/or_4
|
||||
name = "Logic Circuits: Or - False"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/or
|
||||
inputs_to_give = list(null, null)
|
||||
expected_outputs = list(FALSE)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/less_than_1
|
||||
name = "Logic Circuits: Less Than - True"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/less_than
|
||||
inputs_to_give = list(50, 100)
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/less_than_2
|
||||
name = "Logic Circuits: Less Than - False"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/less_than
|
||||
inputs_to_give = list(500, 50)
|
||||
expected_outputs = list(FALSE)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/less_than_or_equal_1
|
||||
name = "Logic Circuits: Less Than Or Equal - True 1"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/less_than_or_equal
|
||||
inputs_to_give = list(40, 50)
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/less_than_or_equal_2
|
||||
name = "Logic Circuits: Less Than Or Equal - True 2"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/less_than_or_equal
|
||||
inputs_to_give = list(40, 40)
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/less_than_or_equal_3
|
||||
name = "Logic Circuits: Less Than Or Equal - False"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/less_than_or_equal
|
||||
inputs_to_give = list(40, 30)
|
||||
expected_outputs = list(FALSE)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/greater_than_1
|
||||
name = "Logic Circuits: Greater Than - True"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/greater_than
|
||||
inputs_to_give = list(100, 50)
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/greater_than_2
|
||||
name = "Logic Circuits: Greater Than - False"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/greater_than
|
||||
inputs_to_give = list(25, 800)
|
||||
expected_outputs = list(FALSE)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/greater_than_or_equal_1
|
||||
name = "Logic Circuits: Greater Than Or Equal - True 1"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/greater_than_or_equal
|
||||
inputs_to_give = list(250, 30)
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/greater_than_or_equal_2
|
||||
name = "Logic Circuits: Greater Than Or Equal - True 2"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/greater_than_or_equal
|
||||
inputs_to_give = list(30, 30)
|
||||
expected_outputs = list(TRUE)
|
||||
|
||||
/datum/unit_test/integrated_circuits/greater_than_or_equal_3
|
||||
name = "Logic Circuits: Greater Than Or Equal - False"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/binary/greater_than_or_equal
|
||||
inputs_to_give = list(-40, 100)
|
||||
expected_outputs = list(FALSE)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/not_1
|
||||
name = "Logic Circuits: Not - Invert to False"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/unary/not
|
||||
inputs_to_give = list(1)
|
||||
expected_outputs = list(0)
|
||||
|
||||
/datum/unit_test/integrated_circuits/not_2
|
||||
name = "Logic Circuits: Not - Invert to True"
|
||||
circuit_type = /obj/item/integrated_circuit/logic/unary/not
|
||||
inputs_to_give = list(0)
|
||||
expected_outputs = list(1)
|
||||
55
code/unit_tests/integrated_circuits/prefabs.dm
Normal file
55
code/unit_tests/integrated_circuits/prefabs.dm
Normal file
@@ -0,0 +1,55 @@
|
||||
/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()
|
||||
for(var/prefab_type in subtypesof(/decl/prefab/ic_assembly))
|
||||
var/decl/prefab/ic_assembly/prefab = decls_repository.get_decl(prefab_type)
|
||||
var/obj/item/device/electronic_assembly/assembly = prefab.assembly_type
|
||||
|
||||
var/available_size = initial(assembly.max_components)
|
||||
var/available_complexity = initial(assembly.max_complexity)
|
||||
for(var/ic in prefab.integrated_circuits)
|
||||
var/datum/ic_assembly_integrated_circuits/iaic = ic
|
||||
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()
|
||||
for(var/prefab_type in subtypesof(/decl/prefab/ic_assembly))
|
||||
var/decl/prefab/ic_assembly/prefab = decls_repository.get_decl(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
|
||||
33
code/unit_tests/integrated_circuits/trig.dm
Normal file
33
code/unit_tests/integrated_circuits/trig.dm
Normal file
@@ -0,0 +1,33 @@
|
||||
/datum/unit_test/integrated_circuits/floor/sine_1
|
||||
name = "Trig Circuits: Sine - 1"
|
||||
circuit_type = /obj/item/integrated_circuit/trig/sine
|
||||
inputs_to_give = list(90)
|
||||
expected_outputs = list(1)
|
||||
|
||||
/datum/unit_test/integrated_circuits/floor/sine_2
|
||||
name = "Trig Circuits: Sine - 2"
|
||||
circuit_type = /obj/item/integrated_circuit/trig/sine
|
||||
inputs_to_give = list(0)
|
||||
expected_outputs = list(0)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/floor/cosine_1
|
||||
name = "Trig Circuits: Cosine - 1"
|
||||
circuit_type = /obj/item/integrated_circuit/trig/cosine
|
||||
inputs_to_give = list(90)
|
||||
expected_outputs = list(0)
|
||||
|
||||
/datum/unit_test/integrated_circuits/floor/cosine_2
|
||||
name = "Trig Circuits: Cosine - 2"
|
||||
circuit_type = /obj/item/integrated_circuit/trig/cosine
|
||||
inputs_to_give = list(0)
|
||||
expected_outputs = list(1)
|
||||
|
||||
|
||||
|
||||
/datum/unit_test/integrated_circuits/floor/tangent_1
|
||||
name = "Trig Circuits: Tangent - 1"
|
||||
circuit_type = /obj/item/integrated_circuit/trig/tangent
|
||||
inputs_to_give = list(45)
|
||||
expected_outputs = list(1)
|
||||
@@ -96,4 +96,13 @@ var/total_unit_tests = 0
|
||||
world.Del()
|
||||
else
|
||||
log_unit_test("[ASCII_RED]!!! \[[failed_unit_tests]\\[total_unit_tests]\] Unit Tests Failed !!![ASCII_RESET]")
|
||||
world.Del()
|
||||
world.Del()
|
||||
|
||||
/datum/unit_test/proc/get_standard_turf()
|
||||
return locate(20,20,1)
|
||||
|
||||
/datum/unit_test/proc/log_bad(var/message)
|
||||
log_unit_test("[ASCII_RED]\[[name]\]: [message][ASCII_RESET]")
|
||||
|
||||
/datum/unit_test/proc/log_debug(var/message)
|
||||
log_unit_test("[ASCII_YELLOW]--- DEBUG --- \[[name]\]: [message][ASCII_RESET]")
|
||||
Reference in New Issue
Block a user