package org.openlca.core.database.usage; import java.util.List; 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.model.Currency; import org.openlca.core.model.Exchange; import org.openlca.core.model.ModelType; import org.openlca.core.model.Process; import org.openlca.core.model.descriptors.BaseDescriptor; import org.openlca.core.model.descriptors.CategorizedDescriptor; import org.openlca.core.model.descriptors.CurrencyDescriptor; import org.openlca.core.model.descriptors.Descriptors; public class CurrencyUseSearchTest { private IDatabase database = Tests.getDb(); private IUseSearch<CurrencyDescriptor> search; @Before public void setup() { search = IUseSearch.FACTORY.createFor(ModelType.CURRENCY, database); } @Test public void testFindNoUsage() { Currency currency = createCurrency(); List<CategorizedDescriptor> models = search.findUses(Descriptors .toDescriptor(currency)); Assert.assertNotNull(models); Assert.assertTrue(models.isEmpty()); database.createDao(Currency.class).delete(currency); } @Test public void testFindInCurrency() { Currency currency = createCurrency(); Currency other = createCurrency(); other.referenceCurrency = currency; database.createDao(Currency.class).update(other); List<CategorizedDescriptor> results = search.findUses(Descriptors .toDescriptor(currency)); database.createDao(Currency.class).delete(currency); database.createDao(Currency.class).delete(other); BaseDescriptor expected = Descriptors.toDescriptor(other); Assert.assertEquals(1, results.size()); Assert.assertEquals(expected, results.get(0)); } @Test public void testFindInExchanges() { Currency currency = createCurrency(); Process process = createProcess(currency, true); List<CategorizedDescriptor> results = search.findUses(Descriptors .toDescriptor(currency)); database.createDao(Process.class).delete(process); database.createDao(Currency.class).delete(currency); BaseDescriptor expected = Descriptors.toDescriptor(process); Assert.assertEquals(1, results.size()); Assert.assertEquals(expected, results.get(0)); } @Test public void testFindInProcess() { Currency currency = createCurrency(); Process process = createProcess(currency, false); List<CategorizedDescriptor> results = search.findUses(Descriptors .toDescriptor(currency)); database.createDao(Process.class).delete(process); database.createDao(Currency.class).delete(currency); BaseDescriptor expected = Descriptors.toDescriptor(process); Assert.assertEquals(1, results.size()); Assert.assertEquals(expected, results.get(0)); } private Currency createCurrency() { Currency currency = new Currency(); currency.setName("currency"); database.createDao(Currency.class).insert(currency); return currency; } private Process createProcess(Currency currency, boolean inExchange) { Process process = new Process(); process.setName("process"); if (inExchange) { Exchange exchange = new Exchange(); exchange.currency = currency; process.getExchanges().add(exchange); } else process.currency = currency; database.createDao(Process.class).insert(process); return process; } }