102 lines
3.3 KiB
C++
102 lines
3.3 KiB
C++
#ifdef _USE_GTEST
|
|
#ifndef test_c_common_H
|
|
#define test_c_common_H
|
|
#include "global.h"
|
|
|
|
|
|
TEST(ConversionsTest, HexToBin) {
|
|
|
|
|
|
EXPECT_EQ(hex2bin("6E"), "01101110");
|
|
EXPECT_EQ(bin2hex("01101110"), "6E");
|
|
EXPECT_EQ(bin2hex("1101110"), "6E");
|
|
}
|
|
|
|
TEST(CrcDecodeTest, BasicTests) {
|
|
EXPECT_EQ(crc(hex2bin("8D406B902015A678D4D220AA4BDA")), 0);
|
|
EXPECT_EQ(crc(hex2bin("8D406B902015A678D4D220AA4BDA")), 0);
|
|
EXPECT_EQ(crc(hex2bin("8d8960ed58bf053cf11bc5932b7d")), 0);
|
|
EXPECT_EQ(crc(hex2bin("8d45cab390c39509496ca9a32912")), 0);
|
|
EXPECT_EQ(crc(hex2bin("8d49d3d4e1089d00000000744c3b")), 0);
|
|
EXPECT_EQ(crc(hex2bin("8d74802958c904e6ef4ba0184d5c")), 0);
|
|
EXPECT_EQ(crc(hex2bin("8d4400cd9b0000b4f87000e71a10")), 0);
|
|
EXPECT_EQ(crc(hex2bin("8d4065de58a1054a7ef0218e226a")), 0);
|
|
EXPECT_EQ(crc(hex2bin("c80b2dca34aa21dd821a04cb64d4")), 10719924);
|
|
EXPECT_EQ(crc(hex2bin("a800089d8094e33a6004e4b8a522")), 4805588);
|
|
EXPECT_EQ(crc(hex2bin("a8000614a50b6d32bed000bbe0ed")), 5659991);
|
|
EXPECT_EQ(crc(hex2bin("a0000410bc900010a40000f5f477")), 11727682);
|
|
EXPECT_EQ(crc(hex2bin("8d4ca251204994b1c36e60a5343d")), 16);
|
|
EXPECT_EQ(crc(hex2bin("b0001718c65632b0a82040715b65")), 353333);
|
|
}
|
|
|
|
TEST(CrcEncodeTest, EncodeTest) {
|
|
EXPECT_EQ(crc(hex2bin("8D406B902015A678D4D220AA4BDA"), true), 11160538);
|
|
}
|
|
|
|
TEST(IcaoTest, IcaoAddress) {
|
|
std::vector<std::string> msgList = {
|
|
hex2bin("8D406B902015A678D4D220AA4BDA"),
|
|
hex2bin("A0001839CA3800315800007448D9"),
|
|
hex2bin("A000139381951536E024D4CCF6B5"),
|
|
hex2bin("A000029CFFBAA11E2004727281F1")
|
|
};
|
|
std::vector<std::string> icaoList = {
|
|
"406B90", "400940", "3C4DD2", "4243D0"
|
|
};
|
|
for (int i = 0; i < msgList.size(); i++) {
|
|
std::string& msg = msgList[i];
|
|
EXPECT_EQ(::decode_icao(msg), icaoList[i]);
|
|
// std::cout << df(msg) << std::endl;
|
|
set_icao(msg, "ABCDEF");
|
|
EXPECT_EQ(decode_icao(msg), "ABCDEF");
|
|
}
|
|
}
|
|
|
|
// 测试 set_icao 函数
|
|
TEST(SetIcaoTest, SetICAODirectlyForDF11To18) {
|
|
// 模拟一个 DF17 消息
|
|
std::string msg = "10001010101110111011100000000000000000000000000000000000";
|
|
std::string icaoHex = "ABCDEF";
|
|
|
|
// 验证 DF 值
|
|
EXPECT_EQ(decode_df(msg), Downlink_Format::Extended_Squitter_17);
|
|
|
|
// 将 ICAO 地址转换为二进制
|
|
std::string newIcaoBin = hex2bin(icaoHex);
|
|
msg.replace(8, 24, newIcaoBin);
|
|
|
|
EXPECT_EQ(set_icao(msg, icaoHex), msg);
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(AltcodeTest, AltitudeCode) {
|
|
EXPECT_EQ(altcode(hex2bin("A02014B400000000000000F9D514")), 32300);
|
|
}
|
|
|
|
TEST(IdcodeTest, IdCode) {
|
|
EXPECT_EQ(idcode(hex2bin("A800292DFFBBA9383FFCEB903D01")), "1346");
|
|
}
|
|
|
|
TEST(GraycodeToAltitudeTest, Graycode) {
|
|
EXPECT_EQ(gray2alt("00000000010"), -1000);
|
|
EXPECT_EQ(gray2alt("00000001010"), -500);
|
|
EXPECT_EQ(gray2alt("00000011011"), -100);
|
|
EXPECT_EQ(gray2alt("00000011010"), 0);
|
|
EXPECT_EQ(gray2alt("00000011110"), 100);
|
|
EXPECT_EQ(gray2alt("00000010011"), 600);
|
|
EXPECT_EQ(gray2alt("00000110010"), 1000);
|
|
EXPECT_EQ(gray2alt("00001001001"), 5800);
|
|
EXPECT_EQ(gray2alt("00011100100"), 10300);
|
|
EXPECT_EQ(gray2alt("01100011010"), 32000);
|
|
EXPECT_EQ(gray2alt("01110000100"), 46300);
|
|
EXPECT_EQ(gray2alt("01010101100"), 50200);
|
|
EXPECT_EQ(gray2alt("11011110100"), 73200);
|
|
EXPECT_EQ(gray2alt("10000000011"), 126600);
|
|
EXPECT_EQ(gray2alt("10000000001"), 126700);
|
|
}
|
|
|
|
#endif
|
|
#endif
|