package org.molgenis.omx.dataset;
import java.util.List;
import junit.framework.Assert;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.molgenis.framework.db.Database;
import org.molgenis.framework.db.DatabaseException;
import org.molgenis.framework.tupletable.TableException;
import org.molgenis.framework.tupletable.TupleTable;
import org.molgenis.framework.tupletable.impl.CsvTable;
import org.molgenis.model.elements.Field;
import org.molgenis.observ.DataSet;
import org.molgenis.observ.ObservableFeature;
import org.molgenis.observ.target.Individual;
import org.molgenis.omx.dataset.DataSetTable;
import org.molgenis.util.Tuple;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import app.DatabaseFactory;
public class DataSetTableTest
{
Database db;
DataSet ds;
Logger logger;
@BeforeClass
public void setUp() throws DatabaseException
{
BasicConfigurator.configure();
logger = Logger.getLogger(DataSetTableTest.class);
// assume empthy
db = DatabaseFactory.create();
// reset database, danger!
db.createTables();
try
{
db.beginTx();
// add some dataset
ds = new DataSet();
ds.setName("test1");
ds.setIdentifier("test1");
db.add(ds);
// add some features
ObservableFeature f = new ObservableFeature();
f.setName("feature1");
f.setIdentifier("feature1");
db.add(f);
f = new ObservableFeature();
f.setName("feature2");
f.setIdentifier("feature2");
db.add(f);
Individual i = new Individual();
i.setName("patient1");
i.setIdentifier("patient1");
db.add(i);
db.commitTx();
}
catch (Exception e)
{
db.rollbackTx();
}
}
@Test
public void test1load() throws TableException
{
String csv = "target\tfeature1\tfeature2\npatient1\tvalue1\tvalue2";
TupleTable source = new CsvTable(csv);
DataSetTable table = new DataSetTable(ds, db);
table.add(source);
// columns
List<Field> columns = table.getAllColumns();
Assert.assertEquals(3, columns.size());
Assert.assertEquals("target", columns.get(0).getName());
Assert.assertEquals("feature1", columns.get(1).getName());
Assert.assertEquals("feature2", columns.get(2).getName());
// count
int count = table.getCount();
Assert.assertEquals(1, count);
// rows
List<Tuple> rows = table.getRows();
Assert.assertEquals(1, rows.size());
Assert.assertEquals("patient1", rows.get(0).getString("target"));
Assert.assertEquals("value1", rows.get(0).getString("feature1"));
Assert.assertEquals("value2", rows.get(0).getString("feature2"));
}
@Test
public void testHideColumn() throws TableException
{
String csv = "target\tfeature1\tfeature2\npatient1\tvalue1\tvalue2";
TupleTable source = new CsvTable(csv);
DataSetTable table = new DataSetTable(ds, db);
table.add(source);
// columns
table.hideColumn("feature1");
List<Field> columns = table.getColumns();
for (Field field : columns)
System.out.println(field.getName());
}
}