### Question:
SelectableStudyCharTableModel extends StudyCharTableModel { @Override public Object getValueAt(int rowIndex, int columnIndex) { if (columnIndex < 0 || columnIndex >= getColumnCount()) { throw new IndexOutOfBoundsException("column index (" + columnIndex + ") out of bounds"); } if (rowIndex < 0 || rowIndex >= getRowCount()) { throw new IndexOutOfBoundsException("row index (" + rowIndex + ") out of bounds"); } if (columnIndex == 0) { return getSelectedModelByRow(rowIndex).getValue(); } return super.getValueAt(rowIndex, columnIndex - 1); } SelectableStudyCharTableModel(StudyListPresentation source, PresentationModelFactory pmf); ObservableList<Study> getAvailableStudies(); ObservableList<Study> getSelectedStudiesModel(); ModifiableHolder<Boolean> getSelectedStudyBooleanModel(Study s); @Override int getColumnCount(); @Override Class<?> getColumnClass(int c); @Override Object getValueAt(int rowIndex, int columnIndex); @Override String getColumnName(int columnIndex); @Override boolean isCellEditable(int rowIndex, int columnIndex); @Override void setValueAt(Object newValue, int rowIndex, int columnIndex);  }### Answer:
@Test public void testGetValueAt() { int row = 0; for (Study s : d_model.getAvailableStudies()) { assertTrue((Boolean)d_model.getValueAt(row, 0)); assertEquals(s, d_model.getValueAt(row, 1)); int column = 2; for (Characteristic c : BasicStudyCharacteristic.values()) { assertEquals(s.getCharacteristic(c), d_model.getValueAt(row, column)); ++column; } ++row; } }