blob: a6212c0bf7b92f6815944f3271e03d4e9c48a720 [file] [log] [blame]
John Wang72136232019-11-14 15:33:42 +08001#include <cstring>
John Wangd8702f62019-10-31 10:06:35 +08002#include <vector>
3
4#include "libpldm/utils.h"
5
6#include <gtest/gtest.h>
7
8TEST(Crc32, CheckSumTest)
9{
10 const char* password = "123456789";
11 auto checksum = crc32(password, 9);
12 EXPECT_EQ(checksum, 0xcbf43926);
John Wang72136232019-11-14 15:33:42 +080013}
14
George Liua940d8e2019-11-26 11:07:42 +080015TEST(Crc8, CheckSumTest)
16{
17 const char* data = "123456789";
18 auto checksum = crc8(data, 9);
19 EXPECT_EQ(checksum, 0xf4);
20}
21
John Wang72136232019-11-14 15:33:42 +080022TEST(Ver2string, Ver2string)
23{
Manojkiran Edacb454672022-06-29 11:05:42 +053024 ver32_t version{0x61, 0x10, 0xf7, 0xf3};
John Wang72136232019-11-14 15:33:42 +080025 const char* vstr = "3.7.10a";
26 char buffer[1024];
27 auto rc = ver2str(&version, buffer, sizeof(buffer));
crgeddes2550cee2020-05-05 17:51:28 +000028 EXPECT_EQ(rc, (signed)std::strlen(vstr));
John Wang72136232019-11-14 15:33:42 +080029 EXPECT_STREQ(vstr, buffer);
30
Manojkiran Edacb454672022-06-29 11:05:42 +053031 version = {0x00, 0xf0, 0xf0, 0xf1};
32 vstr = "1.0.0";
33 rc = ver2str(&version, buffer, sizeof(buffer));
34 EXPECT_EQ(rc, (signed)std::strlen(vstr));
35 EXPECT_STREQ(vstr, buffer);
36
37 version = {0x00, 0xf7, 0x01, 0x10};
John Wang72136232019-11-14 15:33:42 +080038 vstr = "10.01.7";
39 rc = ver2str(&version, buffer, sizeof(buffer));
crgeddes2550cee2020-05-05 17:51:28 +000040 EXPECT_EQ(rc, (signed)std::strlen(vstr));
John Wang72136232019-11-14 15:33:42 +080041 EXPECT_STREQ(vstr, buffer);
42
Manojkiran Edacb454672022-06-29 11:05:42 +053043 version = {0x00, 0xff, 0xf1, 0xf3};
John Wang72136232019-11-14 15:33:42 +080044 vstr = "3.1";
45 rc = ver2str(&version, buffer, sizeof(buffer));
crgeddes2550cee2020-05-05 17:51:28 +000046 EXPECT_EQ(rc, (signed)std::strlen(vstr));
John Wang72136232019-11-14 15:33:42 +080047 EXPECT_STREQ(vstr, buffer);
48
Manojkiran Edacb454672022-06-29 11:05:42 +053049 version = {0x61, 0xff, 0xf0, 0xf1};
John Wang72136232019-11-14 15:33:42 +080050 vstr = "1.0a";
51 rc = ver2str(&version, buffer, sizeof(buffer));
crgeddes2550cee2020-05-05 17:51:28 +000052 EXPECT_EQ(rc, (signed)std::strlen(vstr));
John Wang72136232019-11-14 15:33:42 +080053 EXPECT_STREQ(vstr, buffer);
54
55 rc = ver2str(&version, buffer, 3);
56 EXPECT_EQ(rc, 2);
57 EXPECT_STREQ("1.", buffer);
58
59 rc = ver2str(&version, buffer, 1);
60 EXPECT_EQ(rc, 0);
61
62 rc = ver2str(&version, buffer, 0);
63 EXPECT_EQ(rc, -1);
John Wang5bdb30a2019-11-20 15:28:37 +080064}
65
66TEST(BcdConversion, BcdCoversion)
67{
crgeddes2550cee2020-05-05 17:51:28 +000068 EXPECT_EQ(12u, bcd2dec8(0x12));
69 EXPECT_EQ(99u, bcd2dec8(0x99));
70 EXPECT_EQ(1234u, bcd2dec16(0x1234));
71 EXPECT_EQ(9999u, bcd2dec16(0x9999));
72 EXPECT_EQ(12345678u, bcd2dec32(0x12345678));
73 EXPECT_EQ(99999999u, bcd2dec32(0x99999999));
John Wang5bdb30a2019-11-20 15:28:37 +080074
crgeddes2550cee2020-05-05 17:51:28 +000075 EXPECT_EQ(0x12u, dec2bcd8(12));
76 EXPECT_EQ(0x99u, dec2bcd8(99));
77 EXPECT_EQ(0x1234u, dec2bcd16(1234));
78 EXPECT_EQ(0x9999u, dec2bcd16(9999));
79 EXPECT_EQ(0x12345678u, dec2bcd32(12345678));
80 EXPECT_EQ(0x99999999u, dec2bcd32(99999999));
Xiaochao Ma39ae2a92019-11-12 20:30:34 +080081}
82
83TEST(TimeLegal, TimeLegal)
84{
85 EXPECT_EQ(true, is_time_legal(30, 25, 16, 18, 8, 2019));
86 EXPECT_EQ(true, is_time_legal(30, 25, 16, 29, 2, 2020)); // leap year
87
88 EXPECT_EQ(false, is_time_legal(30, 25, 16, 18, 8, 1960)); // year illegal
89 EXPECT_EQ(false, is_time_legal(30, 25, 16, 18, 15, 2019)); // month illegal
90 EXPECT_EQ(false, is_time_legal(30, 25, 16, 18, 0, 2019)); // month illegal
91 EXPECT_EQ(false, is_time_legal(30, 25, 16, 0, 8, 2019)); // day illegal
92 EXPECT_EQ(false, is_time_legal(30, 25, 16, 29, 2, 2019)); // day illegal
93 EXPECT_EQ(false, is_time_legal(30, 25, 25, 18, 8, 2019)); // hours illegal
94 EXPECT_EQ(false, is_time_legal(30, 70, 16, 18, 8, 2019)); // minutes illegal
95 EXPECT_EQ(false, is_time_legal(80, 25, 16, 18, 8, 2019)); // seconds illegal
crgeddes2550cee2020-05-05 17:51:28 +000096}