-- Kør: luajit tests/test_adHitch.lua (fra repo-roden) dofile("FS25_ADSmartPickup/adHitch.lua") local H = ADHitch 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 -- markørnavne: "Connect " (store/små bogstaver ligegyldigt), også dansk "Kobl " check("navn: Connect Bredal", H.connectTarget("Connect Bredal"), "Bredal") check("navn: små bogstaver", H.connectTarget("connect bredal"), "bredal") check("navn: dansk Kobl", H.connectTarget("Kobl Vogn 2"), "Vogn 2") check("navn: kun Connect", H.connectTarget("Connect"), "") check("navn: Connected er ikke en koblingsmarkør", H.connectTarget("Connected silo"), nil) check("navn: almindelig markør", H.connectTarget("Bredal"), nil) check("navn: nil", H.connectTarget(nil), nil) -- ankomst: AD er stoppet, traktoren står stille tæt på markøren check("ankomst: stoppet ved markør", H.hasArrived({adActive = false, distance = 1.2, speed = 0.1}), true) check("ankomst: AD kører stadig", H.hasArrived({adActive = true, distance = 0.5, speed = 0}), false) check("ankomst: for langt væk", H.hasArrived({adActive = false, distance = 9, speed = 0}), false) check("ankomst: ruller stadig", H.hasArrived({adActive = false, distance = 1, speed = 3}), false) -- vagten: efter ankomst forsøges koblingen et stykke tid, derefter opgives den local job = H.newJob(25, "Connect Bredal") check("job: venter på AD", job.state, "driving") H.step(job, {adActive = true, distance = 30, speed = 10}, 1000, false) check("job: kører stadig", job.state, "driving") H.step(job, {adActive = false, distance = 1, speed = 0}, 500, false) check("job: ankommet, kobling ikke lykkedes endnu", job.state, "attaching") H.step(job, {adActive = false, distance = 1, speed = 0}, 500, true) check("job: koblet på", job.state, "done") local failJob = H.newJob(25, "Connect Bredal") H.step(failJob, {adActive = false, distance = 1, speed = 0}, 500, false) for _ = 1, 20 do H.step(failJob, {adActive = false, distance = 1, speed = 0}, 500, false) end check("job: opgivet efter vagt-tid", failJob.state, "failed") check("job: årsag", failJob.reason, "noAttachable") local lostJob = H.newJob(25, "Connect Bredal") H.step(lostJob, {adActive = false, distance = 40, speed = 0}, 500, false) check("job: AD ikke startet endnu (opstart-frist)", lostJob.state, "driving") H.step(lostJob, {adActive = true, distance = 40, speed = 5}, 500, false) H.step(lostJob, {adActive = false, distance = 40, speed = 0}, 500, false) check("job: AD stoppede langt fra markøren", lostJob.state, "failed") check("job: årsag stoppet undervejs", lostJob.reason, "stoppedAway") print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL")) os.exit(failures == 0 and 0 or 1)