1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-07-28 20:02:00 +03:00

Fix condition to treat an id as alphanumeric string

An id is considered an alphanumeric string if it contains a
non-empty sequence of alphanumeric characters followed by
one or more null characters.

Fixed unit tests accordingly.
This commit is contained in:
Teemu Ollakka
2025-01-14 16:36:21 +02:00
parent 5ea78de6c2
commit 2d7b357e60
2 changed files with 66 additions and 9 deletions

View File

@ -33,7 +33,7 @@ BOOST_AUTO_TEST_CASE(id_test_uuid)
wsrep::id id(uuid_str);
std::ostringstream os;
os << id;
BOOST_REQUIRE(uuid_str == os.str());
BOOST_REQUIRE_EQUAL(uuid_str, os.str());
}
BOOST_AUTO_TEST_CASE(id_test_string)
@ -42,16 +42,19 @@ BOOST_AUTO_TEST_CASE(id_test_string)
wsrep::id id(id_str);
std::ostringstream os;
os << id;
BOOST_REQUIRE(id_str == os.str());
BOOST_REQUIRE_EQUAL(id_str, os.str());
}
BOOST_AUTO_TEST_CASE(id_test_string_max)
{
std::string id_str("1234567890123456");
std::string id_str("1234"
"5678"
"9012"
"3456");
wsrep::id id(id_str);
std::ostringstream os;
os << id;
BOOST_REQUIRE(id_str == os.str());
BOOST_REQUIRE_EQUAL(os.str(), "31323334-3536-3738-3930-313233343536");
}
BOOST_AUTO_TEST_CASE(id_test_string_too_long)
@ -67,7 +70,7 @@ BOOST_AUTO_TEST_CASE(id_test_binary)
wsrep::id id(data, sizeof(data));
std::ostringstream os;
os << id;
BOOST_REQUIRE(os.str() == "01020304-0506-0708-0900-010203040506");
BOOST_REQUIRE_EQUAL(os.str(), "01020304-0506-0708-0900-010203040506");
}
BOOST_AUTO_TEST_CASE(id_test_binary_too_long)
@ -76,3 +79,37 @@ BOOST_AUTO_TEST_CASE(id_test_binary_too_long)
BOOST_REQUIRE_EXCEPTION(wsrep::id id(data, sizeof(data)),
wsrep::runtime_error, exception_check);;
}
BOOST_AUTO_TEST_CASE(id_test_binary_all_alphanumeric)
{
char data[16] = {'a', 'a', 'a', 'a',
'a', 'a', 'a', 'a',
'a', 'a', 'a', 'a',
'a', 'a', 'a', 'a'};
wsrep::id id(data, sizeof(data));
std::ostringstream os;
os << id;
/* Value of 'a' is 97 in ASCII, which is 0x61 in hex. */
BOOST_REQUIRE_EQUAL(os.str(), "61616161-6161-6161-6161-616161616161");
}
BOOST_AUTO_TEST_CASE(id_test_binary_all_except_middle_alphanumeric)
{
char data[16] = {'a', 'a', 'a', 'a',
'a', 'a', 'a', 'a',
'a', 'a', '\0', 'a',
'a', 'a', 'a', 'a'};
wsrep::id id(data, sizeof(data));
std::ostringstream os;
os << id;
BOOST_REQUIRE_EQUAL(os.str(), "61616161-6161-6161-6161-006161616161");
}
BOOST_AUTO_TEST_CASE(id_test_null)
{
char data[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
wsrep::id id(data, sizeof(data));
std::ostringstream os;
os << id;
BOOST_REQUIRE_EQUAL(os.str(), "00000000-0000-0000-0000-000000000000");
}