20 #include <ripple/beast/unit_test.h>
21 #include <ripple/protocol/BuildInfo.h>
31 testcase(
"EncodeSoftwareVersion");
37 (encodedVersion & 0xFFFF
'0000'0000
'0000LLU) ==
38 0x183B'0000
'0000'0000LLU);
43 (encodedVersion & 0x0000
'FFFF'FF00
'0000LLU) ==
44 0x0000'0102
'0300'0000LLU);
50 (encodedVersion & 0x0000
'0000'00C0
'0000LLU) >> 22 == 0b01);
52 encodedVersion = BuildInfo::encodeSoftwareVersion("1.2.4-rc7");
54 (encodedVersion & 0x0000'0000
'00C0'0000LLU) >> 22 == 0b10);
58 (encodedVersion & 0x0000
'0000'00C0
'0000LLU) >> 22 == 0b11);
61 // the next six bits: rc/beta number (1-63)
62 encodedVersion = BuildInfo::encodeSoftwareVersion("1.2.6-b63");
63 BEAST_EXPECT((encodedVersion & 0x0000'0000
'003F'0000LLU) >> 16 == 63);
66 BEAST_EXPECT((encodedVersion & 0x0000
'0000'0000
'FFFFLLU) == 0);
68 // Test some version strings with wrong formats:
70 encodedVersion = BuildInfo::encodeSoftwareVersion("1.2.3-b");
71 BEAST_EXPECT((encodedVersion & 0x0000'0000
'00FF'0000LLU) == 0);
74 BEAST_EXPECT((encodedVersion & 0x0000
'0000'00FF
'0000LLU) == 0);
76 // Check that the rc/beta number of a release is 0:
77 encodedVersion = BuildInfo::encodeSoftwareVersion("1.2.6");
78 BEAST_EXPECT((encodedVersion & 0x0000'0000
'003F'0000LLU) == 0);
84 testcase(
"IsRippledVersion");
85 auto vFF = 0xFFFF
'FFFF'FFFF
'FFFFLLU;
86 BEAST_EXPECT(!BuildInfo::isRippledVersion(vFF));
87 auto vRippled = 0x183B'0000
'0000'0000LLU;
94 testcase(
"IsNewerVersion");
95 auto vFF = 0xFFFF
'FFFF'FFFF
'FFFFLLU;
96 BEAST_EXPECT(!BuildInfo::isNewerVersion(vFF));
98 auto v159 = BuildInfo::encodeSoftwareVersion("1.5.9");
99 BEAST_EXPECT(!BuildInfo::isNewerVersion(v159));
101 auto vCurrent = BuildInfo::getEncodedVersion();
102 BEAST_EXPECT(!BuildInfo::isNewerVersion(vCurrent));
104 auto vMax = BuildInfo::encodeSoftwareVersion("255.255.255");
105 BEAST_EXPECT(BuildInfo::isNewerVersion(vMax));
111 testEncodeSoftwareVersion();
112 testIsRippledVersion();
113 testIsNewerVersion();
117 BEAST_DEFINE_TESTSUITE(BuildInfo, protocol, ripple);
118 } // namespace ripple
void testIsRippledVersion()
std::uint64_t encodeSoftwareVersion(char const *const versionStr)
Encode an arbitrary server software version in a 64-bit integer.
bool isRippledVersion(std::uint64_t version)
Check if the encoded software version is a rippled software version.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
void testEncodeSoftwareVersion()
void testIsNewerVersion()