-- Kør: luajit tests/test_adFlowWagons.lua (fra repo-roden) dofile("FS25_ADSmartPickup/adRuns.lua") dofile("FS25_ADSmartPickup/adFlowWagons.lua") local W = ADFlowWagons local failures = 0 local function check(name, actual, expected) if actual == expected then print("OK " .. name) else failures = failures + 1 print(string.format("FAIL %s: forventede %s, fik %s", name, tostring(expected), tostring(actual))) end end -- gem/indlæs: traktor -> vogn local text = W.serialize({vehicleB = "wagon2", vehicleA = "wagon1"}) check("gem: sorteret", text, "vehicleA=wagon1;vehicleB=wagon2") local parsed = W.parse(text) check("indlæs: A", parsed.vehicleA, "wagon1") check("indlæs: B", parsed.vehicleB, "wagon2") check("indlæs: tom", next(W.parse("")), nil) check("indlæs: nil", next(W.parse(nil)), nil) check("indlæs: skrald springes over", next(W.parse("=x;;y=")), nil) -- husk vogn: ny tabel, gammel urørt local before = {t1 = "w1"} local after = W.remember(before, "t1", "w9") check("husk: ny vogn", after.t1, "w9") check("husk: original urørt", before.t1, "w1") check("husk: samme vogn -> samme tabel", W.remember(after, "t1", "w9"), after) -- start: hent / vent / start check("start: har redskab bagpå", W.startAction({hasRear = true, wagonId = "w1", wagonExists = true, hasConnect = true}), "start") check("start: ingen husket vogn", W.startAction({}), "start") check("start: vognen findes ikke", W.startAction({wagonId = "w1", wagonExists = false, hasConnect = true}), "start") check("start: vognen uden Connect", W.startAction({wagonId = "w1", wagonExists = true, hasConnect = false}), "start") check("start: vognen på en anden", W.startAction({wagonId = "w1", wagonExists = true, hasConnect = true, wagonAttached = true}), "wait") check("start: vognen lånt ud", W.startAction({wagonId = "w1", wagonExists = true, hasConnect = true, wagonBusy = true}), "wait") check("start: hent", W.startAction({wagonId = "w1", wagonExists = true, hasConnect = true}), "fetch") -- ejer: kun et ikke-stoppet flow holder vognen local runs = {{id = 1, stopped = false, wagons = {t1 = "w1"}}, {id = 2, stopped = true, wagons = {t2 = "w2"}}} check("ejer: kørende flow holder", W.isHeld(runs, "w1"), true) check("ejer: stoppet flow holder ikke", W.isHeld(runs, "w2"), false) check("ejer: ukendt vogn", W.isHeld(runs, "w3"), false) check("ejer: flowet findes", W.ownerOf(runs, "w2").id, 2) -- bygning væk: to tjek i træk local count, gone = W.missingStep(0, true) check("væk: første tjek -> ikke endnu", gone, false) count, gone = W.missingStep(count, true) check("væk: andet tjek -> væk", gone, true) count, gone = W.missingStep(1, false) check("væk: fundet igen nulstiller", count, 0) check("væk: fundet igen -> ikke væk", gone, false) -- manglende bygninger i et flow local exists = {a = true, b = true} check("mangler: alle findes", #W.missingBuildings({sourceBuildingIds = {"a"}, targetBuildingIds = {"b"}}, exists, exists), 0) check("mangler: én væk", W.missingBuildings({targetBuildingIds = {"a", "c"}, storeBuildingIds = {}}, exists, {a = true, c = true})[1], "c") -- review v1.51 check("R1 traktoren er lånt ud af puljen -> vent", W.startAction({tractorBusy = true, hasRear = true, wagonId = "w1", wagonExists = true, hasConnect = true}), "wait") local runs2 = {{id = 1, stopped = true, wagons = {t1 = "w1"}}, {id = 2, stopped = false, wagons = {t9 = "w1"}}} check("R4 holdt hvis ET kørende flow har vognen", W.isHeld(runs2, "w1"), true) local seen = {a = true, c = true} check("R+ bygning aldrig set i sessionen tæller ikke som væk", #W.missingBuildings({targetBuildingIds = {"b"}}, {a = true}, seen), 0) check("R+ bygning set og nu væk", W.missingBuildings({targetBuildingIds = {"c"}}, {a = true}, seen)[1], "c") -- gæt flowets vogn ud fra parkeringsnavnet (ingen husket vogn: vognene var sat på plads før v1.51) local cands = {{id = "v1", parkName = "P Cow Food vogn 1"}, {id = "v3", parkName = "P Cow Food vogn 3"}, {id = "g1", parkName = "P Goat Food vogn 1"}, {id = "v2", parkName = "P Cow Food vogn 2"}} check("gæt: samme nummer", W.guessWagon("Cow Food", 3, cands, {}), "v3") check("gæt: nummer optaget -> anden med flowets navn", W.guessWagon("Cow Food", 3, cands, {v3 = true}), "v1") check("gæt: andet flow", W.guessWagon("Goat Food", 2, cands, {}), "g1") check("gæt: intet passer", W.guessWagon("Pig Food", 1, cands, {}), nil) check("gæt: store/små bogstaver", W.guessWagon("cow food", 2, cands, {}), "v2") check("gæt: 'Cow Food 1' matcher ikke 'Cow Food 10'", W.guessWagon("Cow Food", 1, {{id = "x", parkName = "P Cow Food vogn 10"}, {id = "y", parkName = "P Cow Food vogn 1"}}, {}), "y") print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL")) os.exit(failures == 0 and 0 or 1)