Skip to content

Commit

Permalink
Extending the events array with #files and #modified_files.
Browse files Browse the repository at this point in the history
  • Loading branch information
ymendel committed Jun 17, 2008
1 parent e2dc633 commit 8811159
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/fsevents.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
require 'osx/foundation'
OSX.require_framework '/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework'

require 'fsevents/ext'
require 'fsevents/stream'

module FSEvents
Expand Down
1 change: 1 addition & 0 deletions lib/fsevents/ext.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require 'fsevents/ext/array'
9 changes: 9 additions & 0 deletions lib/fsevents/ext/array.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module EventArray
def files
collect { |x| x.files }.flatten
end

def modified_files
collect { |x| x.modified_files }.flatten
end
end
1 change: 1 addition & 0 deletions lib/fsevents/stream.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ def stream_callback
paths.regard_as('*')

events = []
events.extend(EventArray)
event_count.times { |i| events << Event.new(event_IDs[i], paths[i], self) }

callback.call(events)
Expand Down
42 changes: 42 additions & 0 deletions spec/event_array_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
require File.dirname(__FILE__) + '/spec_helper.rb'

describe EventArray do
before :each do
@event_array = []
@event_array.extend(EventArray)
end

it 'should return files' do
@event_array.should respond_to(:files)
end

describe 'returning files' do
it 'should collect files from its events' do
events = Array.new(3) { stub('event', :files => Array.new(3) { stub('file') }) }
files = []
events.each do |event|
@event_array << event
files += event.files
end

@event_array.files.should == files
end
end

it 'should return modified files' do
@event_array.should respond_to(:modified_files)
end

describe 'returning modified files' do
it 'should collect modified files from its events' do
events = Array.new(3) { stub('event', :modified_files => Array.new(3) { stub('file') }) }
files = []
events.each do |event|
@event_array << event
files += event.modified_files
end

@event_array.modified_files.should == files
end
end
end
6 changes: 6 additions & 0 deletions spec/stream_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,12 @@
@proc.call(*@args)
end

it 'should extend the event array' do
@args = @args_hash.values_at(*@callback_arg_order)
@callback.expects(:call).with { |events| events.is_a?(EventArray) }
@proc.call(*@args)
end

it "should update the stream's last event" do
@stream.expects(:update_last_event)
@proc.call(*@args)
Expand Down

0 comments on commit 8811159

Please sign in to comment.