Modified: MacRuby/trunk/spec/macruby/core/object_spec.rb (3937 => 3938)
--- MacRuby/trunk/spec/macruby/core/object_spec.rb 2010-04-16 23:59:45 UTC (rev 3937)
+++ MacRuby/trunk/spec/macruby/core/object_spec.rb 2010-04-17 00:55:39 UTC (rev 3938)
@@ -51,4 +51,15 @@
o2.frozen?.should == false
end
-end
\ No newline at end of file
+end
+
+describe "An Objective-C class" do
+ it "has its +initialize method called once it is accessed for the first time" do
+ 3.times { ::TestClassInitialization.result.should == 42 }
+
+ # If +[NSPredicate initialize] is not properly called, this will raise a warning in the
+ # running terminal (see https://www.macruby.org/trac/ticket/458).
+ obj = NSPredicate.predicateWithFormat("NOT (SELF in %@)", argumentArray: [[1,2,3,4]])
+ obj.kind_of?(NSPredicate).should == true
+ end
+end
Modified: MacRuby/trunk/spec/macruby/fixtures/object.m (3937 => 3938)
--- MacRuby/trunk/spec/macruby/fixtures/object.m 2010-04-16 23:59:45 UTC (rev 3937)
+++ MacRuby/trunk/spec/macruby/fixtures/object.m 2010-04-17 00:55:39 UTC (rev 3938)
@@ -22,4 +22,25 @@
@end
+@interface TestClassInitialization : NSObject
+@end
+
+@implementation TestClassInitialization
+
+static int res = 0;
+
++ (void)initialize
+{
+ if (self == [TestClassInitialization class]) {
+ res += 42;
+ }
+}
+
++ (int)result
+{
+ return res;
+}
+
+@end
+
void Init_object(void) {}