void test_access_variable_is_slot() { AccessVariable* av = AccessVariable::allocate(state); Task* task = Task::create(state, 10); Message msg(state); msg.recv = G(object); msg.method = av; msg.use_from_task(task, 0); av->name(state, state->symbol("@name")); TS_ASSERT(!av->execute(state, task, msg)); Object* ret = task->pop(); TS_ASSERT(try_as<Symbol>(ret)); TS_ASSERT_EQUALS(std::string("Object"), as<Symbol>(ret)->c_str(state)); }
void test_write_variable_is_slot() { AccessVariable* av = AccessVariable::allocate(state); Task* task = Task::create(state, 10); Message msg(state); msg.recv = G(object); msg.method = av; msg.use_from_task(task, 0); av->name(state, state->symbol("@name")); av->write(state, Qtrue); Symbol* val = state->symbol("Blah"); msg.unshift_argument(state, val); TS_ASSERT(!av->execute(state, task, msg)); Object* ret = task->pop(); TS_ASSERT_EQUALS(ret, val); TS_ASSERT_EQUALS(val, G(object)->name()); }