package lt.emasina.resthub;
import java.util.List;
import junit.framework.TestCase;
import lt.emasina.resthub.factory.XmlFileTableFactory;
import lt.emasina.resthub.factory.XmlFolderTableFactory;
import lt.emasina.resthub.model.MdTable;
import org.junit.Test;
public class TableFactoryChainTest {
private class DummyTableFactory extends TableFactory {
public boolean closed = false;
@Override
public boolean isRefresh() {
return false;
}
@Override
public List<MdTable> getTables() throws Exception {
return null;
}
@Override
public void close() throws Exception {
closed = true;
}
}
@Test
public void simpleTest() throws Exception {
TableFactory tf1 = new DummyTableFactory();
TableFactory tf2 = new DummyTableFactory();
TableFactory tf = new TableFactory.Builder()
.add(new XmlFolderTableFactory("dir1"))
.add(tf2)
.add(new XmlFileTableFactory("file1"))
.add(tf1)
.build();
TestCase.assertNotNull(tf.getNext());
TestCase.assertNotNull(tf.getNext().getNext());
TestCase.assertNotNull(tf.getNext().getNext().getNext());
TestCase.assertNull(tf.getNext().getNext().getNext().getNext());
TestCase.assertFalse(((DummyTableFactory) tf.getNext()).closed);
TestCase.assertFalse(((DummyTableFactory) tf.getNext().getNext().getNext()).closed);
tf.closeAll();
TestCase.assertTrue(((DummyTableFactory) tf.getNext()).closed);
TestCase.assertTrue(((DummyTableFactory) tf.getNext().getNext().getNext()).closed);
}
}