test/io_test.rb in bindata-2.4.13 vs test/io_test.rb in bindata-2.4.14
- old
+ new
@@ -15,68 +15,68 @@
@rd.close
end
it "has correct offset" do
@io.readbytes(10)
- @io.offset.must_equal 10
+ _(@io.offset).must_equal 10
end
it "seeks correctly" do
@io.seekbytes(1999)
- @io.readbytes(5).must_equal "abbbb"
+ _(@io.readbytes(5)).must_equal "abbbb"
end
it "#num_bytes_remaining raises IOError" do
- lambda {
+ _ {
@io.num_bytes_remaining
}.must_raise IOError
end
end
describe BinData::IO::Read, "when reading" do
let(:stream) { StringIO.new "abcdefghij" }
let(:io) { BinData::IO::Read.new(stream) }
it "raises error when io is BinData::IO::Read" do
- lambda {
+ _ {
BinData::IO::Read.new(BinData::IO::Read.new(""))
}.must_raise ArgumentError
end
it "returns correct offset" do
stream.seek(3, IO::SEEK_CUR)
- io.offset.must_equal 0
- io.readbytes(4).must_equal "defg"
- io.offset.must_equal 4
+ _(io.offset).must_equal 0
+ _(io.readbytes(4)).must_equal "defg"
+ _(io.offset).must_equal 4
end
it "seeks correctly" do
io.seekbytes(2)
- io.readbytes(4).must_equal "cdef"
+ _(io.readbytes(4)).must_equal "cdef"
end
it "reads all bytes" do
- io.read_all_bytes.must_equal "abcdefghij"
+ _(io.read_all_bytes).must_equal "abcdefghij"
end
it "returns number of bytes remaining" do
stream_length = io.num_bytes_remaining
io.readbytes(4)
- io.num_bytes_remaining.must_equal stream_length - 4
+ _(io.num_bytes_remaining).must_equal stream_length - 4
end
it "raises error when reading at eof" do
io.seekbytes(10)
- lambda {
+ _ {
io.readbytes(3)
}.must_raise EOFError
end
it "raises error on short reads" do
- lambda {
+ _ {
io.readbytes(20)
}.must_raise IOError
end
end
@@ -84,124 +84,124 @@
let(:stream) { StringIO.new "abcdefghijklmnopqrst" }
let(:io) { BinData::IO::Read.new(stream) }
it "consumes entire buffer on short reads" do
io.with_buffer(10) do
- io.readbytes(4).must_equal "abcd"
+ _(io.readbytes(4)).must_equal "abcd"
end
- io.offset.must_equal(10)
+ _(io.offset).must_equal(10)
end
it "consumes entire buffer on read_all_bytes" do
io.with_buffer(10) do
- io.read_all_bytes.must_equal "abcdefghij"
+ _(io.read_all_bytes).must_equal "abcdefghij"
end
- io.offset.must_equal(10)
+ _(io.offset).must_equal(10)
end
it "restricts large reads" do
io.with_buffer(10) do
- lambda {
+ _ {
io.readbytes(15)
}.must_raise IOError
end
end
it "is nestable" do
io.with_buffer(10) do
- io.readbytes(2).must_equal "ab"
+ _(io.readbytes(2)).must_equal "ab"
io.with_buffer(5) do
- io.read_all_bytes.must_equal "cdefg"
+ _(io.read_all_bytes).must_equal "cdefg"
end
- io.offset.must_equal(2 + 5)
+ _(io.offset).must_equal(2 + 5)
end
- io.offset.must_equal(10)
+ _(io.offset).must_equal(10)
end
it "restricts large nested buffers" do
io.with_buffer(10) do
- io.readbytes(2).must_equal "ab"
+ _(io.readbytes(2)).must_equal "ab"
io.with_buffer(20) do
- io.read_all_bytes.must_equal "cdefghij"
- io.offset.must_equal(10)
+ _(io.read_all_bytes).must_equal "cdefghij"
+ _(io.offset).must_equal(10)
end
end
- io.offset.must_equal(10)
+ _(io.offset).must_equal(10)
end
it "restricts large seeks" do
io.with_buffer(10) do
io.seekbytes(15)
end
- io.offset.must_equal(10)
+ _(io.offset).must_equal(10)
end
it "restricts large -ve seeks" do
io.readbytes(2)
io.with_buffer(10) do
io.seekbytes(-1)
- io.offset.must_equal(2)
+ _(io.offset).must_equal(2)
end
end
it "greater than stream size consumes all bytes" do
io.with_buffer(30) do
- io.readbytes(4).must_equal "abcd"
+ _(io.readbytes(4)).must_equal "abcd"
end
- io.offset.must_equal(20)
+ _(io.offset).must_equal(20)
end
it "restricts #num_bytes_remaining" do
io.with_buffer(10) do
io.readbytes(2)
- io.num_bytes_remaining.must_equal 8
+ _(io.num_bytes_remaining).must_equal 8
end
end
it "greater than stream size doesn't restrict #num_bytes_remaining" do
io.with_buffer(30) do
io.readbytes(2)
- io.num_bytes_remaining.must_equal 18
+ _(io.num_bytes_remaining).must_equal 18
end
end
end
module IOReadWithReadahead
def test_rolls_back_short_reads
- io.readbytes(2).must_equal "ab"
+ _(io.readbytes(2)).must_equal "ab"
io.with_readahead do
- io.readbytes(4).must_equal "cdef"
+ _(io.readbytes(4)).must_equal "cdef"
end
- io.offset.must_equal 2
+ _(io.offset).must_equal 2
end
def test_rolls_back_read_all_bytes
- io.readbytes(3).must_equal "abc"
+ _(io.readbytes(3)).must_equal "abc"
io.with_readahead do
- io.read_all_bytes.must_equal "defghijklmnopqrst"
+ _(io.read_all_bytes).must_equal "defghijklmnopqrst"
end
- io.offset.must_equal 3
+ _(io.offset).must_equal 3
end
def test_inside_buffer_rolls_back_reads
io.with_buffer(10) do
io.with_readahead do
- io.readbytes(4).must_equal "abcd"
+ _(io.readbytes(4)).must_equal "abcd"
end
- io.offset.must_equal 0
+ _(io.offset).must_equal 0
end
- io.offset.must_equal 10
+ _(io.offset).must_equal 10
end
def test_outside_buffer_rolls_back_reads
io.with_readahead do
io.with_buffer(10) do
- io.readbytes(4).must_equal "abcd"
+ _(io.readbytes(4)).must_equal "abcd"
end
- io.offset.must_equal 10
+ _(io.offset).must_equal 10
end
- io.offset.must_equal 0
+ _(io.offset).must_equal 0
end
end
describe BinData::IO::Read, "#with_readahead" do
let(:stream) { StringIO.new "abcdefghijklmnopqrst" }
@@ -234,74 +234,74 @@
@wr.close
end
it "writes data" do
@io.writebytes("1234567890")
- @rd.read(10).must_equal "1234567890"
+ _(@rd.read(10)).must_equal "1234567890"
end
it "has correct offset" do
@io.writebytes("1234567890")
- @io.offset.must_equal 10
+ _(@io.offset).must_equal 10
end
it "does not seek backwards" do
@io.writebytes("1234567890")
- lambda {
+ _ {
@io.seekbytes(-5)
}.must_raise IOError
end
it "does not seek forwards" do
- lambda {
+ _ {
@io.seekbytes(5)
}.must_raise IOError
end
it "#num_bytes_remaining raises IOError" do
- lambda {
+ _ {
@io.num_bytes_remaining
}.must_raise IOError
end
end
describe BinData::IO::Write, "when writing" do
let(:stream) { StringIO.new }
let(:io) { BinData::IO::Write.new(stream) }
it "raises error when io is BinData::IO" do
- lambda {
+ _ {
BinData::IO::Write.new(BinData::IO::Write.new(""))
}.must_raise ArgumentError
end
it "writes correctly" do
io.writebytes("abcd")
- stream.value.must_equal "abcd"
+ _(stream.value).must_equal "abcd"
end
it "has #offset" do
- io.offset.must_equal 0
+ _(io.offset).must_equal 0
io.writebytes("abcd")
- io.offset.must_equal 4
+ _(io.offset).must_equal 4
io.writebytes("ABCD")
- io.offset.must_equal 8
+ _(io.offset).must_equal 8
end
it "rounds up #offset when writing bits" do
io.writebits(123, 9, :little)
- io.offset.must_equal 2
+ _(io.offset).must_equal 2
end
it "flushes" do
io.writebytes("abcd")
io.flush
- stream.value.must_equal "abcd"
+ _(stream.value).must_equal "abcd"
end
end
describe BinData::IO::Write, "#with_buffer" do
let(:stream) { StringIO.new }
@@ -310,44 +310,44 @@
it "pads entire buffer on short reads" do
io.with_buffer(10) do
io.writebytes "abcde"
end
- stream.value.must_equal "abcde\0\0\0\0\0"
+ _(stream.value).must_equal "abcde\0\0\0\0\0"
end
it "discards excess on large writes" do
io.with_buffer(5) do
io.writebytes "abcdefghij"
end
- stream.value.must_equal "abcde"
+ _(stream.value).must_equal "abcde"
end
it "is nestable" do
io.with_buffer(10) do
io.with_buffer(5) do
io.writebytes "abc"
end
io.writebytes "de"
end
- stream.value.must_equal "abc\0\0de\0\0\0"
+ _(stream.value).must_equal "abc\0\0de\0\0\0"
end
it "restricts large seeks" do
io.with_buffer(10) do
io.seekbytes(15)
end
- io.offset.must_equal(10)
+ _(io.offset).must_equal(10)
end
it "restricts large -ve seeks" do
io.writebytes("12")
io.with_buffer(10) do
io.seekbytes(-1)
- io.offset.must_equal(2)
+ _(io.offset).must_equal(2)
end
end
end
describe BinData::IO::Read, "reading bits in big endian" do
@@ -355,92 +355,92 @@
let(:b2) { 0b1100_1110 }
let(:b3) { 0b0110_1010 }
let(:io) { BinData::IO::Read.new([b1, b2, b3].pack("CCC")) }
it "reads a bitfield less than 1 byte" do
- io.readbits(3, :big).must_equal 0b111
+ _(io.readbits(3, :big)).must_equal 0b111
end
it "reads a bitfield more than 1 byte" do
- io.readbits(10, :big).must_equal 0b1111_1010_11
+ _(io.readbits(10, :big)).must_equal 0b1111_1010_11
end
it "reads a bitfield more than 2 bytes" do
- io.readbits(17, :big).must_equal 0b1111_1010_1100_1110_0
+ _(io.readbits(17, :big)).must_equal 0b1111_1010_1100_1110_0
end
it "reads two bitfields totalling less than 1 byte" do
- io.readbits(5, :big).must_equal 0b1111_1
- io.readbits(2, :big).must_equal 0b01
+ _(io.readbits(5, :big)).must_equal 0b1111_1
+ _(io.readbits(2, :big)).must_equal 0b01
end
it "reads two bitfields totalling more than 1 byte" do
- io.readbits(6, :big).must_equal 0b1111_10
- io.readbits(8, :big).must_equal 0b10_1100_11
+ _(io.readbits(6, :big)).must_equal 0b1111_10
+ _(io.readbits(8, :big)).must_equal 0b10_1100_11
end
it "reads two bitfields totalling more than 2 bytes" do
- io.readbits(7, :big).must_equal 0b1111_101
- io.readbits(12, :big).must_equal 0b0_1100_1110_011
+ _(io.readbits(7, :big)).must_equal 0b1111_101
+ _(io.readbits(12, :big)).must_equal 0b0_1100_1110_011
end
it "ignores unused bits when reading bytes" do
- io.readbits(3, :big).must_equal 0b111
- io.readbytes(1).must_equal [b2].pack("C")
- io.readbits(2, :big).must_equal 0b01
+ _(io.readbits(3, :big)).must_equal 0b111
+ _(io.readbytes(1)).must_equal [b2].pack("C")
+ _(io.readbits(2, :big)).must_equal 0b01
end
it "resets read bits to realign stream to next byte" do
- io.readbits(3, :big).must_equal 0b111
+ _(io.readbits(3, :big)).must_equal 0b111
io.reset_read_bits
- io.readbits(3, :big).must_equal 0b110
+ _(io.readbits(3, :big)).must_equal 0b110
end
end
describe BinData::IO::Read, "reading bits in little endian" do
let(:b1) { 0b1111_1010 }
let(:b2) { 0b1100_1110 }
let(:b3) { 0b0110_1010 }
let(:io) { BinData::IO::Read.new([b1, b2, b3].pack("CCC")) }
it "reads a bitfield less than 1 byte" do
- io.readbits(3, :little).must_equal 0b010
+ _(io.readbits(3, :little)).must_equal 0b010
end
it "reads a bitfield more than 1 byte" do
- io.readbits(10, :little).must_equal 0b10_1111_1010
+ _(io.readbits(10, :little)).must_equal 0b10_1111_1010
end
it "reads a bitfield more than 2 bytes" do
- io.readbits(17, :little).must_equal 0b0_1100_1110_1111_1010
+ _(io.readbits(17, :little)).must_equal 0b0_1100_1110_1111_1010
end
it "reads two bitfields totalling less than 1 byte" do
- io.readbits(5, :little).must_equal 0b1_1010
- io.readbits(2, :little).must_equal 0b11
+ _(io.readbits(5, :little)).must_equal 0b1_1010
+ _(io.readbits(2, :little)).must_equal 0b11
end
it "reads two bitfields totalling more than 1 byte" do
- io.readbits(6, :little).must_equal 0b11_1010
- io.readbits(8, :little).must_equal 0b00_1110_11
+ _(io.readbits(6, :little)).must_equal 0b11_1010
+ _(io.readbits(8, :little)).must_equal 0b00_1110_11
end
it "reads two bitfields totalling more than 2 bytes" do
- io.readbits(7, :little).must_equal 0b111_1010
- io.readbits(12, :little).must_equal 0b010_1100_1110_1
+ _(io.readbits(7, :little)).must_equal 0b111_1010
+ _(io.readbits(12, :little)).must_equal 0b010_1100_1110_1
end
it "ignores unused bits when reading bytes" do
- io.readbits(3, :little).must_equal 0b010
- io.readbytes(1).must_equal [b2].pack("C")
- io.readbits(2, :little).must_equal 0b10
+ _(io.readbits(3, :little)).must_equal 0b010
+ _(io.readbytes(1)).must_equal [b2].pack("C")
+ _(io.readbits(2, :little)).must_equal 0b10
end
it "resets read bits to realign stream to next byte" do
- io.readbits(3, :little).must_equal 0b010
+ _(io.readbits(3, :little)).must_equal 0b010
io.reset_read_bits
- io.readbits(3, :little).must_equal 0b110
+ _(io.readbits(3, :little)).must_equal 0b110
end
end
class BitWriterHelper
def initialize
@@ -466,110 +466,110 @@
describe BinData::IO::Write, "writing bits in big endian" do
let(:io) { BitWriterHelper.new }
it "writes a bitfield less than 1 byte" do
io.writebits(0b010, 3, :big)
- io.value.must_equal [0b0100_0000].pack("C")
+ _(io.value).must_equal [0b0100_0000].pack("C")
end
it "writes a bitfield more than 1 byte" do
io.writebits(0b10_1001_1101, 10, :big)
- io.value.must_equal [0b1010_0111, 0b0100_0000].pack("CC")
+ _(io.value).must_equal [0b1010_0111, 0b0100_0000].pack("CC")
end
it "writes a bitfield more than 2 bytes" do
io.writebits(0b101_1000_0010_1001_1101, 19, :big)
- io.value.must_equal [0b1011_0000, 0b0101_0011, 0b1010_0000].pack("CCC")
+ _(io.value).must_equal [0b1011_0000, 0b0101_0011, 0b1010_0000].pack("CCC")
end
it "writes two bitfields totalling less than 1 byte" do
io.writebits(0b1_1001, 5, :big)
io.writebits(0b00, 2, :big)
- io.value.must_equal [0b1100_1000].pack("C")
+ _(io.value).must_equal [0b1100_1000].pack("C")
end
it "writes two bitfields totalling more than 1 byte" do
io.writebits(0b01_0101, 6, :big)
io.writebits(0b001_1001, 7, :big)
- io.value.must_equal [0b0101_0100, 0b1100_1000].pack("CC")
+ _(io.value).must_equal [0b0101_0100, 0b1100_1000].pack("CC")
end
it "writes two bitfields totalling more than 2 bytes" do
io.writebits(0b01_0111, 6, :big)
io.writebits(0b1_0010_1001_1001, 13, :big)
- io.value.must_equal [0b0101_1110, 0b0101_0011, 0b0010_0000].pack("CCC")
+ _(io.value).must_equal [0b0101_1110, 0b0101_0011, 0b0010_0000].pack("CCC")
end
it "pads unused bits when writing bytes" do
io.writebits(0b101, 3, :big)
io.writebytes([0b1011_1111].pack("C"))
io.writebits(0b01, 2, :big)
- io.value.must_equal [0b1010_0000, 0b1011_1111, 0b0100_0000].pack("CCC")
+ _(io.value).must_equal [0b1010_0000, 0b1011_1111, 0b0100_0000].pack("CCC")
end
end
describe BinData::IO::Write, "writing bits in little endian" do
let(:io) { BitWriterHelper.new }
it "writes a bitfield less than 1 byte" do
io.writebits(0b010, 3, :little)
- io.value.must_equal [0b0000_0010].pack("C")
+ _(io.value).must_equal [0b0000_0010].pack("C")
end
it "writes a bitfield more than 1 byte" do
io.writebits(0b10_1001_1101, 10, :little)
- io.value.must_equal [0b1001_1101, 0b0000_0010].pack("CC")
+ _(io.value).must_equal [0b1001_1101, 0b0000_0010].pack("CC")
end
it "writes a bitfield more than 2 bytes" do
io.writebits(0b101_1000_0010_1001_1101, 19, :little)
- io.value.must_equal [0b1001_1101, 0b1000_0010, 0b0000_0101].pack("CCC")
+ _(io.value).must_equal [0b1001_1101, 0b1000_0010, 0b0000_0101].pack("CCC")
end
it "writes two bitfields totalling less than 1 byte" do
io.writebits(0b1_1001, 5, :little)
io.writebits(0b00, 2, :little)
- io.value.must_equal [0b0001_1001].pack("C")
+ _(io.value).must_equal [0b0001_1001].pack("C")
end
it "writes two bitfields totalling more than 1 byte" do
io.writebits(0b01_0101, 6, :little)
io.writebits(0b001_1001, 7, :little)
- io.value.must_equal [0b0101_0101, 0b0000_0110].pack("CC")
+ _(io.value).must_equal [0b0101_0101, 0b0000_0110].pack("CC")
end
it "writes two bitfields totalling more than 2 bytes" do
io.writebits(0b01_0111, 6, :little)
io.writebits(0b1_0010_1001_1001, 13, :little)
- io.value.must_equal [0b0101_0111, 0b1010_0110, 0b0000_0100].pack("CCC")
+ _(io.value).must_equal [0b0101_0111, 0b1010_0110, 0b0000_0100].pack("CCC")
end
it "pads unused bits when writing bytes" do
io.writebits(0b101, 3, :little)
io.writebytes([0b1011_1111].pack("C"))
io.writebits(0b01, 2, :little)
- io.value.must_equal [0b0000_0101, 0b1011_1111, 0b0000_0001].pack("CCC")
+ _(io.value).must_equal [0b0000_0101, 0b1011_1111, 0b0000_0001].pack("CCC")
end
end
describe BinData::IO::Read, "with changing endian" do
it "does not mix different endianess when reading" do
b1 = 0b0110_1010
b2 = 0b1110_0010
str = [b1, b2].pack("CC")
io = BinData::IO::Read.new(str)
- io.readbits(3, :big).must_equal 0b011
- io.readbits(4, :little).must_equal 0b0010
+ _(io.readbits(3, :big)).must_equal 0b011
+ _(io.readbits(4, :little)).must_equal 0b0010
end
end
describe BinData::IO::Write, "with changing endian" do
it "does not mix different endianess when writing" do
io = BitWriterHelper.new
io.writebits(0b110, 3, :big)
io.writebits(0b010, 3, :little)
- io.value.must_equal [0b1100_0000, 0b0000_0010].pack("CC")
+ _(io.value).must_equal [0b1100_0000, 0b0000_0010].pack("CC")
end
end