Ejemplo n.º 1
0
  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));
  }
Ejemplo n.º 2
0
    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));
    }
Ejemplo n.º 3
0
  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());
  }
Ejemplo n.º 4
0
    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());
    }