Revision: 3223 http://trac.macosforge.org/projects/ruby/changeset/3223 Author: ernest.prabhakar@gmail.com Date: 2010-01-08 17:32:07 -0800 (Fri, 08 Jan 2010) Log Message: ----------- Now pass all Dispatch::Source specs for ADD and OR Modified Paths: -------------- MacRuby/trunk/gcd.c MacRuby/trunk/spec/macruby/core/gcd/source_spec.rb Modified: MacRuby/trunk/gcd.c =================================================================== --- MacRuby/trunk/gcd.c 2010-01-09 00:54:17 UTC (rev 3222) +++ MacRuby/trunk/gcd.c 2010-01-09 01:32:07 UTC (rev 3223) @@ -892,7 +892,7 @@ static VALUE rb_source_get_data(VALUE self, SEL sel) { - return LONG2NUM(dispatch_source_get_mask(RSource(self)->source)); + return LONG2NUM(dispatch_source_get_data(RSource(self)->source)); } /* @@ -1252,7 +1252,7 @@ rb_objc_define_method(cSource, "handle", rb_source_get_handle, 0); rb_objc_define_method(cSource, "mask", rb_source_get_mask, 0); rb_objc_define_method(cSource, "data", rb_source_get_data, 0); - rb_objc_define_method(cSource, "merge", rb_source_merge, 1); + rb_objc_define_method(cSource, "<<", rb_source_merge, 1); cTimer = rb_define_class_under(mDispatch, "Timer", cSource); rb_objc_define_method(cTimer, "initialize", rb_timer_init, -1); Modified: MacRuby/trunk/spec/macruby/core/gcd/source_spec.rb =================================================================== --- MacRuby/trunk/spec/macruby/core/gcd/source_spec.rb 2010-01-09 00:54:17 UTC (rev 3222) +++ MacRuby/trunk/spec/macruby/core/gcd/source_spec.rb 2010-01-09 01:32:07 UTC (rev 3223) @@ -42,10 +42,57 @@ end it "returns an instance of Dispatch::Source" do - src = Dispatch::Source.new(@type, 0, 0, @q) { true.should == true } + src = Dispatch::Source.new(@type, 0, 0, @q) { } src.should be_kind_of(Dispatch::Source) end + + it "should not be suspended" do + src = Dispatch::Source.new(@type, 0, 0, @q) { } + src.suspended?.should == false + end + + it "fires event handler on merge" do + @i = 0 + src = Dispatch::Source.new(@type, 0, 0, @q) {|s| @i = 42} + src << 42 + @q.sync { } + @i.should == 42 + end + + it "passes source to event handler" do + src = Dispatch::Source.new(@type, 0, 0, @q) do |source| + source.should be_kind_of(Dispatch::Source) + end + src << 42 + @q.sync { } + end + + it "passes data to source in event handler" do + @i = 0 + src = Dispatch::Source.new(@type, 0, 0, @q) do |source| + @i = source.data + end + src << 42 + @q.sync { } + @i.should == 42 + end + + + it "coalesces data for source in event handler" do + @i = 0 + src = Dispatch::Source.new(@type, 0, 0, @q) do |source| + @i = source.data + end + src.suspend! + src << 17 + src << 25 + src.resume! + @q.sync { } + @i.should == 42 + end + end + describe :DATA_OR do before :each do @@ -53,11 +100,45 @@ end it "returns an instance of Dispatch::Source" do - src = Dispatch::Source.new(@type, 0, 0, @q) { true.should == true } + src = Dispatch::Source.new(@type, 0, 0, @q) { } src.should be_kind_of(Dispatch::Source) end + + it "should not be suspended" do + src = Dispatch::Source.new(@type, 0, 0, @q) { } + src.suspended?.should == false + end + + + it "fires event handler on merge" do + @i = 0 + src = Dispatch::Source.new(@type, 0, 0, @q) {|s| @i = 42} + src << 42 + @q.sync { } + @i.should == 42 + end + + it "passes source to event handler" do + src = Dispatch::Source.new(@type, 0, 0, @q) do |source| + source.should be_kind_of(Dispatch::Source) + end + src << 42 + @q.sync { } + end + + it "coalesces data for source in event handler" do + @i = 0 + src = Dispatch::Source.new(@type, 0, 0, @q) do |source| + @i = source.data + end + src.suspend! + src << 0b000_010 + src << 0b101_000 + src.resume! + @q.sync { } + @i.should == 42 #0b101_010 + end end - end end
participants (1)
-
source_changes@macosforge.org