feat: controller — udkørsels-runs: start, validering, produkter, kilder, status
This commit is contained in:
@@ -412,5 +412,91 @@ ADRunsController.startRun(adEnv, sugar.id)
|
||||
check("C18 rigtig last -> målet", sugarVehicle.ad.stateModule.secondMarkerId, 77)
|
||||
ADUnloadWait = nil; ADLoadSwap = nil
|
||||
|
||||
-- C-out: udkørsels-runs — oprettelse, kilder, produkter, validering, start, status
|
||||
local BASKET = 7
|
||||
FILL_TYPE_NAMES[BASKET] = "STRAW_BASKET"; FILL_TYPE_INDEX["STRAW_BASKET"] = BASKET
|
||||
local sourcesAt, productsAt = {}, {}
|
||||
ADSources = {
|
||||
identify = function(_, id) return sourcesAt[id] end,
|
||||
getProducts = function(_, source) return productsAt[source.wayPointId] or {} end,
|
||||
getSellMarkers = function() return {} end,
|
||||
stationAccepts = function() return false end,
|
||||
getSourcePlaceables = function() return {} end,
|
||||
}
|
||||
local outboundStatus = {reasons = {"SUGAR 78 % af top (kræver 90), lager 41 %"}, warning = nil}
|
||||
local holdFor = {}
|
||||
ADOutbound = {
|
||||
isOutboundVehicle = function(v) local r = ADRunsController.getRunForVehicle(v) return r ~= nil and r.kind == "outbound" end,
|
||||
getRunStatus = function() return outboundStatus end,
|
||||
getHoldFor = function(v) return holdFor[v] end,
|
||||
getTripFor = function() return nil end,
|
||||
releaseInactive = function() end,
|
||||
}
|
||||
ADUnloadWait = {getRestLoad = function() return nil, 0 end, getWaitFor = function() return nil end}
|
||||
buildWorld()
|
||||
addMarker(1, "Suger Load", "Pickup points", 100, 0); loadAt[1] = {}
|
||||
addMarker(3, "Objektlager", "Pickup points", 300, 0)
|
||||
addMarker(10, "selling station", "selling", 500, 0)
|
||||
sourcesAt[1] = {kind = "factory", wayPointId = 1, station = loadAt[1], name = "Sugar mill"}
|
||||
sourcesAt[3] = {kind = "objectStorage", wayPointId = 3, name = "Objektlager"}
|
||||
productsAt[1] = {{fillType = TMR, name = "FORAGE", title = "TMR", available = 150000, level = 150000, capacity = 180000, isPallet = false}}
|
||||
productsAt[3] = {{fillType = BASKET, name = "STRAW_BASKET", title = "Halmkurve", available = 8000, level = 8, capacity = 4000, isPallet = true}}
|
||||
local bulkTractor = makeVehicle("vehicleBulk", "MT635", {STRAW, TMR}, 20000, 100, 0)
|
||||
local ualTractor = makeVehicle("vehicleUal", "Fendt", {}, 8000, 300, 0)
|
||||
ualTractor.trailers[1] = {ual = true}
|
||||
adEnv.AutoDrive.hasAL = function(_, trailer) return trailer.ual == true end
|
||||
|
||||
local out = ADRunsController.createRun("Sugar out", "outbound")
|
||||
check("Cout1 kind", ADRuns.getRun(ADRunsController.store, out.id).kind, "outbound")
|
||||
check("Cout1 supply-run har kind supply", ADRunsController.createRun("Cows").kind, "supply")
|
||||
check("Cout1 kilde-markører", #ADRunsController.getSourceMarkers(adEnv, 1), 2)
|
||||
check("Cout1 første kilde-markør", ADRunsController.getSourceMarkers(adEnv, 1)[1].marker.name, "Objektlager")
|
||||
|
||||
-- Cout2: validering
|
||||
local outRun = ADRuns.getRun(ADRunsController.store, out.id)
|
||||
check("Cout2 ingen kilder -> noSource", ADRunsController.validateVehicle(adEnv, outRun, bulkTractor).reason, "noSource")
|
||||
ADRunsController.store = ADRuns.toggleSource(ADRunsController.store, out.id, 1)
|
||||
ADRunsController.store = ADRuns.toggleSource(ADRunsController.store, out.id, 3)
|
||||
outRun = ADRuns.getRun(ADRunsController.store, out.id)
|
||||
check("Cout2 ingen vare valgt -> noProducts", ADRunsController.validateVehicle(adEnv, outRun, bulkTractor).reason, "noProducts")
|
||||
ADRunsController.store = ADRuns.setProductPolicy(ADRunsController.store, out.id, "STRAW_BASKET", "sell")
|
||||
outRun = ADRuns.getRun(ADRunsController.store, out.id)
|
||||
check("Cout2 kun paller uden UAL -> needsAutoload", ADRunsController.validateVehicle(adEnv, outRun, bulkTractor).reason, "needsAutoload")
|
||||
check("Cout2 UAL-vogn ok", ADRunsController.validateVehicle(adEnv, outRun, ualTractor).ok, true)
|
||||
ADRunsController.store = ADRuns.setProductPolicy(ADRunsController.store, out.id, "FORAGE", "store")
|
||||
outRun = ADRuns.getRun(ADRunsController.store, out.id)
|
||||
check("Cout2 bulk-vogn ok med TMR", ADRunsController.validateVehicle(adEnv, outRun, bulkTractor).ok, true)
|
||||
local strawOnly = makeVehicle("vehicleStraw", "Halm", {STRAW}, 20000, 100, 0)
|
||||
check("Cout2 kan ikke bære -> cannotCarry", ADRunsController.validateVehicle(adEnv, outRun, strawOnly).reason, "cannotCarry")
|
||||
|
||||
-- Cout3: start sætter mode, 1./2. markør = første kilde, varevalg = det vognen kan bære af run'ets varer
|
||||
ADRunsController.assignVehicle(out.id, bulkTractor)
|
||||
ADRunsController.assignVehicle(out.id, ualTractor)
|
||||
local results = ADRunsController.startRun(adEnv, out.id)
|
||||
check("Cout3 to startet", #results, 2)
|
||||
check("Cout3 mode P&D", bulkTractor.ad.stateModule.mode, MODE_PICKUPANDDELIVER)
|
||||
check("Cout3 1. markør = første kilde", bulkTractor.ad.stateModule.firstMarkerId, 1)
|
||||
check("Cout3 2. markør = første kilde (pladsholder)", bulkTractor.ad.stateModule.secondMarkerId, 1)
|
||||
check("Cout3 bulk-vogn: kun TMR", table.concat(bulkTractor.ad.stateModule.selectedFillTypes, ","), tostring(TMR))
|
||||
check("Cout3 UAL-vogn: kurve", table.concat(ualTractor.ad.stateModule.selectedFillTypes, ","), tostring(BASKET))
|
||||
check("Cout3 rotation kun pålæsning", bulkTractor.ad.settings.rotateTargets.current, 2)
|
||||
check("Cout3 startet", bulkTractor.started, 1)
|
||||
|
||||
-- Cout4: produkter til fanen (politik slået op, sorteret på titel) og status
|
||||
local list = ADRunsController.getRunProducts(adEnv, outRun)
|
||||
check("Cout4 to produkter", #list, 2)
|
||||
check("Cout4 første = Halmkurve", list[1].title, "Halmkurve")
|
||||
check("Cout4 politik", list[1].policy, "sell")
|
||||
check("Cout4 TMR lager", list[2].policy, "store")
|
||||
check("Cout4 available", list[2].available, 150000)
|
||||
local st = ADRunsController.getOutboundStatus(adEnv, outRun)
|
||||
check("Cout4 status-begrundelse", st.reasons[1], "SUGAR 78 % af top (kræver 90), lager 41 %")
|
||||
holdFor[bulkTractor] = {markerName = "Wait 3", reasons = {"SUGAR 78 % af top (kræver 90), lager 41 %"}}
|
||||
local activity = ADRunsController.getVehicleActivity(adEnv, bulkTractor)
|
||||
check("Cout4 aktivitet = holder", activity.kind, "holding")
|
||||
check("Cout4 aktivitet sted", activity.place, "Wait 3")
|
||||
check("Cout4 udkørsel har ingen mål", #ADRunsController.getRunTargets(outRun), 0)
|
||||
ADUnloadWait = nil; ADOutbound = nil; ADSources = nil
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
Reference in New Issue
Block a user