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:
parent
dfc81cecad
commit
d2144001d1
6 changed files with 137 additions and 136 deletions
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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_
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 *
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue