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],