1-- ============== 2-- Testing roads 3-- ============== 4function _cnt(i) 5 local rv = 0 6 for name,cnt in pairs(i) do rv = rv + cnt end 7 return rv 8end 9 10 11-- ============ 12-- Usage tests 13-- ============ 14road_tests = lunit.TestCase("road tests") 15function road_tests:setup() 16 self.f = map:get_field(10,10) 17 player1:conquer(self.f, 6) 18 19 self.start_flag = player1:place_flag(self.f) 20 21 self.r = player1:place_road("busy", self.start_flag, "r", "r", "br", "br") 22 self.end_flag = self.f.rn.rn.brn.brn.immovable 23end 24function road_tests:teardown() 25 flags = {self.start_flag, self.end_flag} 26 for temp, f in ipairs(flags) do 27 pcall(function() f:remove() end) 28 end 29end 30 31function road_tests:test_length() 32 assert_equal(4, self.r.length) 33end 34function road_tests:test_field() 35 local f = self.r.fields 36 assert_equal(#f, 3) 37 assert_equal(self.f.rn, f[1]) 38 assert_equal(self.f.rn.rn, f[2]) 39 assert_equal(self.f.rn.rn.brn, f[3]) 40end 41function road_tests:test_roadtype() 42 assert_equal("busy", self.r.road_type) 43end 44function road_tests:test_type() 45 assert_equal("road", self.r.descr.type_name) 46end 47function road_tests:test_name() 48 assert_equal("road", self.r.descr.name) 49end 50 51function road_tests:test_deletion_of_flag() 52 self.r.start_flag:remove() 53 assert_error("Road vanished!", function() self.r:length() end) 54end 55function road_tests:test_access_of_flags() 56 assert_equal(self.end_flag, self.r.end_flag) 57 assert_equal(self.start_flag, self.r.start_flag) 58end 59function road_tests:test_road_upcasting() 60 i = self.f.rn.immovable 61 assert_equal(i, self.r) 62 assert_equal(4, i.length) 63end 64 65-- ==================== 66-- Creating of carrier 67-- ==================== 68function road_tests:test_no_worker_at_creation() 69 assert_equal(0, _cnt(self.r:get_workers("all"))) 70end 71function road_tests:test_carrier_creation() 72 self.r:set_workers("barbarians_carrier",1) 73 assert_equal(1, _cnt(self.r:get_workers("all"))) 74 assert_equal(1, self.r:get_workers("barbarians_carrier")) 75end 76function road_tests:test_carrier_creation_and_deletion() 77 self.r:set_workers("barbarians_carrier",1) 78 assert_equal(1, _cnt(self.r:get_workers("all"))) 79 assert_equal(1, self.r:get_workers("barbarians_carrier")) 80 self.r:set_workers("barbarians_carrier",0) 81 assert_equal(0, _cnt(self.r:get_workers("all"))) 82 assert_equal(0, self.r:get_workers("barbarians_carrier")) 83 self.r:set_workers("barbarians_carrier",1) 84 assert_equal(1, _cnt(self.r:get_workers("all"))) 85 assert_equal(1, self.r:get_workers("barbarians_carrier")) 86end 87function road_tests:test_carrier_creation_not_a_carrier() 88 assert_error("Not a carrier!", function() 89 self.r:set_workers{barbarians_lumberjack=1} 90 end) 91end 92function road_tests:test_carrier_creation_illegal_name() 93 assert_error("Illegal name", function() 94 self.r:set_workers("kjhskjh", 1) 95 end) 96end 97function road_tests:test_carrier_no_space() 98 self.r:set_workers{barbarians_carrier=1} 99 assert_error("No space!", function () 100 self.r:set_workers{barbarians_carrier=2} 101 end) 102end 103function road_tests:test_valid_workers() 104 assert_equal(2, _cnt(self.r.valid_workers)) 105 assert_equal(1, self.r.valid_workers.barbarians_carrier) 106end 107