void test_access_variable_is_slot() { AccessVariable* av = AccessVariable::allocate(state); Arguments args(state->symbol("blah"), G(object)); av->name(state, state->symbol("@module_name")); Object* ret = av->access_execute(state, av, G(object), args); TS_ASSERT(try_as<Symbol>(ret)); TS_ASSERT_EQUALS(std::string("Object"), as<Symbol>(ret)->cpp_str(state)); }
void test_access_variable_is_slot() { AccessVariable* av = AccessVariable::allocate(state); CallFrame cf; Dispatch dis(state->symbol("blah"), G(object), av); Arguments args(G(object), 0, 0); av->name(state, state->symbol("@name")); Object* ret = av->access_execute(state, &cf, dis, args); 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); Symbol* val = state->symbol("Blah"); Object* ary[1] = {val}; Arguments args(state->symbol("blah"), G(object), 1, ary); av->name(state, state->symbol("@module_name")); av->write(state, cTrue); Object* ret = av->access_execute(state, av, G(object), args); TS_ASSERT_EQUALS(ret, val); TS_ASSERT_EQUALS(val, G(object)->module_name()); }
void test_write_variable_is_slot() { AccessVariable* av = AccessVariable::allocate(state); CallFrame cf; Dispatch dis(state->symbol("blah"), G(object), av); Symbol* val = state->symbol("Blah"); Object* ary[1] = {val}; Arguments args(G(object), 1, ary); av->name(state, state->symbol("@name")); av->write(state, Qtrue); Object* ret = av->access_execute(state, &cf, dis, args); TS_ASSERT_EQUALS(ret, val); TS_ASSERT_EQUALS(val, G(object)->name()); }