void test_add_when_full() {
   int size = COMPACTLOOKUPTABLE_SIZE / 2;
   for (int i = 0; i < size; i++) {
     tbl->store(state, Fixnum::from(i), cNil);
   }
   TS_ASSERT_EQUALS(tbl->store(state, Fixnum::from(6), cNil), cFalse);
 }
  void test_find() {
    tbl->put(state, 2, Fixnum::from(1));
    tbl->put(state, 3, Fixnum::from(2));

    TS_ASSERT_EQUALS(tbl->fetch(state, Fixnum::from(1)), Fixnum::from(2));
    TS_ASSERT_EQUALS(tbl->fetch(state, Fixnum::from(2)), cNil);
  }
  void test_values() {
    tbl->store(state, Fixnum::from(0), Fixnum::from(1));
    tbl->store(state, Fixnum::from(2), Fixnum::from(3));
    Array* ary = tbl->values(state);

    TS_ASSERT_EQUALS(ary->size(), 2);
    TS_ASSERT_EQUALS(ary->get(state, 0), Fixnum::from(1));
    TS_ASSERT_EQUALS(ary->get(state, 1), Fixnum::from(3));
  }
  void test_add() {
    TS_ASSERT_EQUALS(tbl->at(state, 0), cNil);
    TS_ASSERT_EQUALS(tbl->at(state, 1), cNil);

    tbl->store(state, Fixnum::from(1), Fixnum::from(2));

    TS_ASSERT_EQUALS(tbl->at(state, 0), Fixnum::from(1));
    TS_ASSERT_EQUALS(tbl->at(state, 1), Fixnum::from(2));
  }
Example #5
0
    void test_keys() {
        tbl->store(state, Fixnum::from(0), Fixnum::from(1));
        tbl->store(state, Fixnum::from(2), Fixnum::from(3));
        Array* ary = tbl->keys(state);

        TS_ASSERT_EQUALS(ary->size(), (unsigned)2);
        TS_ASSERT_EQUALS(ary->get(state, 0), Fixnum::from(0));
        TS_ASSERT_EQUALS(ary->get(state, 1), Fixnum::from(2));
    }
  void test_to_lookuptable() {
    LookupTable* lt;
    Object* key = Fixnum::from(1);
    Object* val = Fixnum::from(2);

    tbl->put(state, 2, key);
    tbl->put(state, 3, val);
    lt = tbl->to_lookuptable(state);

    TS_ASSERT_EQUALS(lt->fetch(state, key), val);
  }
Example #7
0
  void test_ivars() {
    Object* obj = util_new_object();

    Symbol* sym1 = state->symbol("@test1");
    Symbol* sym2 = state->symbol("@test2");
    Fixnum* one = Fixnum::from(1);
    Fixnum* two = Fixnum::from(2);
    obj->set_ivar(state, sym1, one);
    obj->set_ivar(state, sym2, two);

    CompactLookupTable* ivars = (CompactLookupTable*)obj->ivars();

    TS_ASSERT_EQUALS(ivars->fetch(state, sym1), one);
    TS_ASSERT_EQUALS(ivars->fetch(state, sym2), two);
  }
Example #8
0
void CompactLookupTable::Info::show(STATE, Object* self, int level) {
    CompactLookupTable* tbl = as<CompactLookupTable>(self);
    Array* keys = tbl->keys(state);
    size_t size = keys->size();

    if(size == 0) {
        class_info(state, self, true);
        return;
    }

    class_info(state, self);
    std::cout << ": " << size << std::endl;
    indent(++level);
    for(size_t i = 0; i < size; i++) {
        std::cout << ":" << as<Symbol>(keys->get(state, i))->c_str(state);
        if(i < size - 1) std::cout << ", ";
    }
    std::cout << std::endl;
    close_body(level);
}
 void test_has_key() {
   tbl->store(state, Fixnum::from(0), cNil);
   TS_ASSERT_EQUALS(tbl->has_key(state, Fixnum::from(0)), cTrue);
   TS_ASSERT_EQUALS(tbl->has_key(state, Fixnum::from(1)), cFalse);
 }
 void test_create() {
   TS_ASSERT(kind_of<CompactLookupTable>(tbl));
   TS_ASSERT_EQUALS(tbl->num_fields(), (native_int)COMPACTLOOKUPTABLE_SIZE);
 }