package org.openlca.core.matrix.cache; import java.util.HashSet; import java.util.List; import java.util.Set; import org.junit.Assert; import org.junit.Test; import org.openlca.core.Tests; import org.openlca.core.database.IDatabase; import org.openlca.core.database.ImpactCategoryDao; import org.openlca.core.database.ProcessDao; import org.openlca.core.matrix.CalcExchange; import org.openlca.core.matrix.CalcImpactFactor; import org.openlca.core.model.Exchange; import org.openlca.core.model.ImpactCategory; import org.openlca.core.model.ImpactFactor; import org.openlca.core.model.Process; import org.openlca.core.model.Uncertainty; /** * Tests that we get all uncertainty information from the matrix-table loaders. */ public class UncertaintyTableTest { private IDatabase database = Tests.getDb(); private MatrixCache cache = MatrixCache.createLazy(database); @Test public void testForExchange() throws Exception { Exchange exchange = new Exchange(); Uncertainty uncertainty = createUncertainty(); exchange.setUncertainty(uncertainty); Process process = new Process(); process.getExchanges().add(exchange); ProcessDao dao = new ProcessDao(database); dao.insert(process); Set<Long> set = new HashSet<>(); set.add(process.getId()); List<CalcExchange> exchanges = cache.getExchangeCache().get( process.getId()); checkExchange(exchanges.get(0)); dao.delete(process); } private void checkExchange(CalcExchange exchange) { Assert.assertEquals(1, exchange.parameter1, 1e-16); Assert.assertEquals(2, exchange.parameter2, 1e-16); Assert.assertEquals(3, exchange.parameter3, 1e-16); Assert.assertEquals("0.5 * 2", exchange.parameter1Formula); Assert.assertEquals("4 / 2", exchange.parameter2Formula); Assert.assertEquals("4 / 2", exchange.parameter3Formula); } @Test public void testForImpactFactor() throws Exception { ImpactFactor factor = new ImpactFactor(); factor.setUncertainty(createUncertainty()); ImpactCategory category = new ImpactCategory(); category.getImpactFactors().add(factor); ImpactCategoryDao dao = new ImpactCategoryDao(database); dao.insert(category); List<CalcImpactFactor> factors = cache.getImpactCache().get( category.getId()); checkFactor(factors.get(0)); dao.delete(category); } private void checkFactor(CalcImpactFactor factor) { Assert.assertEquals(1, factor.getParameter1(), 1e-16); Assert.assertEquals(2, factor.getParameter2(), 1e-16); Assert.assertEquals(3, factor.getParameter3(), 1e-16); } private Uncertainty createUncertainty() { Uncertainty uncertainty = Uncertainty.triangle(1, 2, 3); uncertainty.setParameter1Formula("0.5 * 2"); uncertainty.setParameter2Formula("4 / 2"); uncertainty.setParameter3Formula("4 / 2"); return uncertainty; } }