require_relative '../../spec_helper' require Arachni::Options.dir['lib'] + 'buffer' describe Arachni::Buffer::AutoFlush do before( :all ) do @buffer = Arachni::Buffer::AutoFlush end describe '#initialize' do context 'when passed a max_size' do context 'when the buffer reaches that size' do it 'forces the buffer to #flush itself' do b = @buffer.new( 10 ) buffers = [] b.on_flush do |buffer| buffers << buffer end 20.times { |i| b << i } buffers.size.should == 2 buffers.shift.should == (0..9).to_a buffers.shift.should == (10...20).to_a b.should be_empty end end end context 'when passed a max_pushes' do context 'when the amount of pushes reaches that size' do it 'forces the buffer to #flush itself' do b = @buffer.new( 99999, 10 ) buffers = [] b.on_flush do |buffer| buffers << buffer end 20.times { |i| b << i } buffers.size.should == 2 buffers.shift.should == (0..9).to_a buffers.shift.should == (10...20).to_a b.should be_empty b = @buffer.new( 99999, 10 ) buffers = [] b.on_flush do |buffer| buffers << buffer end 20.times { |i| b.batch_push (0..1000).to_a } buffers.size.should == 2 buffers.shift.should == (0..1000).to_a buffers.shift.should == (0..1000).to_a b.should be_empty end end end context 'when passed a type' do it 'should be used for internal storage' do b = @buffer.new( 10, 999, Set ) b << 'test' b << 'test' b.size.should == 1 b.flush.class.should == Set b = @buffer.new b << 'test' b << 'test' b.size.should == 2 b.flush.class.should == Array end end end end