1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
# encoding: binary
RSpec.describe AMQ::Pack do
context "16-bit big-endian packing / unpacking" do
let(:examples_16bit) {
{
0x068D => "\x06\x8D" # 1677
}
}
it "unpacks signed integers from a string to a number" do
examples_16bit.each do |key, value|
expect(described_class.unpack_int16_big_endian(value)[0]).to eq(key)
end
end
end
context "64-bit big-endian packing / unpacking" do
let(:examples) {
{
0x0000000000000000 => "\x00\x00\x00\x00\x00\x00\x00\x00",
0x000000000000000A => "\x00\x00\x00\x00\x00\x00\x00\x0A",
0x00000000000000A0 => "\x00\x00\x00\x00\x00\x00\x00\xA0",
0x000000000000B0A0 => "\x00\x00\x00\x00\x00\x00\xB0\xA0",
0x00000000000CB0AD => "\x00\x00\x00\x00\x00\x0C\xB0\xAD",
0x8BADF00DDEFEC8ED => "\x8B\xAD\xF0\x0D\xDE\xFE\xC8\xED",
0x0D15EA5EFEE1DEAD => "\x0D\x15\xEA\x5E\xFE\xE1\xDE\xAD",
0xDEADBEEFDEADBABE => "\xDE\xAD\xBE\xEF\xDE\xAD\xBA\xBE"
}
}
it "packs integers into big-endian string" do
examples.each do |key, value|
expect(described_class.pack_uint64_big_endian(key)).to eq(value)
end
end
it "should unpack string representation into integer" do
examples.each do |key, value|
expect(described_class.unpack_uint64_big_endian(value)[0]).to eq(key)
end
end
if RUBY_VERSION < '1.9'
describe "with utf encoding" do
before do
$KCODE = 'u'
end
after do
$KCODE = 'NONE'
end
it "packs integers into big-endian string" do
examples.each do |key, value|
expect(described_class.pack_uint64_big_endian(key)).to eq(value)
end
end
it "should unpack string representation into integer" do
examples.each do |key, value|
expect(described_class.unpack_uint64_big_endian(value)[0]).to eq(key)
end
end
end
end
end
end
|