spec/struct_spec.rb in bindata-1.4.3 vs spec/struct_spec.rb in bindata-1.4.4

- old
+ new

@@ -2,44 +2,44 @@ require File.expand_path(File.join(File.dirname(__FILE__), "spec_common")) require 'bindata' describe BinData::Struct, "when initializing" do - it "should fail on non registered types" do + it "fails on non registered types" do params = {:fields => [[:non_registered_type, :a]]} - lambda { + expect { BinData::Struct.new(params) - }.should raise_error(BinData::UnRegisteredTypeError) + }.to raise_error(BinData::UnRegisteredTypeError) end - it "should fail on duplicate names" do + it "fails on duplicate names" do params = {:fields => [[:int8, :a], [:int8, :b], [:int8, :a]]} - lambda { + expect { BinData::Struct.new(params) - }.should raise_error(NameError) + }.to raise_error(NameError) end - it "should fail on reserved names" do + it "fails on reserved names" do # note that #invert is from Hash.instance_methods params = {:fields => [[:int8, :a], [:int8, :invert]]} - lambda { + expect { BinData::Struct.new(params) - }.should raise_error(NameError) + }.to raise_error(NameError) end - it "should fail when field name shadows an existing method" do + it "fails when field name shadows an existing method" do params = {:fields => [[:int8, :object_id]]} - lambda { + expect { BinData::Struct.new(params) - }.should raise_error(NameError) + }.to raise_error(NameError) end - it "should fail on unknown endian" do + it "fails on unknown endian" do params = {:endian => 'bad value', :fields => []} - lambda { + expect { BinData::Struct.new(params) - }.should raise_error(ArgumentError) + }.to raise_error(ArgumentError) end end describe BinData::Struct, "with anonymous fields" do subject { @@ -49,20 +49,20 @@ [:int8, '', {:value => :a}] ] } BinData::Struct.new(params) } - it "should only show non anonymous fields" do + it "only shows non anonymous fields" do subject.field_names.should == ["a"] end - it "should not include anonymous fields in snapshot" do + it "does not include anonymous fields in snapshot" do subject.a = 5 subject.snapshot.should == {"a" => 5} end - it "should write anonymous fields" do + it "writes anonymous fields" do subject.read("\001\002\003") subject.a.clear subject.to_binary_s.should == "\005\002\005" end end @@ -76,28 +76,28 @@ [:int8, :c], [:int8, :d, {:value => :b}]] } BinData::Struct.new(params) } - it "should only show fields that aren't hidden" do + it "only shows fields that aren't hidden" do subject.field_names.should == ["a", "d"] end - it "should be able to access hidden fields directly" do + it "accesses hidden fields directly" do subject.b.should == 5 subject.c = 15 subject.c.should == 15 subject.should respond_to(:b=) end - it "should not include hidden fields in snapshot" do + it "does not include hidden fields in snapshot" do subject.b = 7 subject.snapshot.should == {"a" => 0, "d" => 7} end - it "should detect hidden fields with has_key?" do + it "detects hidden fields with has_key?" do subject.should have_key("b") end end describe BinData::Struct, "with multiple fields" do @@ -105,116 +105,116 @@ subject { BinData::Struct.new({:a => 1, :b => 2}, params) } its(:field_names) { should == ["a", "b"] } its(:to_binary_s) { should == "\x01\x02" } - it "should return num_bytes" do + it "returns num_bytes" do subject.a.num_bytes.should == 1 subject.b.num_bytes.should == 1 subject.num_bytes.should == 2 end - it "should identify accepted parameters" do + it "identifies accepted parameters" do BinData::Struct.accepted_parameters.all.should include(:fields) BinData::Struct.accepted_parameters.all.should include(:hide) BinData::Struct.accepted_parameters.all.should include(:endian) end - it "should clear" do + it "clears" do subject.a = 6 subject.clear subject.should be_clear end - it "should clear individual elements" do + it "clears individual elements" do subject.a = 6 subject.b = 7 subject.a.clear subject.a.should be_clear subject.b.should_not be_clear end - it "should read elements dynamically" do + it "reads elements dynamically" do subject[:a].should == 1 end - it "should write elements dynamically" do + it "writes elements dynamically" do subject[:a] = 2 subject.a.should == 2 end - it "should implement has_key?" do + it "implements has_key?" do subject.should have_key("a") end - it "should read ordered" do + it "reads ordered" do subject.read("\x03\x04") subject.a.should == 3 subject.b.should == 4 end - it "should return a snapshot" do + it "returns a snapshot" do snap = subject.snapshot snap.a.should == 1 snap.b.should == 2 snap.should == { "a" => 1, "b" => 2 } end - it "should assign from partial hash" do + it "assigns from partial hash" do subject.assign("a" => 3) subject.a.should == 3 subject.b.should == 0 end - it "should assign from hash" do + it "assigns from hash" do subject.assign("a" => 3, "b" => 4) subject.a.should == 3 subject.b.should == 4 end - it "should assign from nil" do + it "assigns from nil" do subject.assign(nil) subject.should be_clear end - it "should assign from Struct" do + it "assigns from Struct" do src = BinData::Struct.new(params) src.a = 3 src.b = 4 subject.assign(src) subject.a.should == 3 subject.b.should == 4 end - it "should assign from snapshot" do + it "assigns from snapshot" do src = BinData::Struct.new(params) src.a = 3 src.b = 4 subject.assign(src.snapshot) subject.a.should == 3 subject.b.should == 4 end - it "should fail on unknown method call" do - lambda { subject.does_not_exist }.should raise_error(NoMethodError) + it "fails on unknown method call" do + expect { subject.does_not_exist }.to raise_error(NoMethodError) end context "#snapshot" do - it "should have ordered #keys" do + it "has ordered #keys" do subject.snapshot.keys.should == ["a", "b"] end - it "should have ordered #each" do + it "has ordered #each" do keys = [] subject.snapshot.each { |el| keys << el[0] } keys.should == ["a", "b"] end - it "should have ordered #each_pair" do + it "has ordered #each_pair" do keys = [] subject.snapshot.each_pair { |k, v| keys << k } keys.should == ["a", "b"] end end @@ -235,25 +235,25 @@ BinData::Struct.new(params) } its(:field_names) { should == ["a", "b", "c"] } - it "should return num_bytes" do + it "returns num_bytes" do subject.b.num_bytes.should == 2 subject.c.num_bytes.should == 2 subject.num_bytes.should == 5 end - it "should access nested fields" do + it "accesses nested fields" do subject.a.should == 6 subject.b.w.should == 3 subject.b.x.should == 6 subject.c.y.should == 3 subject.c.z.should == 0 end - it "should return correct offset" do + it "returns correct offset" do subject.b.offset.should == 1 subject.b.w.offset.should == 1 subject.c.offset.should == 3 subject.c.z.offset.should == 4 end @@ -277,11 +277,11 @@ {:fields => [ [:struct, :i, {:fields => [[:uint16, :j]]}]]}]]) } - it "should use correct endian" do + it "uses correct endian" do subject.a = 1 subject.b = 2.0 subject.c[0] = 3 subject.c[1] = 4 subject.d = 5 @@ -302,28 +302,28 @@ } its(:num_bytes) { should == 3 } its(:to_binary_s) { should == [0b0000_0101, 3, 1].pack("C*") } - it "should read" do + it "reads" do str = [0b0000_0110, 5, 0].pack("C*") subject.read(str) subject.a.should == 0 subject.b.should == 3 subject.c.should == 5 subject.d.should == 0 end - it "should have correct offsets" do + it "has correct offsets" do subject.a.offset.should == 0 subject.b.offset.should == 0 subject.c.offset.should == 1 subject.d.offset.should == 2 end end describe BinData::Struct, "with nested endian" do - it "should use correct endian" do + it "uses correct endian" do nested_params = { :endian => :little, :fields => [[:int16, :b], [:int16, :c]] } params = { :endian => :big, :fields => [[:int16, :a], [:struct, :s, nested_params],