1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-20 14:55:21 +03:00

Update unit tests.

This commit is contained in:
Dominic Clifton 2014-09-05 22:46:33 +01:00
parent 05be7c922c
commit 5b3d86e966
8 changed files with 30 additions and 18 deletions

View file

@ -26,9 +26,9 @@
#define DIGIT_TO_VAL(_x) (_x - '0')
uint32_t GPS_coord_to_degrees(char* coordinateString)
uint32_t GPS_coord_to_degrees(const char* coordinateString)
{
char *fieldSeparator, *remainingString;
const char *fieldSeparator, *remainingString;
uint8_t degress = 0, minutes = 0;
uint16_t fractionalMinutes = 0;
uint8_t digitIndex;

View file

@ -15,4 +15,4 @@
* along with Cleanflight. If not, see <http://www.gnu.org/licenses/>.
*/
uint32_t GPS_coord_to_degrees(char* s);
uint32_t GPS_coord_to_degrees(const char* coordinateString);

View file

@ -403,7 +403,7 @@ bool gpsNewFrame(uint8_t c)
EOS increased the precision here, even if we think that the gps is not precise enough, with 10e5 precision it has 76cm resolution
with 10e7 it's around 1 cm now. Increasing it further is irrelevant, since even 1cm resolution is unrealistic, however increased
resolution also increased precision of nav calculations
static uint32_t GPS_coord_to_degrees(char *s)
static uint32_t GPS_coord_to_degrees(char *coordinateString)
{
char *p = s, *d = s;
uint8_t min, deg = 0;

View file

@ -112,16 +112,16 @@ flight_imu_unittest : $(OBJECT_DIR)/flight/imu.o $(OBJECT_DIR)/flight_imu_unitte
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
$(OBJECT_DIR)/io/gps_conversion.o : $(USER_DIR)/io/gps_conversion.c $(USER_DIR)/io/gps_conversion.h $(GTEST_HEADERS)
$(OBJECT_DIR)/flight/gps_conversion.o : $(USER_DIR)/flight/gps_conversion.c $(USER_DIR)/flight/gps_conversion.h $(GTEST_HEADERS)
@mkdir -p $(dir $@)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/io/gps_conversion.c -o $@
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(TEST_CFLAGS) -c $(USER_DIR)/flight/gps_conversion.c -o $@
$(OBJECT_DIR)/gps_conversion_unittest.o : $(TEST_DIR)/gps_conversion_unittest.cc \
$(USER_DIR)/io/gps_conversion.h $(GTEST_HEADERS)
$(USER_DIR)/flight/gps_conversion.h $(GTEST_HEADERS)
@mkdir -p $(dir $@)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/gps_conversion_unittest.cc -o $@
gps_conversion_unittest : $(OBJECT_DIR)/io/gps_conversion.o $(OBJECT_DIR)/gps_conversion_unittest.o $(OBJECT_DIR)/gtest_main.a
gps_conversion_unittest : $(OBJECT_DIR)/flight/gps_conversion.o $(OBJECT_DIR)/gps_conversion_unittest.o $(OBJECT_DIR)/gtest_main.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@
@ -135,5 +135,5 @@ $(OBJECT_DIR)/telemetry_hott_unittest.o : $(TEST_DIR)/telemetry_hott_unittest.cc
@mkdir -p $(dir $@)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(TEST_CFLAGS) -c $(TEST_DIR)/telemetry_hott_unittest.cc -o $@
telemetry_hott_unittest :$(OBJECT_DIR)/telemetry/hott.o $(OBJECT_DIR)/telemetry_hott_unittest.o $(OBJECT_DIR)/io/gps_conversion.o $(OBJECT_DIR)/gtest_main.a
telemetry_hott_unittest :$(OBJECT_DIR)/telemetry/hott.o $(OBJECT_DIR)/telemetry_hott_unittest.o $(OBJECT_DIR)/flight/gps_conversion.o $(OBJECT_DIR)/gtest_main.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $(OBJECT_DIR)/$@

View file

@ -84,12 +84,17 @@ TEST(FlightImuTest, IsThrustFacingDownwards)
uint16_t acc_1G;
int16_t heading;
flags_t f;
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)

View file

@ -18,7 +18,7 @@
#include <stdint.h>
#include <limits.h>
#include "io/gps_conversion.h"
#include "flight/gps_conversion.h"
#include "unittest_macros.h"
#include "gtest/gtest.h"
@ -39,7 +39,7 @@ typedef struct gpsConversionExpectation_s {
TEST(GpsConversionTest, GPSCoordToDegrees_NMEA_Values)
{
gpsConversionExpectation_t gpsConversionExpectations[] = {
const gpsConversionExpectation_t gpsConversionExpectations[] = {
{"0.0", 0},
{"000.0", 0},
{"00000.0000", 0},
@ -59,7 +59,7 @@ TEST(GpsConversionTest, GPSCoordToDegrees_NMEA_Values)
// expect
for (uint8_t index = 0; index < testIterationCount; index ++) {
gpsConversionExpectation_t *expectation = &gpsConversionExpectations[index];
const gpsConversionExpectation_t *expectation = &gpsConversionExpectations[index];
printf("iteration: %d\n", index);
uint32_t result = GPS_coord_to_degrees(expectation->coord);

View file

@ -18,3 +18,8 @@
#pragma once
#define BARO
#define GPS
#define TELEMETRY
#define SERIAL_PORT_COUNT 4

View file

@ -41,7 +41,7 @@
#include "telemetry/telemetry.h"
#include "telemetry/hott.h"
#include "io/gps_conversion.h"
#include "flight/gps_conversion.h"
#include "unittest_macros.h"
@ -88,8 +88,8 @@ TEST(TelemetryHottTest, UpdateGPSCoordinates2)
// Hampstead Heath, London
// 51.563886, -0.159960
int32_t longitude = GPS_coord_to_degrees("5156.3886");
int32_t latitude = -GPS_coord_to_degrees("015.9960");
uint32_t longitude = GPS_coord_to_degrees("5156.3886");
uint32_t latitude = -GPS_coord_to_degrees("015.9960");
// when
addGPSCoordinates(hottGPSMessage, longitude, latitude);
@ -131,7 +131,7 @@ TEST(TelemetryHottTest, PrepareGPSMessage_Altitude1m)
// given
HOTT_GPS_MSG_t *hottGPSMessage = getGPSMessageForTest();
f.GPS_FIX = 1;
stateFlags = GPS_FIX;
uint16_t altitudeInMeters = 1;
GPS_altitude = altitudeInMeters * (1 / 0.1f); // 1 = 0.1m
@ -147,8 +147,10 @@ TEST(TelemetryHottTest, PrepareGPSMessage_Altitude1m)
int16_t debug[4];
uint8_t stateFlags;
uint8_t GPS_numSat;
flags_t f;
int32_t GPS_coord[2];
uint16_t GPS_speed; // speed in 0.1m/s
uint16_t GPS_distanceToHome; // distance to home point in meters