[macruby-changes] [3303] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Tue Jan 19 15:56:52 PST 2010
Revision: 3303
http://trac.macosforge.org/projects/ruby/changeset/3303
Author: ernest.prabhakar at gmail.com
Date: 2010-01-19 15:56:50 -0800 (Tue, 19 Jan 2010)
Log Message:
-----------
gcd_prelude appears to pass all specs
Modified Paths:
--------------
MacRuby/trunk/gcd_prelude.rb
MacRuby/trunk/spec/macruby/core/gcd/prelude_spec.rb
Modified: MacRuby/trunk/gcd_prelude.rb
===================================================================
--- MacRuby/trunk/gcd_prelude.rb 2010-01-19 23:56:48 UTC (rev 3302)
+++ MacRuby/trunk/gcd_prelude.rb 2010-01-19 23:56:50 UTC (rev 3303)
@@ -4,22 +4,31 @@
exit:PROC_EXIT,
fork:PROC_FORK,
exec:PROC_EXEC,
- signal:PROC_SIGNAL}
+ signal:PROC_SIGNAL
+ }
def self.proc_event(e)
- (e.is_a? Numeric) ? e.to_i : @@proc_events[e]
+ convert_event(e, @@proc_events)
end
@@vnode_events = {
delete:VNODE_DELETE,
write:VNODE_WRITE,
- append:VNODE_EXTEND,
+ extend:VNODE_EXTEND,
attrib:VNODE_ATTRIB,
link:VNODE_LINK,
rename:VNODE_RENAME,
- revoke:VNODE_REVOKE}
+ revoke:VNODE_REVOKE
+ }
def self.vnode_event(e)
- (e.is_a? Numeric) ? e.to_i : @@vnode_events[e]
+ convert_event(e, @@vnode_events)
end
+
+ def self.convert_event(e, hash)
+ return e.to_i if e.is_a? Numeric
+ value = hash[e]
+ raise ArgumentError, "No event type #{e}" if value.nil?
+ value
+ end
end
class Queue
@@ -33,25 +42,25 @@
def on_process_event(pid, *events, &block)
mask = events.collect {|e| Dispatch::Source::proc_event(e)}.reduce(:|)
- Dispatch::Source.new(Dispatch::Source::DATA_PROC, pid, mask, self, &block)
+ Dispatch::Source.new(Dispatch::Source::PROC, pid, mask, self, &block)
end
def on_signal(signal, &block)
signal = Signal.list[signal.to_s] if signal.to_i == 0
- Dispatch::Source.new(Dispatch::Source::DATA_SIGNAL, signal, 0, self, &block)
+ Dispatch::Source.new(Dispatch::Source::SIGNAL, signal, 0, self, &block)
end
def on_read(file, &block)
- Dispatch::Source.new(Dispatch::Source::DATA_READ, file, 0, self, &block)
+ Dispatch::Source.new(Dispatch::Source::READ, file, 0, self, &block)
end
def on_write(file, &block)
- Dispatch::Source.new(Dispatch::Source::DATA_WRITE, file, 0, self, &block)
+ Dispatch::Source.new(Dispatch::Source::WRITE, file, 0, self, &block)
end
def on_file_event(file, *events, &block)
mask = events.collect {|e| Dispatch::Source::vnode_event(e)}.reduce(:|)
- Dispatch::Source.new(Dispatch::Source::DATA_VNODE, file,mask, self,&block)
+ Dispatch::Source.new(Dispatch::Source::VNODE, file,mask, self,&block)
end
def on_interval(sec, &block)
Modified: MacRuby/trunk/spec/macruby/core/gcd/prelude_spec.rb
===================================================================
--- MacRuby/trunk/spec/macruby/core/gcd/prelude_spec.rb 2010-01-19 23:56:48 UTC (rev 3302)
+++ MacRuby/trunk/spec/macruby/core/gcd/prelude_spec.rb 2010-01-19 23:56:50 UTC (rev 3303)
@@ -5,7 +5,7 @@
describe "Dispatch::Queue convenience method:" do
before :each do
- @q = Dispatch::Queue.new('org.macruby.gcd_spec.sources')
+ @q = Dispatch::Queue.new('org.macruby.gcd_spec.prelude')
@src = nil
end
@@ -18,10 +18,8 @@
it "fires with data on summed inputs" do
@count = 0
@src = @q.on_add {|s| @count += s.data}
- @src.suspend!
@src << 20
@src << 22
- @src.resume!
@q.sync {}
@count.should == 42
end
@@ -30,11 +28,9 @@
describe "on_or" do
it "fires with data on ORed inputs" do
@count = 0
- @src = @q.on_or {|s| @count += s.data}
- @src.suspend!
- @src << 0xb101_000
- @src << 0xb000_010
- @src.resume!
+ @src = @q.on_or {|s| p @count += s.data}
+ @src << 0b101_000
+ @src << 0b000_010
@q.sync {}
@count.should == 42
end
@@ -44,10 +40,12 @@
it "fires with data indicating which process event(s)" do
@signal = Signal.list["USR1"]
@event = nil
- @src = @q.on_process_event($$, :exit,:fork,:exec,:reap,:signal) do
+ @src = @q.on_process_event($$, :exit, :fork, :exec, :signal) do
|s| @event = s.data
end
+ Signal.trap(@signal, "IGNORE")
Process.kill(@signal, $$)
+ Signal.trap(@signal, "DEFAULT")
@q.sync {}
@event.should == Dispatch::Source::PROC_SIGNAL
end
@@ -88,7 +86,7 @@
File.open(@filename, "w") {|f| f.print @msg}
@file = File.open(@filename, "r")
@result = ""
- @src = @q.on_read(@file, close:true) {|s| @result<<@file.read(s.data)}
+ @src = @q.on_read(@file) {|s| @result<<@file.read(s.data)}
while (@result.size < @msg.size) do; end
@q.sync { }
@result.should == @msg
@@ -100,7 +98,7 @@
@file = File.open(@filename, "w")
@pos = 0
@message = @msg
- @src = @q.on_read(@file, close:true) do |s|
+ @src = @q.on_read(@file) do |s|
pos = s.data
if not @message.nil? then
next_msg = @message[0..pos-1]
@@ -131,16 +129,16 @@
end
end
- describe "on_interval" do
- it "fires with data on how often the timer has fired" do
- @count = -1
- repeats = 2
- @interval = 0.02
- @src = @q.on_interval(@interval) {|s| @count += s.data}
- sleep repeats*@interval
- @q.sync { }
- @count.should == repeats
- end
+ end
+ describe "on_interval" do
+ it "fires with data on how often the timer has fired" do
+ @count = -1
+ repeats = 2
+ @interval = 0.02
+ @src = @q.on_interval(@interval) {|s| @count += s.data}
+ sleep repeats*@interval
+ @q.sync { }
+ @count.should == repeats
end
end
end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100119/3a7342b2/attachment-0001.html>
More information about the macruby-changes
mailing list