package com.mycompany.furniture;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import me.prettyprint.hom.CassandraTestBase;
import me.prettyprint.hom.EntityManagerImpl;
import org.apache.thrift.transport.TTransportException;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class FurnitureTest extends CassandraTestBase {
static EntityManagerImpl entityMgr;
@Test
public void testFurniture() {
Chair chair = new Chair();
chair.setId( 1 );
chair.setMaterial("wood");
chair.setColor("brown");
chair.setArms(true);
chair.setRecliner(false);
entityMgr.persist(chair);
Couch couch = new Couch();
couch.setId( 2 );
couch.setMaterial("wood");
couch.setColor("brown");
couch.setFoldOutBed(false);
couch.setNumCushions(3);
entityMgr.persist(couch);
BasicTable table = new BasicTable();
table.setId( 3 );
table.setMaterial("formica");
table.setColor("blue");
table.setExtendable(true);
table.setShape("circle");
entityMgr.persist(table);
Desk desk = new Desk();
desk.setId( 4);
desk.setMaterial("pressBoard");
desk.setColor("black");
desk.setExtendable(false);
desk.setShape("rectangle");
desk.setDeskType("roll-top");
desk.addDrawer(new Drawer(true, true, "pencil")).addDrawer(new Drawer(false, true, "filing")).addDrawer(new Drawer(false, false, "upperLeft")).addDrawer(new Drawer(false, true, "lowerLeft"));
desk.getOneColumnDrawerList().addAll(desk.getDrawerList());
entityMgr.persist(desk);
Furniture f1 = entityMgr.find(Furniture.class, 1);
Furniture f2 = entityMgr.find(Furniture.class, 2);
Furniture f3 = entityMgr.find(Furniture.class, 3);
Furniture f4 = entityMgr.find(Furniture.class, 4);
assertEquals( Chair.class, f1.getClass() );
assertEquals( Couch.class, f2.getClass() );
assertEquals( BasicTable.class, f3.getClass() );
assertEquals( Desk.class, f4.getClass() );
assertEquals( chair.isArms(), ((Chair)f1).isArms() );
assertEquals( desk.getDrawerList().size(), ((Desk)f4).getDrawerList().size() );
for ( int i=0;i < desk.getDrawerList().size();i++ ) {
assertEquals( desk.getDrawerList().get(i), ((Desk)f4).getDrawerList().get(i));
}
assertEquals( desk.getOneColumnDrawerList().size(), ((Desk)f4).getOneColumnDrawerList().size() );
for ( int i=0;i < desk.getOneColumnDrawerList().size();i++ ) {
assertEquals( desk.getOneColumnDrawerList().get(i), ((Desk)f4).getOneColumnDrawerList().get(i));
}
}
// --------------
@Before
public void setup() throws TTransportException, SecurityException, IllegalArgumentException,
IOException, InterruptedException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
entityMgr = new EntityManagerImpl(keyspace, "com.mycompany.furniture");
}
}