package org.xenei.jdbc4sparql.impl.rdf;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.xenei.jdbc4sparql.iface.TableDef;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
public class TableDefBuilderTest {
private Model model;
private RdfKey getPrimaryKey() {
new RdfTableDef.Builder();
final RdfKey.Builder builder = new RdfKey.Builder()
.addSegment(new RdfKeySegment.Builder().build(model))
.setUnique(true).setKeyName("PK");
return builder.build(model);
}
private RdfKey getSortKey() {
new RdfTableDef.Builder();
final RdfKey.Builder builder = new RdfKey.Builder()
.addSegment(new RdfKeySegment.Builder().setIdx(1).build(model))
.setUnique(false).setKeyName("SK");
return builder.build(model);
}
@Before
public void setUp() throws Exception {
model = ModelFactory.createDefaultModel();
}
@After
public void tearDown() throws Exception {
model.close();
}
@Test
public void testBadPrimaryKey() {
try {
new RdfTableDef.Builder()
.addColumnDef(
RdfColumnDef.Builder.getStringBuilder()
.build(model))
.addColumnDef(
RdfColumnDef.Builder.getIntegerBuilder().build(
model)).setPrimaryKey(getSortKey());
Assert.fail("Should have thrown IllegalArgumentException");
} catch (final IllegalArgumentException e) {
// expected
}
}
@Test
public void testDefault() {
final RdfTableDef.Builder builder = new RdfTableDef.Builder()
.addColumnDef(
RdfColumnDef.Builder.getStringBuilder().build(model))
.addColumnDef(
RdfColumnDef.Builder.getIntegerBuilder().build(model));
final TableDef tableDef = builder.build(model);
Assert.assertEquals(2, tableDef.getColumnCount());
Assert.assertEquals(RdfColumnDef.Builder.getStringBuilder()
.build(model), tableDef.getColumnDef(0));
Assert.assertEquals(
RdfColumnDef.Builder.getIntegerBuilder().build(model),
tableDef.getColumnDef(1));
Assert.assertEquals(1, tableDef.getColumnIndex(RdfColumnDef.Builder
.getIntegerBuilder().build(model)));
Assert.assertNotNull(tableDef.getColumnDefs());
Assert.assertNull(tableDef.getPrimaryKey());
Assert.assertNull(tableDef.getSortKey());
Assert.assertNull(tableDef.getSuperTableDef());
}
@Test
public void testPrimaryKey() {
final RdfTableDef.Builder builder = new RdfTableDef.Builder()
.addColumnDef(
RdfColumnDef.Builder.getStringBuilder().build(model))
.addColumnDef(
RdfColumnDef.Builder.getIntegerBuilder().build(model))
.setPrimaryKey(getPrimaryKey());
final TableDef tableDef = builder.build(model);
Assert.assertEquals(2, tableDef.getColumnCount());
Assert.assertEquals(RdfColumnDef.Builder.getStringBuilder()
.build(model), tableDef.getColumnDef(0));
Assert.assertEquals(
RdfColumnDef.Builder.getIntegerBuilder().build(model),
tableDef.getColumnDef(1));
Assert.assertEquals(1, tableDef.getColumnIndex(RdfColumnDef.Builder
.getIntegerBuilder().build(model)));
Assert.assertNotNull(tableDef.getColumnDefs());
Assert.assertEquals(getPrimaryKey(), tableDef.getPrimaryKey());
Assert.assertNull(tableDef.getSortKey());
Assert.assertNull(tableDef.getSuperTableDef());
}
@Test
public void testSortKey() {
final RdfTableDef.Builder builder = new RdfTableDef.Builder()
.addColumnDef(
RdfColumnDef.Builder.getStringBuilder().build(model))
.addColumnDef(
RdfColumnDef.Builder.getIntegerBuilder().build(model))
.setSortKey(getSortKey());
final TableDef tableDef = builder.build(model);
Assert.assertEquals(2, tableDef.getColumnCount());
Assert.assertEquals(RdfColumnDef.Builder.getStringBuilder()
.build(model), tableDef.getColumnDef(0));
Assert.assertEquals(
RdfColumnDef.Builder.getIntegerBuilder().build(model),
tableDef.getColumnDef(1));
Assert.assertEquals(1, tableDef.getColumnIndex(RdfColumnDef.Builder
.getIntegerBuilder().build(model)));
Assert.assertNotNull(tableDef.getColumnDefs());
Assert.assertNull(tableDef.getPrimaryKey());
Assert.assertEquals(getSortKey(), tableDef.getSortKey());
Assert.assertNull(tableDef.getSuperTableDef());
}
@Test
public void testSuperTable() {
RdfTableDef.Builder builder = new RdfTableDef.Builder().addColumnDef(
RdfColumnDef.Builder.getStringBuilder().build(model))
.addColumnDef(
RdfColumnDef.Builder.getIntegerBuilder().build(model));
final RdfTableDef tableDef2 = builder.build(model);
builder = new RdfTableDef.Builder()
.addColumnDef(
RdfColumnDef.Builder.getStringBuilder().build(model))
.addColumnDef(
RdfColumnDef.Builder.getIntegerBuilder().build(model))
.setSuperTableDef(tableDef2);
final TableDef tableDef = builder.build(model);
Assert.assertEquals(2, tableDef.getColumnCount());
Assert.assertEquals(RdfColumnDef.Builder.getStringBuilder()
.build(model), tableDef.getColumnDef(0));
Assert.assertEquals(
RdfColumnDef.Builder.getIntegerBuilder().build(model),
tableDef.getColumnDef(1));
Assert.assertEquals(1, tableDef.getColumnIndex(RdfColumnDef.Builder
.getIntegerBuilder().build(model)));
Assert.assertNotNull(tableDef.getColumnDefs());
Assert.assertNull(tableDef.getPrimaryKey());
Assert.assertNull(tableDef.getSortKey());
Assert.assertEquals(tableDef2, tableDef.getSuperTableDef());
}
}