spec/base_spec.rb in bindata-0.9.1 vs spec/base_spec.rb in bindata-0.9.2

- 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 clear?; 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 + def _snapshot; end end describe BinData::Base, "with mandatory parameters" do before(:all) do eval <<-END @@ -218,24 +218,25 @@ obj = TenByteAdjustingOffsetBase.new(:adjust_offset => -4) lambda { obj.read(io) }.should raise_error(BinData::ValidityError) end end -describe BinData::Base, "with :readwrite => false" do +describe BinData::Base, "with :onlyif => false" do before(:all) do eval <<-END - class NoIOBase < BaseStub + class OnlyIfBase < BaseStub attr_accessor :mock def _do_read(io) mock._do_read(io); end def _do_write(io) mock._do_write(io); end def _do_num_bytes; mock._do_num_bytes; end + def _snapshot; mock._snapshot; end end END end before(:each) do - @obj = NoIOBase.new :readwrite => false + @obj = OnlyIfBase.new :onlyif => false @obj.mock = mock('mock') end it "should not read" do io = StringIO.new("12345678901234567890") @@ -251,53 +252,55 @@ it "should have zero num_bytes" do @obj.mock.should_not_receive(:_do_num_bytes) @obj.num_bytes.should be_zero end + + it "should have nil snapshot" do + @obj.mock.should_not_receive(:_snapshot) + @obj.snapshot.should be_nil + end end -describe BinData::Base, "with :onlyif" do +describe BinData::Base, "with :readwrite" do before(:all) do eval <<-END - class OnlyIfBase < BinData::Base + class NoIOBase < 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" + it "should alias to :onlyif" do + obj = NoIOBase.new(:readwrite => "a") + obj.should_not have_param(:readwrite) + obj.should have_param(:onlyif) + obj.param(:onlyif).should == "a" end end describe BinData::Base, "when subclassing" do before(:all) do eval <<-END class SubClassOfBase < BinData::Base - public :_do_read, :_do_write, :_do_num_bytes + public :_do_read, :_do_write, :_do_num_bytes, :_snapshot end END end before(:each) do @obj = SubClassOfBase.new end 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.clear? }.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) + lambda { @obj._snapshot }.should raise_error(NotImplementedError) end end describe BinData::Base, "when subclassing as a single value" do before(:all) do