1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-13 19:40:20 +03:00

Various fixes for gtests that were shown when running tests in random… (#3978)

* Various fixes for gtests that were shown when running tests in random sequence. Enabled random gtests shuffling in commit tests.

* 9X gtests fixes

* more gtests fixes

* even more gtests fixes

* Another round of gtests fixes

* Code deduplication with test fixtures

* More fixtures
This commit is contained in:
Damjan Adamic 2016-11-02 22:03:44 +01:00 committed by Bertrand Songis
parent dfc81cecad
commit d2144001d1
6 changed files with 137 additions and 136 deletions

View file

@ -33,6 +33,8 @@ void displayVoltagesScreen();
#if defined(TELEMETRY_FRSKY) && !defined(CPUARM)
TEST(FrSky, gpsNfuel)
{
MODEL_RESET();
TELEMETRY_RESET();
g_model.frsky.usrProto = 1;
telemetryData.hub.gpsFix = 1;
@ -62,6 +64,11 @@ TEST(FrSky, gpsNfuel)
TEST(FrSky, dateNtime)
{
MODEL_RESET();
TELEMETRY_RESET();
g_model.frsky.usrProto = 1;
telemetryData.hub.gpsFix = 1;
uint8_t pkt1[] = { 0xfd, 0x07, 0x00, 0x5e, 0x15, 0x0f, 0x07, 0x5e, 0x16, 0x0b };
uint8_t pkt2[] = { 0xfd, 0x07, 0x00, 0x00, 0x5e, 0x17, 0x06, 0x12, 0x5e, 0x18 };
uint8_t pkt3[] = { 0xfd, 0x03, 0x00, 0x32, 0x00, 0x5e };
@ -178,6 +185,8 @@ TEST(FrSky, Gps)
{
MODEL_RESET();
TELEMETRY_RESET();
allowNewSensors = true;
EXPECT_EQ(telemetryItems[0].value, 0);
// latitude 15 degrees north, 30.5000 minutes = 15.508333333333333 degrees
@ -240,6 +249,8 @@ TEST(FrSkySPORT, FrSkyDCells)
{
MODEL_RESET();
TELEMETRY_RESET();
allowNewSensors = true;
uint8_t pkt1[] = { 0x7E, 0x98, 0x10, 0x06, 0x00, 0x07, 0xD0, 0x00, 0x00, 0x12 };
EXPECT_EQ(checkSportPacket(pkt1+1), true);
sportProcessTelemetryPacket(pkt1+1);
@ -266,6 +277,7 @@ TEST(FrSkySPORT, frskySetCellVoltage)
MODEL_RESET();
TELEMETRY_RESET();
allowNewSensors = true;
// test that simulates 3 cell battery
generateSportCellPacket(packet, 3, 0, _V(410), _V(420)); sportProcessTelemetryPacket(packet);
@ -360,6 +372,7 @@ TEST(FrSkySPORT, StrangeCellsBug)
{
MODEL_RESET();
TELEMETRY_RESET();
allowNewSensors = true;
uint8_t pkt[] = { 0x7E, 0x48, 0x10, 0x00, 0x03, 0x30, 0x15, 0x50, 0x81, 0xD5 };
EXPECT_EQ(checkSportPacket(pkt+1), true);
@ -375,6 +388,7 @@ TEST(FrSkySPORT, frskySetCellVoltageTwoSensors)
MODEL_RESET();
TELEMETRY_RESET();
allowNewSensors = true;
//sensor 1: 3 cell battery
generateSportCellPacket(packet, 3, 0, _V(418), _V(416)); sportProcessTelemetryPacket(packet);
@ -449,6 +463,7 @@ TEST(FrSkySPORT, frskyVfas)
MODEL_RESET();
TELEMETRY_RESET();
allowNewSensors = true;
// tests for Vfas
generateSportFasVoltagePacket(packet, 5000); sportProcessTelemetryPacket(packet);
@ -487,6 +502,7 @@ TEST(FrSkySPORT, frskyCurrent)
MODEL_RESET();
TELEMETRY_RESET();
allowNewSensors = true;
// tests for Curr
generateSportFasCurrentPacket(packet, 0); sportProcessTelemetryPacket(packet);

View file

@ -20,9 +20,10 @@
#include "gtests.h"
class SpecialFunctionsTest : public OpenTxTest {};
#if defined(CPUARM)
TEST(SpecialFunctions, SwitchFiledSize)
TEST_F(SpecialFunctionsTest, SwitchFiledSize)
{
// test the size of swtch member
g_model.customFn[0].swtch = SWSRC_LAST;
@ -32,17 +33,15 @@ TEST(SpecialFunctions, SwitchFiledSize)
}
#if defined(PCBTARANIS) || defined(PCBHORUS)
TEST(SpecialFunctions, FlightReset)
TEST_F(SpecialFunctionsTest, FlightReset)
{
RADIO_RESET();
MODEL_RESET();
g_model.customFn[0].swtch = SWSRC_SA0;
g_model.customFn[0].func = FUNC_RESET;
g_model.customFn[0].all.val = FUNC_RESET_FLIGHT;
g_model.customFn[0].active = true;
mainRequestFlags = 0;
simuSetSwitch(0, 0);
evalFunctions(g_model.customFn, modelFunctionsContext);
EXPECT_EQ((bool)(mainRequestFlags & (1 << REQUEST_FLIGHT_RESET)), false);
@ -60,11 +59,8 @@ TEST(SpecialFunctions, FlightReset)
}
#if defined(GVARS)
TEST(SpecialFunctions, GvarsInc)
TEST_F(SpecialFunctionsTest, GvarsInc)
{
RADIO_RESET();
MODEL_RESET();
simuSetSwitch(0, 0); // SA-
g_model.customFn[0].swtch = SWSRC_SA0;

View file

@ -82,13 +82,34 @@ inline void TELEMETRY_RESET()
memclear(&telemetryData, sizeof(telemetryData));
TELEMETRY_RSSI() = 100;
#endif
#if defined(CPUARM) && defined(TELEMETRY_FRSKY)
#if defined(CPUARM)
#if defined(TELEMETRY_FRSKY)
for (int i=0; i<MAX_TELEMETRY_SENSORS; i++) {
telemetryItems[i].clear();
}
#endif
memclear(g_model.telemetrySensors, sizeof(g_model.telemetrySensors));
#endif
}
bool checkScreenshot(QString test);
class OpenTxTest : public testing::Test
{
protected: // You should make the members protected s.t. they can be
// accessed from sub-classes.
// virtual void SetUp() will be called before each test is run. You
// should define it if you need to initialize the varaibles.
// Otherwise, this can be skipped.
virtual void SetUp()
{
SYSTEM_RESET();
MODEL_RESET();
MIXER_RESET();
modelDefault(0);
RADIO_RESET();
}
};
#endif // _GTESTS_H_

View file

@ -20,6 +20,9 @@
#include "gtests.h"
class TrimsTest : public OpenTxTest {};
class MixerTest : public OpenTxTest {};
#define CHECK_NO_MOVEMENT(channel, value, duration) \
for (int i=1; i<=(duration); i++) { \
evalFlightModeMixes(e_perout_mode_normal, 1); \
@ -44,11 +47,8 @@
} \
} while (0)
TEST(Trims, throttleTrim)
TEST_F(TrimsTest, throttleTrim)
{
SYSTEM_RESET();
MODEL_RESET();
modelDefault(0);
g_model.thrTrim = 1;
// stick max + trim max
anaInValues[THR_STICK] = +1024;
@ -106,10 +106,8 @@ TEST(Trims, throttleTrim)
}
TEST(Trims, invertedThrottlePlusThrottleTrim)
TEST_F(TrimsTest, invertedThrottlePlusThrottleTrim)
{
MODEL_RESET();
modelDefault(0);
g_model.throttleReversed = 1;
g_model.thrTrim = 1;
// stick max + trim max
@ -167,10 +165,8 @@ TEST(Trims, invertedThrottlePlusThrottleTrim)
EXPECT_EQ(channelOutputs[2], +1024);
}
TEST(Trims, throttleTrimWithZeroWeightOnThrottle)
TEST_F(TrimsTest, throttleTrimWithZeroWeightOnThrottle)
{
MODEL_RESET();
modelDefault(0);
g_model.thrTrim = 1;
#if defined(VIRTUAL_INPUTS)
// the input already exists
@ -245,10 +241,8 @@ TEST(Trims, throttleTrimWithZeroWeightOnThrottle)
EXPECT_EQ(channelOutputs[2], 1000);
}
TEST(Trims, invertedThrottlePlusthrottleTrimWithZeroWeightOnThrottle)
TEST_F(TrimsTest, invertedThrottlePlusthrottleTrimWithZeroWeightOnThrottle)
{
MODEL_RESET();
modelDefault(0);
g_model.throttleReversed = 1;
g_model.thrTrim = 1;
#if defined(VIRTUAL_INPUTS)
@ -325,26 +319,23 @@ TEST(Trims, invertedThrottlePlusthrottleTrimWithZeroWeightOnThrottle)
}
#if !defined(VIRTUAL_INPUTS)
TEST(Trims, greaterTrimLink)
TEST_F(TrimsTest, greaterTrimLink)
{
MODEL_RESET();
setTrimValue(1, RUD_STICK, TRIM_EXTENDED_MAX+3); // link to FP3 trim
setTrimValue(3, RUD_STICK, 32);
EXPECT_EQ(getRawTrimValue(getTrimFlightMode(1, RUD_STICK), RUD_STICK), 32);
}
TEST(Trims, chainedTrims)
TEST_F(TrimsTest, chainedTrims)
{
MODEL_RESET();
setTrimValue(0, RUD_STICK, 32);
setTrimValue(1, RUD_STICK, TRIM_EXTENDED_MAX+1); // link to FP0 trim
setTrimValue(2, RUD_STICK, TRIM_EXTENDED_MAX+2); // link to FP1 trim
EXPECT_EQ(getRawTrimValue(getTrimFlightMode(0, RUD_STICK), RUD_STICK), 32);
}
TEST(Trims, infiniteChainedTrims)
TTEST_F(TrimsTest, infiniteChainedTrims)
{
MODEL_RESET();
setTrimValue(0, RUD_STICK, 32);
setTrimValue(1, RUD_STICK, TRIM_EXTENDED_MAX+3); // link to FP3 trim
setTrimValue(2, RUD_STICK, TRIM_EXTENDED_MAX+2); // link to FP1 trim
@ -353,10 +344,8 @@ TEST(Trims, infiniteChainedTrims)
}
#endif
TEST(Trims, CopyTrimsToOffset)
TEST_F(TrimsTest, CopyTrimsToOffset)
{
MODEL_RESET();
modelDefault(0);
setTrimValue(0, ELE_STICK, -100); // -100 on elevator
#if defined(CPUARM)
evalFunctions(g_model.customFn, modelFunctionsContext); // it disables all safety channels
@ -371,34 +360,24 @@ TEST(Trims, CopyTrimsToOffset)
#endif
}
TEST(Trims, CopySticksToOffset)
TEST_F(TrimsTest, CopySticksToOffset)
{
MODEL_RESET();
modelDefault(0);
anaInValues[ELE_STICK] = -100;
#if defined(CPUARM)
doMixerCalculations();
#else
perMain();
#endif
evalMixes(1);
copySticksToOffset(1);
EXPECT_EQ(g_model.limitData[1].offset, -97);
}
TEST(Trims, InstantTrim)
TEST_F(TrimsTest, InstantTrim)
{
MODEL_RESET();
modelDefault(0);
anaInValues[AIL_STICK] = 50;
instantTrim();
EXPECT_EQ(25, getTrimValue(0, AIL_STICK));
}
#if defined(VIRTUAL_INPUTS)
TEST(Trims, InstantTrimNegativeCurve)
TEST_F(TrimsTest, InstantTrimNegativeCurve)
{
MODEL_RESET();
modelDefault(0);
ExpoData *expo = expoAddress(AIL_STICK);
expo->curve.type = CURVE_REF_CUSTOM;
expo->curve.value = 1;
@ -415,7 +394,10 @@ TEST(Trims, InstantTrimNegativeCurve)
TEST(Curves, LinearIntpol)
{
SYSTEM_RESET();
MODEL_RESET();
MIXER_RESET();
modelDefault(0);
for (int8_t i=-2; i<=2; i++) {
g_model.points[2+i] = 50*i;
}
@ -429,18 +411,30 @@ TEST(Curves, LinearIntpol)
#if !defined(CPUARM)
TEST(FlightModes, nullFadeOut_posFadeIn)
{
MODEL_RESET();
g_model.flightModeData[1].swtch = SWSRC_ID1;
g_model.flightModeData[1].fadeIn = 15;
perMain();
simuSetSwitch(3, 0);
perMain();
}
TEST(Mixer, R2029Comment)
{
SYSTEM_RESET();
MODEL_RESET();
MIXER_RESET();
modelDefault(0);
lastFlightMode = 255;
simuSetSwitch(3, 1);
g_model.flightModeData[1].swtch = SWSRC_ID1;
g_model.flightModeData[1].fadeIn = 15;
evalMixes(1);
simuSetSwitch(3, 0);
evalMixes(1);
// run mixes enough time to fade out flight modes (otherwise the mixer internal state flightModesFade could affect other tests)
simuSetSwitch(3, 1);
for(int n=0; n<200; n++) {
evalMixes(1);
}
}
TEST_F(MixerTest, R2029Comment)
{
SYSTEM_RESET();
MODEL_RESET();
MIXER_RESET();
modelDefault(0);
g_model.mixData[0].destCh = 0;
g_model.mixData[0].srcRaw = MIXSRC_CH2;
g_model.mixData[0].swtch = -SWSRC_THR;
@ -464,10 +458,12 @@ TEST(Mixer, R2029Comment)
EXPECT_EQ(chans[1], CHANNEL_MAX);
}
TEST(Mixer, Cascaded3Channels)
TEST_F(MixerTest, Cascaded3Channels)
{
SYSTEM_RESET();
MODEL_RESET();
MIXER_RESET();
modelDefault(0);
g_model.mixData[0].destCh = 0;
g_model.mixData[0].srcRaw = MIXSRC_CH2;
g_model.mixData[0].weight = 100;
@ -484,10 +480,8 @@ TEST(Mixer, Cascaded3Channels)
EXPECT_EQ(chans[2], CHANNEL_MAX);
}
TEST(Mixer, CascadedOrderedChannels)
TEST_F(MixerTest, CascadedOrderedChannels)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].srcRaw = MIXSRC_THR;
g_model.mixData[0].weight = 100;
@ -500,10 +494,8 @@ TEST(Mixer, CascadedOrderedChannels)
EXPECT_EQ(chans[1], CHANNEL_MAX);
}
TEST(Mixer, Cascaded5Channels)
TEST_F(MixerTest, Cascaded5Channels)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].srcRaw = MIXSRC_CH2;
g_model.mixData[0].weight = 100;
@ -521,14 +513,14 @@ TEST(Mixer, Cascaded5Channels)
g_model.mixData[4].weight = 100;
for (uint8_t i=0; i<10; i++) {
simuSetSwitch(0, 1);
doMixerCalculations();
evalMixes(1);
EXPECT_EQ(chans[0], CHANNEL_MAX);
EXPECT_EQ(chans[1], CHANNEL_MAX);
EXPECT_EQ(chans[2], CHANNEL_MAX);
EXPECT_EQ(chans[3], CHANNEL_MAX);
EXPECT_EQ(chans[4], CHANNEL_MAX);
simuSetSwitch(0, 0);
doMixerCalculations();
evalMixes(1);
EXPECT_EQ(chans[0], -CHANNEL_MAX);
EXPECT_EQ(chans[1], -CHANNEL_MAX);
EXPECT_EQ(chans[2], -CHANNEL_MAX);
@ -538,10 +530,8 @@ TEST(Mixer, Cascaded5Channels)
}
#endif
TEST(Mixer, InfiniteRecursiveChannels)
TEST_F(MixerTest, InfiniteRecursiveChannels)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].srcRaw = MIXSRC_CH2;
g_model.mixData[0].weight = 100;
@ -557,10 +547,8 @@ TEST(Mixer, InfiniteRecursiveChannels)
EXPECT_EQ(chans[0], 0);
}
TEST(Mixer, BlockingChannel)
TEST_F(MixerTest, BlockingChannel)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].srcRaw = MIXSRC_CH1;
g_model.mixData[0].weight = 100;
@ -568,10 +556,8 @@ TEST(Mixer, BlockingChannel)
EXPECT_EQ(chans[0], 0);
}
TEST(Mixer, RecursiveAddChannel)
TEST_F(MixerTest, RecursiveAddChannel)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
g_model.mixData[0].srcRaw = MIXSRC_MAX;
@ -588,10 +574,8 @@ TEST(Mixer, RecursiveAddChannel)
EXPECT_EQ(chans[1], 0);
}
TEST(Mixer, RecursiveAddChannelAfterInactivePhase)
TEST_F(MixerTest, RecursiveAddChannelAfterInactivePhase)
{
MODEL_RESET();
MIXER_RESET();
g_model.flightModeData[1].swtch = SWSRC_ID1;
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
@ -607,28 +591,18 @@ TEST(Mixer, RecursiveAddChannelAfterInactivePhase)
g_model.mixData[2].srcRaw = MIXSRC_MAX;
g_model.mixData[2].weight = 100;
simuSetSwitch(3, -1);
#if defined(CPUARM)
doMixerCalculations();
#else
perMain();
#endif
evalMixes(1);
EXPECT_EQ(chans[0], CHANNEL_MAX/2);
EXPECT_EQ(chans[1], CHANNEL_MAX);
simuSetSwitch(3, 0);
#if defined(CPUARM)
doMixerCalculations();
#else
perMain();
#endif
evalMixes(1);
EXPECT_EQ(chans[0], CHANNEL_MAX/2);
EXPECT_EQ(chans[1], CHANNEL_MAX);
}
#if !defined(CPUARM)
TEST(Mixer, SlowOnSwitch)
TEST_F(MixerTest, SlowOnSwitch)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
g_model.mixData[0].srcRaw = MIXSRC_MAX;
@ -649,10 +623,8 @@ TEST(Mixer, SlowOnSwitch)
CHECK_SLOW_MOVEMENT(0, -1, 250);
}
TEST(Mixer, SlowUpOnSwitch)
TEST_F(MixerTest, SlowUpOnSwitch)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
g_model.mixData[0].srcRaw = MIXSRC_MAX;
@ -679,10 +651,8 @@ TEST(Mixer, SlowUpOnSwitch)
}
#endif
TEST(Mixer, SlowOnPhase)
TEST_F(MixerTest, SlowOnPhase)
{
MODEL_RESET();
MIXER_RESET();
g_model.flightModeData[1].swtch = TR(SWSRC_THR, SWSRC_SA0);
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
@ -704,10 +674,8 @@ TEST(Mixer, SlowOnPhase)
}
#if !defined(CPUARM)
TEST(Mixer, SlowOnSwitchAndPhase)
TEST_F(MixerTest, SlowOnSwitchAndPhase)
{
MODEL_RESET();
MIXER_RESET();
g_model.flightModeData[1].swtch = TR(SWSRC_THR, SWSRC_SA0);
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
@ -736,10 +704,8 @@ TEST(Mixer, SlowOnSwitchAndPhase)
}
#endif
TEST(Mixer, SlowOnSwitchSource)
TEST_F(MixerTest, SlowOnSwitchSource)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
#if defined(PCBTARANIS) || defined(PCBHORUS)
@ -764,10 +730,8 @@ TEST(Mixer, SlowOnSwitchSource)
CHECK_SLOW_MOVEMENT(0, +1, 500);
}
TEST(Mixer, SlowDisabledOnStartup)
TEST_F(MixerTest, SlowDisabledOnStartup)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
g_model.mixData[0].srcRaw = MIXSRC_MAX;
@ -779,10 +743,8 @@ TEST(Mixer, SlowDisabledOnStartup)
EXPECT_EQ(chans[0], CHANNEL_MAX);
}
TEST(Mixer, DelayOnSwitch)
TEST_F(MixerTest, DelayOnSwitch)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
g_model.mixData[0].srcRaw = MIXSRC_MAX;
@ -812,10 +774,8 @@ TEST(Mixer, DelayOnSwitch)
}
#if !defined(CPUARM)
TEST(Mixer, SlowAndDelayOnReplace3POSSource)
TEST_F(MixerTest, SlowAndDelayOnReplace3POSSource)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_REP;
g_model.mixData[0].srcRaw = MIXSRC_3POS;
@ -842,10 +802,8 @@ TEST(Mixer, SlowAndDelayOnReplace3POSSource)
#endif
#if !defined(CPUARM)
TEST(Mixer, SlowOnSwitchReplace)
TEST_F(MixerTest, SlowOnSwitchReplace)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
g_model.mixData[0].srcRaw = MIXSRC_MAX;
@ -874,10 +832,8 @@ TEST(Mixer, SlowOnSwitchReplace)
#endif
#if !defined(VIRTUAL_INPUTS)
TEST(Mixer, NoTrimOnInactiveMix)
TEST_F(MixerTest, NoTrimOnInactiveMix)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
g_model.mixData[0].srcRaw = MIXSRC_Thr;
@ -897,10 +853,8 @@ TEST(Mixer, NoTrimOnInactiveMix)
}
#endif
TEST(Mixer, SlowOnMultiply)
TEST_F(MixerTest, SlowOnMultiply)
{
MODEL_RESET();
MIXER_RESET();
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
g_model.mixData[0].srcRaw = MIXSRC_MAX;
@ -929,8 +883,10 @@ TEST(Mixer, SlowOnMultiply)
#if defined(HELI) && defined(VIRTUAL_INPUTS)
TEST(Heli, BasicTest)
{
SYSTEM_RESET();
MODEL_RESET();
applyDefaultTemplate();
MIXER_RESET();
modelDefault(0);
g_model.swashR.collectiveSource = MIXSRC_Thr;
g_model.swashR.elevatorSource = MIXSRC_Ele;
g_model.swashR.aileronSource = MIXSRC_Ail;
@ -959,7 +915,10 @@ TEST(Heli, BasicTest)
TEST(Heli, Mode2Test)
{
SYSTEM_RESET();
MODEL_RESET();
MIXER_RESET();
modelDefault(0);
g_eeGeneral.templateSetup = 2;
applyDefaultTemplate();
g_model.swashR.collectiveSource = MIXSRC_Thr;
@ -986,13 +945,17 @@ TEST(Heli, Mode2Test)
EXPECT_EQ(chans[0], -CHANNEL_MAX);
EXPECT_EQ(chans[1], CHANNEL_MAX/2);
EXPECT_EQ(chans[2], CHANNEL_MAX/2);
SYSTEM_RESET();
}
#endif
#if defined(HELI) && !defined(VIRTUAL_INPUTS)
TEST(Heli, SimpleTest)
{
SYSTEM_RESET();
MODEL_RESET();
MIXER_RESET();
modelDefault(0);
applyTemplate(TMPL_HELI_SETUP);
anaInValues[ELE_STICK] = 1024;
evalFlightModeMixes(e_perout_mode_normal, 0);
@ -1004,8 +967,10 @@ TEST(Heli, SimpleTest)
TEST(Trainer, UnpluggedTest)
{
SYSTEM_RESET();
MODEL_RESET();
MIXER_RESET();
modelDefault(0);
g_model.mixData[0].destCh = 0;
g_model.mixData[0].mltpx = MLTPX_ADD;
g_model.mixData[0].srcRaw = MIXSRC_FIRST_TRAINER;

View file

@ -68,6 +68,7 @@ TEST(getSwitch, OldTypeStickyCSW)
setLogicalSwitch(0, LS_FUNC_AND, SWSRC_SA0, SWSRC_NONE);
setLogicalSwitch(1, LS_FUNC_OR, SWSRC_SW1, SWSRC_SW2);
simuSetSwitch(0, 0);
evalLogicalSwitches();
EXPECT_EQ(getSwitch(SWSRC_SW1), false);
EXPECT_EQ(getSwitch(SWSRC_SW2), false);
@ -107,6 +108,8 @@ TEST(getSwitch, recursiveSW)
g_model.logicalSw[0] = { SWSRC_RUD, -SWSRC_SW2, LS_FUNC_OR };
g_model.logicalSw[1] = { SWSRC_ELE, -SWSRC_SW1, LS_FUNC_OR };
simuSetSwitch(1, 0); // RUD 0
simuSetSwitch(2, 0); // ELE 0
evalLogicalSwitches();
EXPECT_EQ(getSwitch(SWSRC_SW1), false);
EXPECT_EQ(getSwitch(SWSRC_SW2), true);
@ -116,7 +119,7 @@ TEST(getSwitch, recursiveSW)
EXPECT_EQ(getSwitch(SWSRC_SW1), false);
EXPECT_EQ(getSwitch(SWSRC_SW2), true);
simuSetSwitch(1, 1);
simuSetSwitch(1, 1); // RUD 1
LS_RECURSIVE_EVALUATION_RESET();
evalLogicalSwitches();
EXPECT_EQ(getSwitch(SWSRC_SW1), true);
@ -139,12 +142,12 @@ TEST(getSwitch, inputWithTrim)
// g_model.logicalSw[0] = { LS_FUNC_VPOS, MIXSRC_FIRST_INPUT, 0, 0 };
setLogicalSwitch(0, LS_FUNC_VPOS, MIXSRC_FIRST_INPUT, 0, 0);
doMixerCalculations();
evalMixes(1);
evalLogicalSwitches();
EXPECT_EQ(getSwitch(SWSRC_SW1), false);
setTrimValue(0, 0, 32);
doMixerCalculations();
evalMixes(1);
evalLogicalSwitches();
EXPECT_EQ(getSwitch(SWSRC_SW1), true);
}

View file

@ -37,7 +37,7 @@ rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=9X -DHELI=YES -DTEMPLATES=YES -DTELEMETRY=FRSKY ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# OpenTX on 9X stock with Ardupilot telemetry
rm -rf *
@ -54,77 +54,77 @@ rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=MEGA2560 -DTEMPLATES=YES -DHELI=YES ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# OpenTX on Mega2560 with Mavlink telemetry
rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=MEGA2560 -DTELEMETRY=MAVLINK -DHELI=YES -DTEMPLATES=YES -DAUDIO=YES -DVOICE=YES ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# OpenTX on gruvin9x board
rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=GRUVIN9X -DHELI=YES -DTEMPLATES=YES -DAUDIO=YES -DVOICE=YES ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# OpenTX on Sky9x
rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=SKY9X -DHELI=YES ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# OpenTX on AR9X
rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=AR9X -DHELI=YES ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# OpenTX on X7D
rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=X7D -DHELI=YES -DWARNINGS_AS_ERRORS=YES ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# OpenTX on X9D
rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=X9D -DHELI=YES -DLUA=YES -DGVARS=YES -DWARNINGS_AS_ERRORS=YES ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# OpenTX on X9D+
rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=X9D -DHELI=YES -DLUA=YES -DGVARS=YES -DWARNINGS_AS_ERRORS=YES ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# OpenTX on Taranis X9E
rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=X9E -DHELI=YES -DLUA=YES -DGVARS=YES -DWARNINGS_AS_ERRORS=YES -DPPM_UNIT=PERCENT_PREC1 ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# OpenTX on Horus beta boards
rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=HORUS -DPCBREV=10 -DHELI=YES -DLUA=YES -DGVARS=YES -DWARNINGS_AS_ERRORS=YES ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# OpenTX on Horus
rm -rf *
cmake ${COMMON_OPTIONS} -DPCB=HORUS -DHELI=YES -DLUA=YES -DGVARS=YES -DWARNINGS_AS_ERRORS=YES ${SRCDIR}
make -j${CORES} firmware
make -j${CORES} simu
make -j${CORES} gtests ; ./gtests
make -j${CORES} gtests && ./gtests --gtest_shuffle --gtest_repeat=5 --gtest_break_on_failure
# Companion
rm -rf *