1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-21 23:35:17 +03:00

Non regression test for 0 division issue in flight phases switch

This commit is contained in:
bsongis 2011-12-12 18:53:36 +00:00
parent 8a2e035dc9
commit 423ca57f10
4 changed files with 39 additions and 11 deletions

View file

@ -257,8 +257,17 @@ TEST(getSwitch, nullSW) {
EXPECT_EQ(getSwitch(0, 0), false); EXPECT_EQ(getSwitch(0, 0), false);
} }
TEST(phases, nullFadeOut_posFadeIn) {
memset(&g_model, 0, sizeof(g_model));
g_model.phaseData[1].swtch = DSW_ID1;
g_model.phaseData[1].fadeIn = 15;
perMain();
setSwitch(DSW_ID1);
perMain();
}
int main(int argc, char **argv) { int main(int argc, char **argv) {
InitEepromThread(); StartEepromThread(NULL);
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS(); return RUN_ALL_TESTS();
} }

View file

@ -27,8 +27,8 @@
#include "gruvin9x.h" #include "gruvin9x.h"
#include "menus.h" #include "menus.h"
volatile uint8_t pinb=0, pinc=0xff, pind, pine=0xff, ping=0xff, pinj=0xff, pinl=0; volatile uint8_t pinb=0, pinc=0xff, pind, pine=0xff, ping=0xff, pinh=0xff, pinj=0xff, pinl=0;
uint8_t portb, dummyport; uint8_t portb, portc, dummyport;
uint16_t dummyport16; uint16_t dummyport16;
const char *eepromFile; const char *eepromFile;
@ -37,6 +37,22 @@ extern const char* eeprom_buffer_data;
uint8_t eeprom[EESIZE]; uint8_t eeprom[EESIZE];
sem_t eeprom_write_sem; sem_t eeprom_write_sem;
void setSwitch(int8_t swtch)
{
switch (swtch) {
case DSW_ID0:
ping |= (1<<INP_G_ID1); pine &= ~(1<<INP_E_ID2);
break;
case DSW_ID1:
ping &= ~(1<<INP_G_ID1); pine &= ~(1<<INP_E_ID2);
break;
case DSW_ID2:
ping &= ~(1<<INP_G_ID1); pine |= (1<<INP_E_ID2);
default:
break;
}
}
bool eeprom_thread_running = true; bool eeprom_thread_running = true;
void *eeprom_write_function(void *) void *eeprom_write_function(void *)
{ {
@ -121,7 +137,6 @@ void StartEepromThread(const char *filename)
assert(!pthread_create(&eeprom_thread_pid, NULL, &eeprom_write_function, NULL)); assert(!pthread_create(&eeprom_thread_pid, NULL, &eeprom_write_function, NULL));
} }
void StopEepromThread() void StopEepromThread()
{ {
eeprom_thread_running = false; eeprom_thread_running = false;

View file

@ -59,11 +59,12 @@ extern sem_t eeprom_write_sem;
#define PORTA dummyport #define PORTA dummyport
#define PORTB portb #define PORTB portb
#define PORTC dummyport #define PORTC portc
#define PORTD dummyport #define PORTD dummyport
#define PORTE dummyport #define PORTE dummyport
#define PORTF dummyport #define PORTF dummyport
#define PORTG dummyport #define PORTG dummyport
#define PORTH dummyport
#define DDRA dummyport #define DDRA dummyport
#define DDRB dummyport #define DDRB dummyport
#define DDRC dummyport #define DDRC dummyport
@ -76,6 +77,7 @@ extern sem_t eeprom_write_sem;
#define PIND ~pind #define PIND ~pind
#define PINE ~pine #define PINE ~pine
#define PING ~ping #define PING ~ping
#define PINH ~pinh
#define PINJ ~pinj #define PINJ ~pinj
#define PINL ~pinl #define PINL ~pinl
#define EEMEM #define EEMEM
@ -88,7 +90,7 @@ extern sem_t eeprom_write_sem;
#define PORTE0 dummyport #define PORTE0 dummyport
#define RXCIE0 dummyport #define RXCIE0 dummyport
#define OCR0A dummyport #define OCR0A dummyport
#define OCR4A dummyport
#define OCR1B dummyport16 #define OCR1B dummyport16
#define TCCR1A dummyport #define TCCR1A dummyport
#define COM1B0 dummyport #define COM1B0 dummyport
@ -128,11 +130,13 @@ extern sem_t eeprom_write_sem;
#define INP_P_KEY_UP 1 #define INP_P_KEY_UP 1
#define INP_P_KEY_DWN 0 #define INP_P_KEY_DWN 0
extern volatile unsigned char pinb,pinc,pind,pine,ping,pinj,pinl; extern volatile unsigned char pinb,pinc,pind,pine,ping,pinh,pinj,pinl;
extern uint8_t portb, dummyport; extern uint8_t portb, portc, dummyport;
extern uint16_t dummyport16; extern uint16_t dummyport16;
extern uint8_t main_thread_running; extern uint8_t main_thread_running;
extern void setSwitch(int8_t swtch);
void StartMainThread(bool tests=true); void StartMainThread(bool tests=true);
void StartEepromThread(const char *filename="eeprom.bin"); void StartEepromThread(const char *filename="eeprom.bin");

View file

@ -346,9 +346,9 @@ void Gruvin9xSim::refreshDiplay()
k5st = ks; k5st = ks;
} }
switch(id){ switch(id){
case 0: ping |= (1<<INP_G_ID1); pine &= ~(1<<INP_E_ID2); break; case 0: setSwitch(DSW_ID0); break;
case 1: ping &= ~(1<<INP_G_ID1); pine &= ~(1<<INP_E_ID2); break; case 1: setSwitch(DSW_ID1); break;
case 2: ping &= ~(1<<INP_G_ID1); pine |= (1<<INP_E_ID2); break; case 2: setSwitch(DSW_ID2); break;
} }
} }
} }