Sha256: 6bba440332dd305a4471d8ced12ea336283e54950ca2958142511d7b317ea138

Contents?: true

Size: 1.77 KB

Versions: 20

Compression:

Stored size: 1.77 KB

Contents

# encoding: binary

require File.expand_path('../../spec_helper', __FILE__)


module AMQ
  describe Hacks do
    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|
          described_class.pack_64_big_endian(key).should == value
        end
      end

      it "should unpack string representation into integer" do
        examples.each do |key, value|
          described_class.unpack_64_big_endian(value)[0].should == 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|
              described_class.pack_64_big_endian(key).should == value
            end
          end

          it "should unpack string representation into integer" do
            examples.each do |key, value|
              described_class.unpack_64_big_endian(value)[0].should == key
            end
          end
        end
      end
      
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
amq-protocol-1.2.0 spec/amq/hacks_spec.rb
amq-protocol-1.1.0 spec/amq/hacks_spec.rb
amq-protocol-1.0.1 spec/amq/hacks_spec.rb
amq-protocol-1.0.0 spec/amq/hacks_spec.rb
amq-protocol-0.9.5 spec/amq/hacks_spec.rb
amq-protocol-1.0.0.pre7 spec/amq/hacks_spec.rb
amq-protocol-0.9.4 spec/amq/hacks_spec.rb
amq-protocol-1.0.0.pre6 spec/amq/hacks_spec.rb
amq-protocol-0.9.3 spec/amq/hacks_spec.rb
amq-protocol-1.0.0.pre5 spec/amq/hacks_spec.rb
amq-protocol-0.9.2 spec/amq/hacks_spec.rb
amq-protocol-1.0.0.pre4 spec/amq/hacks_spec.rb
amq-protocol-1.0.0.pre3 spec/amq/hacks_spec.rb
amq-protocol-1.0.0.pre2 spec/amq/hacks_spec.rb
amq-protocol-0.9.1 spec/amq/hacks_spec.rb
amq-protocol-1.0.0.pre1 spec/amq/hacks_spec.rb
amq-protocol-0.9.0 spec/amq/hacks_spec.rb
amq-protocol-0.8.4 spec/amq/hacks_spec.rb
amq-protocol-0.8.3 spec/amq/hacks_spec.rb
amq-protocol-0.8.1 spec/amq/hacks_spec.rb