package org.openlca.core.database;
import java.util.Set;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openlca.core.Tests;
import org.openlca.core.model.Exchange;
import org.openlca.core.model.Flow;
import org.openlca.core.model.Process;
public class FlowUseQueryTest {
private ProcessDao processDao = new ProcessDao(
Tests.getDb());
private FlowDao dao = new FlowDao(Tests.getDb());
private Flow flow;
private Process process;
@Before
public void setUp() throws Exception {
flow = new Flow();
flow.setName("test-flow");
dao.insert(flow);
process = new Process();
process.setName("test-process");
processDao.insert(process);
}
@After
public void tearDown() throws Exception {
processDao.delete(process);
dao.delete(flow);
}
@Test
public void testNotUsed() {
Set<Long> providerIds = dao.getProviders(flow.getId());
Assert.assertTrue(providerIds.isEmpty());
Set<Long> recipientIds = dao.getRecipients(flow.getId());
Assert.assertTrue(recipientIds.isEmpty());
}
@Test
public void testUsedAsOutput() {
Exchange exchange = new Exchange();
exchange.setFlow(flow);
exchange.setInput(false);
process.getExchanges().add(exchange);
process = processDao.update(process);
Set<Long> providerIds = dao.getProviders(flow.getId());
Assert.assertEquals(1, providerIds.size());
Assert.assertTrue(providerIds.contains(process.getId()));
Set<Long> recipientIds = dao.getRecipients(flow.getId());
Assert.assertTrue(recipientIds.isEmpty());
}
@Test
public void testUsedAsInput() {
Exchange exchange = new Exchange();
exchange.setFlow(flow);
exchange.setInput(true);
process.getExchanges().add(exchange);
process = processDao.update(process);
Set<Long> providerIds = dao.getProviders(flow.getId());
Assert.assertTrue(providerIds.isEmpty());
Set<Long> recipientIds = dao.getRecipients(flow.getId());
Assert.assertEquals(1, recipientIds.size());
Assert.assertTrue(recipientIds.contains(process.getId()));
}
}