feat(kobling): rummelig koblingsrækkevidde (3 m) og bakning de sidste 3-8 m hen til vognens trækøje ved Connect-markører; lagervisning: bredere mængde-/rate-kolonner så teksten ikke klippes (v1.53.0.0)

This commit is contained in:
2026-09-29 13:44:21 +02:00
parent a305de25a5
commit 417a44841d
7 changed files with 262 additions and 15 deletions
+4
View File
@@ -30,6 +30,10 @@ check("ankomst: stoppet ved markør", H.hasArrived({adActive = false, distance =
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)
-- efter at have bakket hen til vognen står traktoren længere fra markøren
check("ankomst: bakket til vognen, udvidet afstand", H.hasArrived({adActive = false, distance = 9, speed = 0, arriveDistance = 13}), true)
local crept = H.step(H.newJob(1, "Connect x", "attach"), {adActive = false, distance = 9, speed = 3, arriveDistance = 13}, 4000, false)
check("vagt: bakket, ruller lidt -> ikke 'stoppedAway'", crept.state, "driving")
-- vagten: efter ankomst forsøges koblingen et stykke tid, derefter opgives den
local job = H.newJob(25, "Connect Bredal", "attach")
check("job: venter på AD", job.state, "driving")
+26
View File
@@ -0,0 +1,26 @@
-- Kør: luajit tests/test_adHitchCreep.lua (fra repo-roden)
dofile("FS25_ADSmartPickup/adHitchCreep.lua")
local C = ADHitchCreep
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
-- plan: vognens trækøje i traktorens rum set fra krogen (x = til siden, z < 0 = bagved)
check("plan: inden for rummelig rækkevidde -> kobl direkte", C.plan({x = 0.4, z = -2.0}), "attach")
check("plan: 5 m lige bagved -> bak", C.plan({x = 0.3, z = -5.0}), "creep")
check("plan: lidt til siden -> bak", C.plan({x = -1.2, z = -6.0}), "creep")
check("plan: for langt til siden -> intet", C.plan({x = 2.5, z = -5.0}), "none")
check("plan: for langt bagved -> intet", C.plan({x = 0, z = -12.0}), "none")
check("plan: foran traktoren -> intet", C.plan({x = 0, z = 5.0}), "none")
check("plan: ingen vogn -> intet", C.plan(nil), "none")
-- skridt under bakningen
check("skridt: vognen inden for rækkevidde -> færdig", C.step({inRange = true, distance = 2.5, startDistance = 6, elapsedMs = 3000}), "done")
check("skridt: på vej -> kør", C.step({inRange = false, distance = 4, startDistance = 6, elapsedMs = 3000}), "drive")
check("skridt: for længe -> giv op", C.step({inRange = false, distance = 4, startDistance = 6, elapsedMs = C.CREEP_TIMEOUT_MS}), "giveUp")
check("skridt: kører væk fra vognen -> giv op", C.step({inRange = false, distance = 7.5, startDistance = 6, elapsedMs = 3000}), "giveUp")
check("skridt: forbi vognen uden kobling -> giv op", C.step({inRange = false, distance = 0.3, startDistance = 6, elapsedMs = 3000, passed = true}), "giveUp")
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
os.exit(failures == 0 and 0 or 1)