IndexImpl implements Index<T> { public Iterable<T> get(String key, Object value) { checkNonNullObject(key); AbstractIndex index = getIndex(key); return index.getValueSet(value); } IndexImpl(ColumnStore<T> columnStore); @Override Class<T> getIndexClass(); @Override String getIndexName(); @Override int count(Column column, Object value); int count(String key, Object value); Iterable<T> get(String key, Object value); @Override Iterable<T> get(Column column, Object value); @Override boolean isSortable(Column column); @Override Number getMinValue(Column column); @Override Number getMaxValue(Column column); Iterable<Map.Entry<Object, Set<T>>> get(Column column); @Override Collection values(Column column); @Override int countValues(Column column); @Override int countElements(Column column); Object put(String key, Object value, T element); Object put(Column column, Object value, T element); void remove(String key, Object value, T element); void remove(Column column, Object value, T element); Object set(String key, Object oldValue, Object value, T element); Object set(Column column, Object oldValue, Object value, T element); void clear();  }
@Test public void testGet() { IndexImpl<Node> index = generateEmptyIndex(); NodeImpl[] nodes = generateNodesWithUniqueAttributes(index, true); putAll(nodes, index); for (Column col : index.columnStore) { if (col.isIndexed()) { ObjectSet<Object> set = new ObjectOpenHashSet<Object>(); for (NodeImpl n : nodes) { Object obj = n.getAttribute(col); set.add(obj); } for (Object value : set) { ObjectSet actual1 = new ObjectOpenHashSet(getIterable(index.get(col, value))); ObjectSet actual2 = new ObjectOpenHashSet(getIterable(index.get(col.getId(), value))); ObjectSet expected = new ObjectOpenHashSet(); for (NodeImpl n : nodes) { Object v = n.getAttribute(col); if ((v == null && value == null) || (v != null && v.equals(value))) { expected.add(n); } } Assert.assertEquals(actual1, expected); Assert.assertEquals(actual2, expected); } for (Map.Entry<Object, Set<Node>> entry : index.get(col)) { Object value = entry.getKey(); Set<Node> actual = entry.getValue(); ObjectSet expected = new ObjectOpenHashSet(); for (NodeImpl n : nodes) { Object v = n.getAttribute(col); if ((v == null && value == null) || (v != null && v.equals(value))) { expected.add(n); } } Assert.assertEquals(actual, expected); } } } }