mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-14 16:50:53 +01:00
* feat: 401da oil pump lamp and slotted lever animation (eu07/maszyna#546) i-oilpump lights while the pre-lubrication oil pump works, so it goes off once the engine runs. animslottedlever: in the .mmd turns a lever by a pin on the coupling rod sliding in the lever's slot, which the speedometer drive of 401Da needs. The compressor start delay of #546 came with CompressorStartDelay (Brake section) of master. * fix: force GLM AVX2 only when the compiler targets AVX2 ENABLE_AVX2=OFF left GLM_FORCE_AVX2 defined, so MSVC still emitted AVX2 intrinsics and the exe crashed on CPUs without AVX2. * test: cover the compressor start delay and the oil pump lamp The delay of an engine stopped before it passed starts over, a compressor switched on by hand waits too, and the key is read from the Brake section. In the converter-fed set-up of 401Da the compressor waits for ConverterStartDelay and then its own delay. The oil pump (i-oilpump lamp) works before the engine start and stops once the engine runs.
56 lines
2.0 KiB
C++
56 lines
2.0 KiB
C++
#include "stdafx.h"
|
|
#include "doctest.h"
|
|
#include "vehicle.h"
|
|
|
|
using test::definition;
|
|
using test::vehicle;
|
|
|
|
// the oil pump lamp of the cab (i-oilpump) shows OilPump.is_active: the pre-lubrication pump of 401Da, which works
|
|
// before the engine start and stops once the engine runs and makes the oil pressure itself (eu07/maszyna#546)
|
|
// NOTE: the test vehicle has no diesel engine, so the pump check is called the way dizel_Update() calls it
|
|
|
|
TEST_CASE("oil pump: the pre-lubrication pump works before the engine start and stops once the engine runs") {
|
|
vehicle loco{definition::load("cab_vehicle").set("Cntrl", "OilStart", "Manual")};
|
|
REQUIRE(loco->OilPump.start_type == start_t::manual);
|
|
loco->Power24vIsAvailable = true; // battery on
|
|
|
|
loco->OilPumpCheck(0.01);
|
|
CHECK_FALSE(loco->OilPump.is_active); // not switched on yet
|
|
|
|
loco->OilPump.is_enabled = true; // pump switch on: pre-lubrication
|
|
loco->OilPumpCheck(0.01);
|
|
CHECK(loco->OilPump.is_active);
|
|
|
|
loco->Mains = true; // engine started
|
|
loco->OilPumpCheck(0.01);
|
|
CHECK_FALSE(loco->OilPump.is_active);
|
|
}
|
|
|
|
TEST_CASE("oil pump: the pump started with the engine start procedure stops once the engine runs") {
|
|
vehicle loco{definition::load("cab_vehicle").set("Cntrl", "OilStart", "Automatic")};
|
|
REQUIRE(loco->OilPump.start_type == start_t::automatic);
|
|
loco->Power24vIsAvailable = true;
|
|
|
|
loco->dizel_startup = true; // starter button pressed
|
|
loco->OilPumpCheck(0.01);
|
|
CHECK(loco->OilPump.is_active);
|
|
|
|
loco->dizel_startup = false; // start procedure done, the pump keeps working until the engine runs
|
|
loco->OilPumpCheck(0.01);
|
|
CHECK(loco->OilPump.is_active);
|
|
|
|
loco->Mains = true;
|
|
loco->OilPumpCheck(0.01);
|
|
CHECK_FALSE(loco->OilPump.is_active);
|
|
}
|
|
|
|
TEST_CASE("oil pump: without power the pump and its lamp stay off") {
|
|
vehicle loco{definition::load("cab_vehicle")};
|
|
loco->Power24vIsAvailable = false;
|
|
loco->Power110vIsAvailable = false;
|
|
|
|
loco->OilPump.is_enabled = true;
|
|
loco->OilPumpCheck(0.01);
|
|
CHECK_FALSE(loco->OilPump.is_active);
|
|
}
|