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; }
+}