void test_singleton_class() { TS_ASSERT(kind_of<SingletonClass>(G(object)->singleton_class(state))); TS_ASSERT_EQUALS(Qnil->singleton_class(state), G(nil_class)); TS_ASSERT_EQUALS(Qtrue->singleton_class(state), G(true_class)); TS_ASSERT_EQUALS(Qfalse->singleton_class(state), G(false_class)); Tuple *tup = Tuple::create(state, 1); TS_ASSERT(!kind_of<SingletonClass>(tup->klass())); TS_ASSERT(kind_of<SingletonClass>(tup->singleton_class(state))); TS_ASSERT(kind_of<SingletonClass>(tup->klass())); }
Tuple* Tuple::allocate(STATE, Object* self, Fixnum* fields) { native_int size = fields->to_native(); if(size < 0) { Exception::raise_argument_error(state, "negative tuple size"); } Tuple* tuple = create(state, fields->to_native()); tuple->klass(state, as<Class>(self)); return tuple; }