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
|
describe :array_pack_numeric_basic, :shared => true do
it "returns an empty String if count is zero" do
[1].pack(pack_format(0)).should == ""
end
it "raises a TypeError when passed nil" do
lambda { [nil].pack(pack_format) }.should raise_error(TypeError)
end
it "raises a TypeError when passed true" do
lambda { [true].pack(pack_format) }.should raise_error(TypeError)
end
it "raises a TypeError when passed false" do
lambda { [false].pack(pack_format) }.should raise_error(TypeError)
end
ruby_version_is '1.9' do
it "returns an ASCII-8BIT string" do
[0xFF].pack(pack_format).encoding.should == Encoding::ASCII_8BIT
[0xE3, 0x81, 0x82].pack(pack_format(3)).encoding.should == Encoding::ASCII_8BIT
end
end
end
describe :array_pack_integer, :shared => true do
it "raises a TypeError when the object does not respond to #to_int" do
obj = mock('not an integer')
lambda { [obj].pack(pack_format) }.should raise_error(TypeError)
end
it "raises a TypeError when passed a String" do
lambda { ["5"].pack(pack_format) }.should raise_error(TypeError)
end
end
describe :array_pack_float, :shared => true do
ruby_version_is ""..."1.9" do
it "raises a ArgumentError if a String does not represent a floating point number" do
lambda { ["a"].pack(pack_format) }.should raise_error(ArgumentError)
end
end
ruby_version_is "1.9" do
it "raises a TypeError if a String does not represent a floating point number" do
lambda { ["a"].pack(pack_format) }.should raise_error(TypeError)
end
end
it "raises a TypeError when the object does not respond to #to_f" do
obj = mock('not an float')
lambda { [obj].pack(pack_format) }.should raise_error(TypeError)
end
end
|