[macruby-changes] [3694] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Thu Mar 4 09:59:32 PST 2010
Revision: 3694
http://trac.macosforge.org/projects/ruby/changeset/3694
Author: ernest.prabhakar at gmail.com
Date: 2010-03-04 09:59:32 -0800 (Thu, 04 Mar 2010)
Log Message:
-----------
Dispatch::Source specs
Modified Paths:
--------------
MacRuby/trunk/lib/dispatch/source.rb
MacRuby/trunk/spec/macruby/library/dispatch/source_spec.rb
MacRuby/trunk/spec/macruby/tags/macruby/library/dispatch/source_tags.txt
Modified: MacRuby/trunk/lib/dispatch/source.rb
===================================================================
--- MacRuby/trunk/lib/dispatch/source.rb 2010-03-04 17:58:46 UTC (rev 3693)
+++ MacRuby/trunk/lib/dispatch/source.rb 2010-03-04 17:59:32 UTC (rev 3694)
@@ -27,11 +27,11 @@
end
def events2mask(events)
- mask = events.collect { |e| convert(e) }.reduce(:|)
+ mask = events.collect { |e| event2num(e) }.reduce(:|)
end
def data2events(bitmask)
- @@events.select {|k,v| v & bitmask }
+ @@events.collect { |k,v| k if (v & bitmask) > 0 }.compact
end
# Returns Dispatch::Source of type DATA_ADD
Modified: MacRuby/trunk/spec/macruby/library/dispatch/source_spec.rb
===================================================================
--- MacRuby/trunk/spec/macruby/library/dispatch/source_spec.rb 2010-03-04 17:58:46 UTC (rev 3693)
+++ MacRuby/trunk/spec/macruby/library/dispatch/source_spec.rb 2010-03-04 17:59:32 UTC (rev 3694)
@@ -14,6 +14,33 @@
@q.sync { }
end
+
+ describe :event2num do
+ it "converts PROC symbol to int" do
+ Dispatch::Source.event2num(:signal).should == Dispatch::Source::PROC_SIGNAL
+ end
+
+ it "converts VNODE symbol to int" do
+ Dispatch::Source.event2num(:rename).should == Dispatch::Source::VNODE_RENAME
+ end
+ end
+
+ describe :data2events do
+ it "converts PROC bitfields to symbols" do
+ mask = Dispatch::Source::PROC_EXIT | Dispatch::Source::PROC_SIGNAL
+ events = Dispatch::Source.data2events(mask)
+ events.include?(:signal).should == true
+ events.include?(:fork).should == false
+ end
+
+ it "converts VNODE bitfields to symbols" do
+ mask = Dispatch::Source::VNODE_DELETE | Dispatch::Source::VNODE_WRITE
+ events = Dispatch::Source.data2events(mask)
+ events.include?(:delete).should == true
+ events.include?(:rename).should == false
+ end
+ end
+
describe "add" do
it "fires with data on summed inputs" do
@count = 0
@@ -36,52 +63,55 @@
end
end
- describe "process" do
- it "fires with data indicating which process event(s)" do
+ describe "PROC" do
+ before :each do
@signal = Signal.list["USR1"]
- @events = []
- @src = Dispatch::Source.process($$, %w(exit fork exec signal), @q) do
- |s| @events += Dispatch::Source.data2events(s.data)
+ end
+
+ describe "process" do
+
+ it "fires with data on process event(s)" do
+ @event = 0
+ @events = []
+ @src = Dispatch::Source.process($$, %w(exit fork exec signal), @q) do |s|
+ @event += s.data
+ @events += Dispatch::Source.data2events(s.data)
+ end
+ Signal.trap(@signal, "IGNORE")
+ Process.kill(@signal, $$)
+ Signal.trap(@signal, "DEFAULT")
+ @q.sync {}
+ @events.include?(:signal).should == true
end
- Signal.trap(@signal, "IGNORE")
- Process.kill(@signal, $$)
- Signal.trap(@signal, "DEFAULT")
- @q.sync {}
- @event.should.include? :signal
- end
- it "can use bitfields as well as arrays to describe events " do
- @signal = Signal.list["USR1"]
- mask = Dispatch::Source::PROC_EXIT | Dispatch::Source::PROC_SIGNAL
- @event = 0
- @src = Dispatch::Source.process($$, mask, @q) { |s| @event = s.data }
- Signal.trap(@signal, "IGNORE")
- Process.kill(@signal, $$)
- Signal.trap(@signal, "DEFAULT")
- @q.sync {}
- (@event & Dispatch::Source.event2num(:signal)).should > 0
+ it "can use bitfields as well as arrays" do
+ mask = Dispatch::Source::PROC_EXIT | Dispatch::Source::PROC_SIGNAL
+ @event = 0
+ @src = Dispatch::Source.process($$, mask, @q) { |s| @event |= s.data }
+ Signal.trap(@signal, "IGNORE")
+ Process.kill(@signal, $$)
+ Signal.trap(@signal, "DEFAULT")
+ @q.sync {}
+ @event.should == Dispatch::Source.event2num(:signal)
+ end
end
-
-
-
- end
- describe "signal" do
- it "fires with data on how often the process was signaled" do
- @signal = Signal.list["USR1"]
- @count = 0
- @src = Dispatch::Source.signal(@signal, @q) {|s| @count += s.data}
- Signal.trap(@signal, "IGNORE")
- Process.kill(@signal, $$)
- Process.kill(@signal, $$)
- Signal.trap(@signal, "DEFAULT")
- @q.sync {}
- @count.should == 2
- @src.cancel!
- end
- end
+ describe "signal" do
+ it "fires with data on signal count" do
+ @count = 0
+ @src = Dispatch::Source.signal(@signal, @q) {|s| @count += s.data}
+ Signal.trap(@signal, "IGNORE")
+ Process.kill(@signal, $$)
+ Process.kill(@signal, $$)
+ Signal.trap(@signal, "DEFAULT")
+ @q.sync {}
+ @count.should == 2
+ @src.cancel!
+ end
+ end
+ end
- describe "vnode" do
+ describe "VNODE" do
before :each do
@msg = "#{$$}-#{Time.now}"
@filename = tmp("gcd_spec_source-#{@msg}")
@@ -97,7 +127,7 @@
end
describe "read" do
- it "fires with data on how many bytes can be read" do
+ it "fires with data on readable bytes" do
File.open(@filename, "w") {|f| f.print @msg}
@file = File.open(@filename, "r")
@result = ""
@@ -109,7 +139,7 @@
end
describe "write" do
- it "fires with data on how many bytes can be written" do
+ it "fires with data on writable bytes" do
@file = File.open(@filename, "w")
@pos = 0
@message = @msg
@@ -128,20 +158,21 @@
end
describe "file" do
- it "fires with data indicating which file event(s)" do
+ it "fires with data on file events" do
+ write_flag = Dispatch::Source.event2num(:write)
@file = File.open(@filename, "w")
@fired = false
+ @mask = 0
events = %w(delete write extend attrib link rename revoke)
@src = Dispatch::Source.file(@file, events, @q) do |s|
- @flag = s.data
+ @mask |= s.data
@fired = true
end
@file.write(@msg)
@file.flush
@q.sync { }
- #while (@fired == false) do; end
@fired.should == true
- @flag.should == Dispatch::Source.event2num(:write)
+ (@mask & write_flag).should == write_flag
end
end
end
Modified: MacRuby/trunk/spec/macruby/tags/macruby/library/dispatch/source_tags.txt
===================================================================
--- MacRuby/trunk/spec/macruby/tags/macruby/library/dispatch/source_tags.txt 2010-03-04 17:58:46 UTC (rev 3693)
+++ MacRuby/trunk/spec/macruby/tags/macruby/library/dispatch/source_tags.txt 2010-03-04 17:59:32 UTC (rev 3694)
@@ -1,3 +1,3 @@
-fails:Dispatch::Source process fires with data indicating which process event(s)
-fails:Dispatch::Source signal fires with data on how often the process was signaled
-fails:Dispatch::Source vnode file fires with data indicating which file event(s)
+fails:Dispatch::Source PROC process fires with data on process event(s)
+fails:Dispatch::Source PROC signal fires with data on signal count
+fails:Dispatch::Source PROC process can use bitfields as well as arrays
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100304/0076fbcf/attachment-0001.html>
More information about the macruby-changes
mailing list