[macruby-changes] [5161] MacRuby/trunk/spec/macruby
source_changes at macosforge.org
source_changes at macosforge.org
Wed Jan 12 19:01:30 PST 2011
Revision: 5161
http://trac.macosforge.org/projects/ruby/changeset/5161
Author: lsansonetti at apple.com
Date: 2011-01-12 19:01:23 -0800 (Wed, 12 Jan 2011)
Log Message:
-----------
add specs for variadic methods
Modified Paths:
--------------
MacRuby/trunk/spec/macruby/fixtures/method.bridgesupport
MacRuby/trunk/spec/macruby/fixtures/method.m
MacRuby/trunk/spec/macruby/language/objc_method_spec.rb
Modified: MacRuby/trunk/spec/macruby/fixtures/method.bridgesupport
===================================================================
--- MacRuby/trunk/spec/macruby/fixtures/method.bridgesupport 2011-01-13 02:13:28 UTC (rev 5160)
+++ MacRuby/trunk/spec/macruby/fixtures/method.bridgesupport 2011-01-13 03:01:23 UTC (rev 5161)
@@ -37,6 +37,8 @@
<retval type='I'/>
</arg>
</method>
+ <method selector='methodAcceptingObjects:' variadic='true' sentinel='0'/>
+ <method selector='methodAcceptingObject:and:' variadic='true' sentinel='0'/>
</class>
<informal_protocol name='Foo'>
<method type="i@:i" selector="informalProtocolMethod1:"/>
Modified: MacRuby/trunk/spec/macruby/fixtures/method.m
===================================================================
--- MacRuby/trunk/spec/macruby/fixtures/method.m 2011-01-13 02:13:28 UTC (rev 5160)
+++ MacRuby/trunk/spec/macruby/fixtures/method.m 2011-01-13 03:01:23 UTC (rev 5161)
@@ -808,6 +808,45 @@
return _my_block(x, y);
}
+- (NSArray *)methodAcceptingObjects:(id)obj1, ...
+{
+ NSMutableArray *ary = [NSMutableArray new];
+ [ary addObject:obj1];
+
+ va_list ar;
+ va_start(ar, obj1);
+ while (true) {
+ id val = va_arg(ar, id);
+ if (val == nil) {
+ break;
+ }
+ [ary addObject:val];
+ }
+ va_end(ar);
+
+ return ary;
+}
+
+- (NSArray *)methodAcceptingObject:(id)obj1 and:obj2, ...
+{
+ NSMutableArray *ary = [NSMutableArray new];
+ [ary addObject:obj1];
+ [ary addObject:obj2];
+
+ va_list ar;
+ va_start(ar, obj2);
+ while (true) {
+ id val = va_arg(ar, id);
+ if (val == nil) {
+ break;
+ }
+ [ary addObject:val];
+ }
+ va_end(ar);
+
+ return ary;
+}
+
@end
CFNumberRef functionMultiplicatingByTwoViaFctPtr(CFNumberRef nb, CFNumberRef (*multiplier)(CFNumberRef))
Modified: MacRuby/trunk/spec/macruby/language/objc_method_spec.rb
===================================================================
--- MacRuby/trunk/spec/macruby/language/objc_method_spec.rb 2011-01-13 02:13:28 UTC (rev 5160)
+++ MacRuby/trunk/spec/macruby/language/objc_method_spec.rb 2011-01-13 03:01:23 UTC (rev 5161)
@@ -472,6 +472,13 @@
o.class.should == Method
o.should == NSString.method(:hash)
end
+
+ it "declared as variadic, can be messaged" do
+ @o.methodAcceptingObjects(1, nil).should == [1]
+ @o.methodAcceptingObjects(1, 2, 3, nil).should == [1, 2, 3]
+ @o.methodAcceptingObject(1, and:2, nil).should == [1, 2]
+ @o.methodAcceptingObject(1, and:2, 3, nil).should == [1, 2, 3]
+ end
end
describe "A pure MacRuby method" do
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20110112/9fa17767/attachment-0001.html>
More information about the macruby-changes
mailing list