@@ -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