Exemple #1
0
  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()));
  }
Exemple #2
0
  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;
  }