spec/base_spec.rb in bindata-0.9.0 vs spec/base_spec.rb in bindata-0.9.1
- old
+ new
@@ -3,17 +3,17 @@
require File.expand_path(File.dirname(__FILE__)) + '/spec_common'
require 'bindata/base'
class BaseStub < BinData::Base
def clear; end
- def _do_read(io) end
- def done_read; end
- def _write(io) end
- def _num_bytes; end
- def snapshot; end
def single_value?; end
def field_names; end
+ def snapshot; end
+ def done_read; end
+ def _do_read(io) end
+ def _do_write(io) end
+ def _do_num_bytes; end
end
describe BinData::Base, "with mandatory parameters" do
before(:all) do
eval <<-END
@@ -140,11 +140,11 @@
before(:all) do
eval <<-END
class TenByteOffsetBase < BaseStub
def do_read(io)
# advance the io position before checking offset
- io.seek(10, IO::SEEK_CUR)
+ io.seekbytes(10)
super(io)
end
end
END
end
@@ -182,11 +182,11 @@
before(:all) do
eval <<-END
class TenByteAdjustingOffsetBase < BaseStub
def do_read(io)
# advance the io position before checking offset
- io.seek(10, IO::SEEK_CUR)
+ io.seekbytes(10)
super(io)
end
end
END
end
@@ -224,12 +224,12 @@
before(:all) do
eval <<-END
class NoIOBase < BaseStub
attr_accessor :mock
def _do_read(io) mock._do_read(io); end
- def _write(io) mock._write(io); end
- def _num_bytes; mock._num_bytes; end
+ def _do_write(io) mock._do_write(io); end
+ def _do_num_bytes; mock._do_num_bytes; end
end
END
end
before(:each) do
@@ -248,20 +248,37 @@
@obj.mock.should_not_receive(:_do_write)
@obj.write(io)
end
it "should have zero num_bytes" do
- @obj.mock.should_not_receive(:_num_bytes)
+ @obj.mock.should_not_receive(:_do_num_bytes)
@obj.num_bytes.should be_zero
end
end
+describe BinData::Base, "with :onlyif" do
+ before(:all) do
+ eval <<-END
+ class OnlyIfBase < BinData::Base
+ public :has_param?, :param
+ end
+ END
+ end
+
+ it "should alias to :readwrite" do
+ obj = OnlyIfBase.new(:onlyif => "a")
+ obj.should_not have_param(:onlyif)
+ obj.should have_param(:readwrite)
+ obj.param(:readwrite).should == "a"
+ end
+end
+
describe BinData::Base, "when subclassing" do
before(:all) do
eval <<-END
class SubClassOfBase < BinData::Base
- public :_do_read, :_write, :_num_bytes
+ public :_do_read, :_do_write, :_do_num_bytes
end
END
end
before(:each) do
@@ -271,17 +288,17 @@
it "should raise errors on unimplemented methods" do
lambda {
SubClassOfBase.all_possible_field_names(nil)
}.should raise_error(NotImplementedError)
lambda { @obj.clear }.should raise_error(NotImplementedError)
- lambda { @obj._do_read(nil) }.should raise_error(NotImplementedError)
- lambda { @obj.done_read }.should raise_error(NotImplementedError)
- lambda { @obj._write(nil) }.should raise_error(NotImplementedError)
- lambda { @obj._num_bytes }.should raise_error(NotImplementedError)
- lambda { @obj.snapshot }.should raise_error(NotImplementedError)
lambda { @obj.single_value? }.should raise_error(NotImplementedError)
lambda { @obj.field_names }.should raise_error(NotImplementedError)
+ lambda { @obj.snapshot }.should raise_error(NotImplementedError)
+ lambda { @obj.done_read }.should raise_error(NotImplementedError)
+ lambda { @obj._do_read(nil) }.should raise_error(NotImplementedError)
+ lambda { @obj._do_write(nil) }.should raise_error(NotImplementedError)
+ lambda { @obj._do_num_bytes }.should raise_error(NotImplementedError)
end
end
describe BinData::Base, "when subclassing as a single value" do
before(:all) do
@@ -321,10 +338,10 @@
describe BinData::Base do
before(:all) do
eval <<-END
class InstanceOfBase < BaseStub
def snapshot; 123; end
- def _write(io); io.write('456'); end
+ def _do_write(io); io.writebytes('456'); end
end
END
end
before(:each) do