diff --git a/src/test/Makefile b/src/test/Makefile index 5001c57230..1e43fc0f92 100644 --- a/src/test/Makefile +++ b/src/test/Makefile @@ -47,6 +47,7 @@ TESTS = \ battery_unittest \ flight_imu_unittest \ altitude_hold_unittest \ + maths_unittest \ gps_conversion_unittest \ telemetry_hott_unittest \ rc_controls_unittest \ @@ -154,6 +155,23 @@ flight_imu_unittest : \ $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@ +$(OBJECT_DIR)/maths_unittest.o : \ + $(TEST_DIR)/maths_unittest.cc \ + $(USER_DIR)/flight/imu.h \ + $(GTEST_HEADERS) + + @mkdir -p $(dir $@) + $(CXX) $(CXX_FLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/maths_unittest.cc -o $@ + +maths_unittest : \ + $(OBJECT_DIR)/flight/imu.o \ + $(OBJECT_DIR)/flight/altitudehold.o \ + $(OBJECT_DIR)/maths_unittest.o \ + $(OBJECT_DIR)/common/maths.o \ + $(OBJECT_DIR)/gtest_main.a + + $(CXX) $(CXX_FLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@ + $(OBJECT_DIR)/flight/altitudehold.o : \ diff --git a/src/test/unit/maths_unittest.cc b/src/test/unit/maths_unittest.cc new file mode 100644 index 0000000000..50c9b9847c --- /dev/null +++ b/src/test/unit/maths_unittest.cc @@ -0,0 +1,92 @@ +/* + * This file is part of Cleanflight. + * + * Cleanflight is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Cleanflight is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Cleanflight. If not, see . + */ + +#include +#include + +#include + +#define BARO + +extern "C" { + #include "common/axis.h" + #include "flight/flight.h" + + #include "sensors/sensors.h" + #include "drivers/sensor.h" + #include "drivers/accgyro.h" + #include "drivers/compass.h" + #include "sensors/gyro.h" + #include "sensors/compass.h" + #include "sensors/acceleration.h" + #include "sensors/barometer.h" + + #include "config/runtime_config.h" + + #include "flight/mixer.h" + #include "flight/imu.h" +} + +#include "unittest_macros.h" +#include "gtest/gtest.h" + +#define DOWNWARDS_THRUST true +#define UPWARDS_THRUST false + + +TEST(MathsUnittest, Placeholder) +{ + // TODO test things + EXPECT_EQ(true, true); +} + +// STUBS + +extern "C" { +uint32_t rcModeActivationMask; +int16_t rcCommand[4]; + +uint16_t acc_1G; +int16_t heading; +gyro_t gyro; +int16_t magADC[XYZ_AXIS_COUNT]; +int32_t BaroAlt; +int16_t debug[4]; + +uint8_t stateFlags; +uint16_t flightModeFlags; +uint8_t armingFlags; + +int32_t sonarAlt; + + +void gyroGetADC(void) {}; +bool sensors(uint32_t mask) +{ + UNUSED(mask); + return false; +}; +void updateAccelerationReadings(rollAndPitchTrims_t *rollAndPitchTrims) +{ + UNUSED(rollAndPitchTrims); +} + +uint32_t micros(void) { return 0; } +bool isBaroCalibrationComplete(void) { return true; } +void performBaroCalibrationCycle(void) {} +int32_t baroCalculateAltitude(void) { return 0; } +}