The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

subtest crc16 => sub {
is RedisDB::Cluster::crc16("123456789"), 0x31c3,
"correct CRC16 for 123456789";
dies_ok { RedisDB::Cluster::crc16("abc\x{300}"); }
"can't compute crc for string with wide characters";
};
subtest "key slot" => sub {
is RedisDB::Cluster::key_slot("123456789"), 0x31c3,
"correct key slot for 123456789";
is RedisDB::Cluster::key_slot("12{345}6789"),
RedisDB::Cluster::key_slot("foo{345}boo"),
"keys with the same hash tag belong to the same slot";
is RedisDB::Cluster::key_slot("foo{}bar"),
RedisDB::Cluster::crc16("foo{}bar") & 16383,
"if hash tag is empty whole key is hashed";
};
done_testing;