Skip to content

Commit 44df87a

Browse files
committed
Reduce tool test globalsteps
1 parent dfbdfe5 commit 44df87a

File tree

1 file changed

+19
-28
lines changed

1 file changed

+19
-28
lines changed

technic/spec/tools_spec.lua

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ describe("Technic power tool", function()
2020
mineunit:restore_current_modname()
2121
end
2222

23+
-- Execute multiple globalsteps: run_network(times = 1, dtime = 1)
24+
local run_network = spec_utility.run_globalsteps
25+
2326
world.set_default_node("air")
2427

2528
-- Test node, HV battery box and some HV solar arrays for charging
@@ -209,7 +212,7 @@ describe("Technic power tool", function()
209212
set_charge_stack(ItemStack("mymod:t1_65535"))
210213
-- Test charging, 10kEU / cycle
211214
assert.equals(0, technic.get_RE_charge(get_charge_stack()))
212-
for i=1,6 do mineunit:execute_globalstep(1) end
215+
run_network(6)
213216
assert.equals(60000, technic.get_RE_charge(get_charge_stack()))
214217
mineunit:execute_globalstep(1)
215218
assert.equals(65535, technic.get_RE_charge(get_charge_stack()))
@@ -220,7 +223,7 @@ describe("Technic power tool", function()
220223
set_charge_stack(ItemStack("mymod:t1_65536"))
221224
-- Test charging, 10kEU / cycle
222225
assert.equals(0, technic.get_RE_charge(get_charge_stack()))
223-
for i=1,6 do mineunit:execute_globalstep(1) end
226+
run_network(6)
224227
assert.equals(60000, technic.get_RE_charge(get_charge_stack()))
225228
mineunit:execute_globalstep(1)
226229
assert.equals(65536, technic.get_RE_charge(get_charge_stack()))
@@ -231,7 +234,7 @@ describe("Technic power tool", function()
231234
set_charge_stack(ItemStack("mymod:t100_6553500"))
232235
-- Test charging, 10kEU / cycle
233236
assert.equals(0, technic.get_RE_charge(get_charge_stack()))
234-
for i=1,6 do mineunit:execute_globalstep(1) end
237+
run_network(6)
235238
assert.equals(60000, technic.get_RE_charge(get_charge_stack()))
236239
mineunit:execute_globalstep(1)
237240
assert.equals(70000, technic.get_RE_charge(get_charge_stack()))
@@ -242,15 +245,15 @@ describe("Technic power tool", function()
242245
set_charge_stack(ItemStack("mymod:t100_6553600"))
243246
-- Test charging, 10kEU / cycle
244247
assert.equals(0, technic.get_RE_charge(get_charge_stack()))
245-
for i=1,7 do mineunit:execute_globalstep(1) end
248+
run_network(7)
246249
-- This tool already has small charge error and it is acceptable as long as error stays small
247250
-- Charge value must be 69999-70001 after 7 charge cycles
248251
assert.lt(69998, technic.get_RE_charge(get_charge_stack()))
249252
assert.gt(70002, technic.get_RE_charge(get_charge_stack()))
250253
end)
251254

252255
it("t100_6553600 can be used", function()
253-
-- Add tool to battery box
256+
-- Create tool and set its charge to 700
254257
local stack = ItemStack("mymod:t100_6553600")
255258
technic.set_RE_charge(stack, 700)
256259
set_player_stack(stack)
@@ -294,14 +297,12 @@ describe("Technic power tool", function()
294297

295298
-- Use item, flashlight charge is used every globalstep and there's no on_use definition
296299
spy.on(technic, "use_RE_charge")
297-
for i=1, 100 do
298-
mineunit:execute_globalstep(1)
299-
end
300-
assert.spy(technic.use_RE_charge).called(100)
300+
run_network(20)
301+
assert.spy(technic.use_RE_charge).called(20)
301302

302303
-- Check that item charge was actually used and error is acceptable
303304
local charge_used = itemdef.technic_max_charge - technic.get_RE_charge(get_player_stack())
304-
local exact_use = 2 * 100 -- 2 per cycle / 100 cycles
305+
local exact_use = 2 * 20 -- 2 per cycle / 20 cycles
305306
assert.lt(0.9, charge_used / exact_use)
306307
assert.gt(1.1, charge_used / exact_use)
307308
end)
@@ -350,11 +351,9 @@ describe("Technic power tool", function()
350351
-- Put item from player inventory to battery box src inventory
351352
player:do_metadata_inventory_put(BB_Charge_POS, "src", 1)
352353

353-
-- Verify that item charge is empty and charge in battery box for 30 seconds
354+
-- Verify that item charge is empty and charge in battery box for capacity/10k seconds
354355
assert.equals(0, technic.get_RE_charge(get_charge_stack()))
355-
for i=1, 30 do
356-
mineunit:execute_globalstep(1)
357-
end
356+
run_network(math.ceil(itemdef.technic_max_charge / 10000))
358357

359358
-- Take item from battery box and check charge / wear values
360359
player:do_metadata_inventory_take(BB_Charge_POS, "src", 1)
@@ -381,9 +380,7 @@ describe("Technic power tool", function()
381380

382381
-- Verify that item is charged and discharge in battery box for 3 seconds
383382
assert.lt(itemdef.technic_max_charge / 2, technic.get_RE_charge(get_discharge_stack()))
384-
for i=1, 3 do
385-
mineunit:execute_globalstep(1)
386-
end
383+
run_network(3)
387384

388385
-- Take item from battery box and check charge / wear values
389386
player:do_metadata_inventory_take(BB_Discharge_POS, "dst", 1)
@@ -435,11 +432,9 @@ describe("Technic power tool", function()
435432
-- Put item from player inventory to battery box src inventory
436433
player:do_metadata_inventory_put(BB_Charge_POS, "src", 1)
437434

438-
-- Verify that item charge is empty and charge in battery box for 30 seconds
435+
-- Verify that item charge is empty and charge in battery box for capacity/10k seconds
439436
assert.equals(0, technic.get_RE_charge(get_charge_stack()))
440-
for i=1, 30 do
441-
mineunit:execute_globalstep(1)
442-
end
437+
run_network(math.ceil(itemdef.technic_max_charge / 10000))
443438

444439
-- Take item from battery box and check charge / wear values
445440
player:do_metadata_inventory_take(BB_Charge_POS, "src", 1)
@@ -477,9 +472,7 @@ describe("Technic power tool", function()
477472

478473
-- Verify that item is charged and discharge in battery box for 8 seconds
479474
assert.lt(itemdef.technic_max_charge / 2, technic.get_RE_charge(get_discharge_stack()))
480-
for i=1, 8 do
481-
mineunit:execute_globalstep(1)
482-
end
475+
run_network(8)
483476

484477
-- Take item from battery box and check charge / wear values
485478
player:do_metadata_inventory_take(BB_Discharge_POS, "dst", 1)
@@ -539,11 +532,9 @@ describe("Technic power tool", function()
539532
-- Put item from player inventory to battery box src inventory
540533
player:do_metadata_inventory_put(BB_Charge_POS, "src", 1)
541534

542-
-- Verify that item charge is empty and charge in battery box for 30 seconds
535+
-- Verify that item charge is empty and charge in battery box for capacity/10k seconds
543536
assert.equals(0, technic.get_RE_charge(get_charge_stack()))
544-
for i=0, math.ceil(itemdef.technic_max_charge / 10000) do
545-
mineunit:execute_globalstep(1)
546-
end
537+
run_network(math.ceil(itemdef.technic_max_charge / 10000))
547538

548539
-- Take item from battery box and check charge / wear values
549540
player:do_metadata_inventory_take(BB_Charge_POS, "src", 1)

0 commit comments

Comments
 (0)