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.IDatabase; import org.openlca.core.database.UnitGroupDao; import org.openlca.core.model.Exchange; import org.openlca.core.model.ImpactCategory; import org.openlca.core.model.ImpactFactor; import org.openlca.core.model.ImpactMethod; import org.openlca.core.model.Process; import org.openlca.core.model.SocialIndicator; import org.openlca.core.model.Unit; 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 UnitUseSearchTest { private IDatabase database = Tests.getDb(); private UnitUseSearch search; private UnitGroup unitGroup; private Unit unit; @Before public void setup() { unitGroup = new UnitGroup(); unitGroup.setName("group"); unit = new Unit(); unit.setName("unit"); unitGroup.getUnits().add(unit); unitGroup = new UnitGroupDao(database).insert(unitGroup); unit = unitGroup.getUnit(unit.getName()); search = new UnitUseSearch(database); } @After public void tearDown() { database.createDao(UnitGroup.class).delete(unitGroup); } @Test public void testFindNoUsage() { List<CategorizedDescriptor> models = search.findUses(unit); Assert.assertNotNull(models); Assert.assertTrue(models.isEmpty()); } @Test public void testFindInImpactMethods() { ImpactMethod method = createMethod(); List<CategorizedDescriptor> results = search.findUses(unit); database.createDao(ImpactMethod.class).delete(method); BaseDescriptor expected = Descriptors.toDescriptor(method); Assert.assertEquals(1, results.size()); Assert.assertEquals(expected, results.get(0)); } private ImpactMethod createMethod() { ImpactMethod method = new ImpactMethod(); method.setName("method"); ImpactFactor iFactor = new ImpactFactor(); iFactor.setUnit(unit); ImpactCategory category = new ImpactCategory(); category.getImpactFactors().add(iFactor); method.getImpactCategories().add(category); return database.createDao(ImpactMethod.class).insert(method); } @Test public void testFindInProcesses() { Process process = createProcess(); List<CategorizedDescriptor> results = search.findUses(unit); database.createDao(Process.class).delete(process); BaseDescriptor expected = Descriptors.toDescriptor(process); Assert.assertEquals(1, results.size()); Assert.assertEquals(expected, results.get(0)); } private Process createProcess() { Process process = new Process(); process.setName("process"); Exchange exchange = new Exchange(); exchange.setUnit(unit); process.getExchanges().add(exchange); return database.createDao(Process.class).insert(process); } @Test public void testFindInSocialIndicator() { SocialIndicator indicator = createSocialIndicator(); List<CategorizedDescriptor> results = search.findUses(unit); database.createDao(SocialIndicator.class).delete(indicator); BaseDescriptor expected = Descriptors.toDescriptor(indicator); Assert.assertEquals(1, results.size()); Assert.assertEquals(expected, results.get(0)); } private SocialIndicator createSocialIndicator() { SocialIndicator indicator = new SocialIndicator(); indicator.setName("indicator"); indicator.activityUnit = unit; return database.createDao(SocialIndicator.class).insert(indicator); } }