Sha256: 7c933d97e59dedc8bd5fefee63bde1092dfbe2ade118a54e30dc06c176495291

Contents?: true

Size: 1.36 KB

Versions: 52

Compression:

Stored size: 1.36 KB

Contents

# -*- encoding: ascii-8bit -*-
require File.expand_path('../../../../spec_helper', __FILE__)
require File.expand_path('../../fixtures/classes', __FILE__)
require File.expand_path('../shared/basic', __FILE__)
require File.expand_path('../shared/numeric_basic', __FILE__)

describe "Array#pack with format 'w'" do
  it_behaves_like :array_pack_basic, 'w'
  it_behaves_like :array_pack_basic_non_float, 'w'
  it_behaves_like :array_pack_arguments, 'w'
  it_behaves_like :array_pack_numeric_basic, 'w'

  it "encodes a BER-compressed integer" do
    [ [[0],     "\x00"],
      [[1],     "\x01"],
      [[9999],  "\xce\x0f"],
      [[2**65], "\x84\x80\x80\x80\x80\x80\x80\x80\x80\x00"]
    ].should be_computed_by(:pack, "w")
  end

  it "calls #to_int to convert the pack argument to an Integer" do
    obj = mock('to_int')
    obj.should_receive(:to_int).and_return(5)
    [obj].pack("w").should == "\x05"
  end

  it "ignores NULL bytes between directives" do
    [1, 2, 3].pack("w\x00w").should == "\x01\x02"
  end

  it "ignores spaces between directives" do
    [1, 2, 3].pack("w w").should == "\x01\x02"
  end

  it "raises an ArgumentError when passed a negative value" do
    lambda { [-1].pack("w") }.should raise_error(ArgumentError)
  end

  ruby_version_is "1.9" do
    it "returns an ASCII-8BIT string" do
      [1].pack('w').encoding.should == Encoding::ASCII_8BIT
    end
  end
end

Version data entries

52 entries across 52 versions & 2 rubygems

Version Path
rhodes-7.6.0 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-7.5.1 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-7.4.1 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-7.1.17 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-6.2.0 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-6.0.11 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-5.5.18 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-5.5.17 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-5.5.15 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-5.5.0.22 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-5.5.2 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-5.5.0.7 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-5.5.0.3 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-5.5.0 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
tauplatform-1.0.3 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
tauplatform-1.0.2 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
tauplatform-1.0.1 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-3.5.1.12 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-3.3.5 spec/framework_spec/app/spec/core/array/pack/w_spec.rb
rhodes-3.4.2 spec/framework_spec/app/spec/core/array/pack/w_spec.rb