From 51101c00592a3a6c86497b6224974b0c4dfc4c19 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Thu, 13 Jan 2022 07:58:24 +0100 Subject: [PATCH] #9 add slow data GPS data tests --- .vscode/tasks.json | 10 ++--- Tests/SlowDataEncoder/GPSData.cpp | 75 +++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 Tests/SlowDataEncoder/GPSData.cpp diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 168ca95..ac3f100 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -12,10 +12,7 @@ "ENABLE_DEBUG=1", "USE_GPSD=1" ], - "group": { - "kind": "build", - "isDefault": true - }, + "group": "build", "problemMatcher": [] }, { @@ -28,7 +25,10 @@ "ENABLE_DEBUG=1", "USE_GPSD=1" ], - "group": "build", + "group": { + "kind": "build", + "isDefault": true + }, "problemMatcher": [] } ] diff --git a/Tests/SlowDataEncoder/GPSData.cpp b/Tests/SlowDataEncoder/GPSData.cpp new file mode 100644 index 0000000..47b3185 --- /dev/null +++ b/Tests/SlowDataEncoder/GPSData.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2021-2022 by Geoffrey Merck F4FXL / KC3FRA + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include "../../SlowDataEncoder.h" +#include "../../DStarDefines.h" + +namespace SlowDataEncoderTests +{ + class SlowDataEncoder_gpsData : public ::testing::Test { + + }; + + TEST_F(SlowDataEncoder_gpsData, gpsDataCorrectlySet) + { + CSlowDataEncoder encoder; + encoder.setGPSData("ABCDEFGHIJKLMN"); + + unsigned char buffer[6U]; + + encoder.getGPSData(buffer); + encoder.getGPSData(buffer + 3); + EXPECT_EQ(buffer[0] ^ SCRAMBLER_BYTE1, SLOW_DATA_TYPE_GPS | 0x5U); + EXPECT_EQ(buffer[1] ^ SCRAMBLER_BYTE2, 'A'); + EXPECT_EQ(buffer[2] ^ SCRAMBLER_BYTE3, 'B'); + EXPECT_EQ(buffer[3] ^ SCRAMBLER_BYTE1, 'C'); + EXPECT_EQ(buffer[4] ^ SCRAMBLER_BYTE2, 'D'); + EXPECT_EQ(buffer[5] ^ SCRAMBLER_BYTE3, 'E'); + + encoder.getGPSData(buffer); + encoder.getGPSData(buffer + 3); + EXPECT_EQ(buffer[0] ^ SCRAMBLER_BYTE1, SLOW_DATA_TYPE_GPS | 0x5U); + EXPECT_EQ(buffer[1] ^ SCRAMBLER_BYTE2, 'F'); + EXPECT_EQ(buffer[2] ^ SCRAMBLER_BYTE3, 'G'); + EXPECT_EQ(buffer[3] ^ SCRAMBLER_BYTE1, 'H'); + EXPECT_EQ(buffer[4] ^ SCRAMBLER_BYTE2, 'I'); + EXPECT_EQ(buffer[5] ^ SCRAMBLER_BYTE3, 'J'); + + encoder.getGPSData(buffer); + encoder.getGPSData(buffer + 3); + EXPECT_EQ(buffer[0] ^ SCRAMBLER_BYTE1, SLOW_DATA_TYPE_GPS | 0x4U); + EXPECT_EQ(buffer[1] ^ SCRAMBLER_BYTE2, 'K'); + EXPECT_EQ(buffer[2] ^ SCRAMBLER_BYTE3, 'L'); + EXPECT_EQ(buffer[3] ^ SCRAMBLER_BYTE1, 'M'); + EXPECT_EQ(buffer[4] ^ SCRAMBLER_BYTE2, 'N'); + EXPECT_EQ(buffer[5] ^ SCRAMBLER_BYTE3, 'f'); + + for(unsigned int i = 18; i < 60U; i+= 6U) { + encoder.getGPSData(buffer); + encoder.getGPSData(buffer + 3); + EXPECT_EQ(buffer[0] ^ SCRAMBLER_BYTE1, 'f'); + EXPECT_EQ(buffer[1] ^ SCRAMBLER_BYTE2, 'f'); + EXPECT_EQ(buffer[2] ^ SCRAMBLER_BYTE3, 'f'); + EXPECT_EQ(buffer[3] ^ SCRAMBLER_BYTE1, 'f'); + EXPECT_EQ(buffer[4] ^ SCRAMBLER_BYTE2, 'f'); + EXPECT_EQ(buffer[5] ^ SCRAMBLER_BYTE3, 'f'); + } + } +} \ No newline at end of file