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)); }
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); }
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); }
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); }