From b121764003a85d2027307b3e86fd3d6d9e965ddb Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Mon, 22 Sep 2014 11:30:30 -0500 Subject: [PATCH] Add specs for Memory#subsource --- spec/lib/rex/image_source/memory_spec.rb | 47 ++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/spec/lib/rex/image_source/memory_spec.rb b/spec/lib/rex/image_source/memory_spec.rb index ddc6850d4b..b556d5269c 100644 --- a/spec/lib/rex/image_source/memory_spec.rb +++ b/spec/lib/rex/image_source/memory_spec.rb @@ -92,7 +92,54 @@ describe Rex::ImageSource::Memory do end describe "#subsource" do + let(:offset) { 2 } + let(:len) { 10 } + it "returns a new Rex::ImageSource::Memory" do + expect(subject.subsource(offset, len)).to be_kind_of(described_class) + end + + it "returns a new Rex::ImageSource::Memory with provided size" do + expect(subject.subsource(offset, len).size).to eq(len) + end + + it "returns a new Rex::ImageSource::Memory with file_offset added to the original" do + expect(subject.subsource(offset, len).file_offset).to eq(offset + subject.file_offset) + end + + it "returns a new Rex::ImageSource::Memory with rawdata from the original" do + expect(subject.subsource(offset, len).rawdata).to eq(subject.rawdata[offset, len]) + end + + context "when offset is out of range" do + let(:offset) { 20 } + let(:len) { 2 } + + it "raises an error" do + expect { subject.subsource(offset, len) }.to raise_error(NoMethodError) + end + end + + context "when len is bigger than source rawdata" do + let(:offset) { 2 } + let(:len) { 20 } + + it "returns a new Rex::ImageSource::Memory" do + expect(subject.subsource(offset, len)).to be_kind_of(described_class) + end + + it "returns a new Rex::ImageSource::Memory with provided size truncated" do + expect(subject.subsource(offset, len).size).to eq(14) + end + + it "returns a new Rex::ImageSource::Memory with file_offset added to the original" do + expect(subject.subsource(offset, len).file_offset).to eq(offset + subject.file_offset) + end + + it "returns a new Rex::ImageSource::Memory with rawdata truncated" do + expect(subject.subsource(offset, len).rawdata).to eq('CDEFGHIJKLMNOP') + end + end end describe "#close" do