import static org.junit.Assert.assertEquals;
import java.util.List;
import middleware.ComparisonOperatorMapper.ComparisonOperator;
import middleware.NoSQLMiddleware;
import middleware.NoSQLMiddleware.Implementations;
import model.Attribute;
import model.Filter;
import model.Key;
import model.Row;
import org.junit.Test;
public class ImplementationBaseTest {
@Test
public void createTableTest() {
TestHandler.deleteTestTables();
assertEquals(
0,
TestHandler.getTestTableNames(
TestHandler.queryHandler.getTableNames()).size());
TestHandler.createTestTables();
assertEquals(
2,
TestHandler.getTestTableNames(
TestHandler.queryHandler.getTableNames()).size());
}
@Test
public void getItemByKeyTest() {
TestHandler.deleteTestTables();
TestHandler.createTestTables();
TestHandler.insertTestItems(TestHandler.TABLE_NAME);
Row item = TestHandler.queryHandler.getRowByKey(TestHandler.TABLE_NAME,
new Key("id", "2"));
assertEquals("Bowser", item.getAttributesMap().get("name").getValue());
assertEquals(true, item.getAttributesMap().containsKey("type"));
}
@Test
public void testScan1() {
TestHandler.deleteTestTables();
TestHandler.createTestTables();
TestHandler.insertTestItems(TestHandler.TABLE_NAME);
Filter[] filters = { new Filter(new Attribute("age", "24"),
ComparisonOperator.GE) };
List<Row> rows = TestHandler.queryHandler.getRows(
TestHandler.TABLE_NAME, "OR", filters);
TestHandler.printRows(rows);
assertEquals(2, rows.size());
assertEquals("Daisy", rows.get(0).getAttributesMap().get("name")
.getValue());
assertEquals("42", rows.get(1).getAttributesMap().get("age").getValue());
assertEquals("Yoshi", rows.get(1).getAttributesMap().get("name")
.getValue());
assertEquals(false, rows.get(1).getAttributesMap().containsKey("alias"));
TestHandler.deleteTestTables();
TestHandler.createTestTables();
TestHandler.insertTestItems(TestHandler.TABLE_NAME);
Filter[] filters2 = {
new Filter(new Attribute("age", "24"), ComparisonOperator.GE),
new Filter(new Attribute("type", "princess"),
ComparisonOperator.EQ) };
rows = TestHandler.queryHandler.getRows(TestHandler.TABLE_NAME, "AND",
filters2);
assertEquals(1, rows.size());
assertEquals("Daisy", rows.get(0).getAttributesMap().get("name")
.getValue());
}
@Test
public void testScan2() {
TestHandler.deleteTestTables();
TestHandler.createTestTables();
TestHandler.insertTestItems(TestHandler.TABLE_NAME);
Filter[] filter = {
new Filter(new Attribute("age", "23"), ComparisonOperator.NE),
new Filter(new Attribute("type", "princess"),
ComparisonOperator.NE),
new Filter(new Attribute("name", "Peach"),
ComparisonOperator.NE) };
List<Row> rows = TestHandler.queryHandler.getRows(
TestHandler.TABLE_NAME, "OR", filter);
TestHandler.printRows(rows);
assertEquals(4, rows.size());
if (NoSQLMiddleware.getUsedDatabase() == Implementations.Cassandra) {
assertEquals("Mario", rows.get(3).getAttributesMap().get("name")
.getValue());
assertEquals("25", rows.get(0).getAttributesMap().get("age")
.getValue());
assertEquals("age", rows.get(0).getAttributesMap().get("age")
.getName());
} else if(NoSQLMiddleware.getUsedDatabase() == Implementations.Hypertable ||
NoSQLMiddleware.getUsedDatabase() == Implementations.Hbase){
assertEquals("Mario", rows.get(0).getAttributesMap().get("name")
.getValue());
assertEquals("25", rows.get(2).getAttributesMap().get("age")
.getValue());
assertEquals("age", rows.get(2).getAttributesMap().get("age")
.getName());
}
else {
assertEquals("Mario", rows.get(0).getAttributesMap().get("name")
.getValue());
assertEquals("25", rows.get(1).getAttributesMap().get("age")
.getValue());
assertEquals("age", rows.get(1).getAttributesMap().get("age")
.getName());
}
Filter[] filter2 = {
new Filter(new Attribute("name", "Mario"),
ComparisonOperator.EQ),
new Filter(new Attribute("type", "turtle"),
ComparisonOperator.EQ) };
rows = TestHandler.queryHandler.getRows(TestHandler.TABLE_NAME, "OR",
filter2);
if (NoSQLMiddleware.getUsedDatabase() == Implementations.Cassandra) {
assertEquals("Mario", rows.get(1).getAttributesMap().get("name")
.getValue());
assertEquals("Bowser", rows.get(0).getAttributesMap().get("name")
.getValue());
assertEquals("turtle", rows.get(0).getAttributesMap().get("type")
.getValue());
} else {
assertEquals("Mario", rows.get(0).getAttributesMap().get("name")
.getValue());
assertEquals("Bowser", rows.get(1).getAttributesMap().get("name")
.getValue());
assertEquals("turtle", rows.get(1).getAttributesMap().get("type")
.getValue());
}
}
}