IndexImpl implements Index<T> { public Object put(String key, Object value, T element) { checkNonNullObject(key); AbstractIndex index = getIndex(key); return index.putValue(element, 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 testPut() { IndexImpl<Node> index = generateEmptyIndex(); Column column = index.columnStore.getColumn("age"); NodeImpl n = new NodeImpl(0); Integer v = 10; Assert.assertSame(index.put(column, v, n), v); Assert.assertEquals(index.count(column, v), 1); Assert.assertSame(index.put(column, v, n), v); Assert.assertEquals(index.count(column, v), 1); }
@Test public void testPutManagedValue() { IndexImpl<Node> index = generateEmptyIndex(); Column column = index.columnStore.getColumn("age"); NodeImpl n1 = new NodeImpl(0); NodeImpl n2 = new NodeImpl(1); Integer v = 10; index.put(column, v, n1); Assert.assertSame(index.put(column, 10, n2), v); }