package org.openlca.core.database.usage;
import java.util.List;
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.database.FlowDao;
import org.openlca.core.database.FlowPropertyDao;
import org.openlca.core.database.IDatabase;
import org.openlca.core.database.UnitGroupDao;
import org.openlca.core.model.Flow;
import org.openlca.core.model.FlowProperty;
import org.openlca.core.model.FlowPropertyFactor;
import org.openlca.core.model.ModelType;
import org.openlca.core.model.UnitGroup;
import org.openlca.core.model.descriptors.BaseDescriptor;
import org.openlca.core.model.descriptors.CategorizedDescriptor;
import org.openlca.core.model.descriptors.Descriptors;
public class FlowPropertyUseSearchTest {
private IDatabase db = Tests.getDb();
private FlowProperty unused;
private FlowProperty used;
private Flow flow;
private UnitGroup unitGroup;
@Before
public void setUp() {
UnitGroupDao groupDao = new UnitGroupDao(db);
FlowPropertyDao propDao = new FlowPropertyDao(db);
FlowDao flowDao = new FlowDao(db);
unused = propDao.insert(new FlowProperty());
used = propDao.insert(new FlowProperty());
unitGroup = new UnitGroup();
unitGroup.setDefaultFlowProperty(used);
unitGroup = groupDao.insert(unitGroup);
flow = new Flow();
FlowPropertyFactor fac = new FlowPropertyFactor();
fac.setFlowProperty(used);
flow.getFlowPropertyFactors().add(fac);
flow = flowDao.insert(flow);
}
@After
public void tearDown() {
UnitGroupDao groupDao = new UnitGroupDao(db);
FlowPropertyDao propDao = new FlowPropertyDao(db);
FlowDao flowDao = new FlowDao(db);
flowDao.delete(flow);
groupDao.delete(unitGroup);
propDao.delete(unused);
propDao.delete(used);
}
@Test
public void testUnused() {
IUseSearch<CategorizedDescriptor> search = IUseSearch.FACTORY.createFor(
ModelType.FLOW_PROPERTY, db);
List<CategorizedDescriptor> list = search.findUses(
Descriptors.toDescriptor(unused));
Assert.assertTrue(list.isEmpty());
}
@Test
public void testUsed() {
IUseSearch<CategorizedDescriptor> search = IUseSearch.FACTORY.createFor(
ModelType.FLOW_PROPERTY, db);
List<CategorizedDescriptor> list = search.findUses(
Descriptors.toDescriptor(used));
Assert.assertEquals(2, list.size());
for (BaseDescriptor d : list) {
if (d.getModelType() != ModelType.UNIT_GROUP) {
Assert.assertEquals(ModelType.FLOW, d.getModelType());
Assert.assertEquals(flow.getId(), d.getId());
} else {
Assert.assertEquals(unitGroup.getId(), d.getId());
}
}
}
}