#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 msgList = { hex2bin("8D406B902015A678D4D220AA4BDA"), hex2bin("A0001839CA3800315800007448D9"), hex2bin("A000139381951536E024D4CCF6B5"), hex2bin("A000029CFFBAA11E2004727281F1") }; std::vector 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