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