package io.vivarium.util;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import com.johnuckele.vtest.Tester;
import io.vivarium.test.FastTest;
import io.vivarium.test.UnitTest;
public class FunctionsTest
{
@Test
@Category({ FastTest.class, UnitTest.class })
public void testLogit()
{
Tester.equal("0 = logit(0.5)", Functions.logit(0.5), 0, 0.0001);
Tester.equal("1 = sigmoid(logit(1))", 1, Functions.sigmoid(Functions.logit(1)), 0.0001);
Tester.equal("-1 = logit(sigmoid(-1))", -1, Functions.logit(Functions.sigmoid(-1)), 0.0001);
Tester.equal("4.5951 = logit(0.99)", 4.5951, Functions.logit(0.99), 0.0001);
}
@Test
@Category({ FastTest.class, UnitTest.class })
public void testSigmoid()
{
Tester.equal("sigmoid(-1) = 0.2689", 0.2689, Functions.sigmoid(-1), 0.0001);
Tester.equal("sigmoid(0) = 0.5", 0.5, Functions.sigmoid(0), 0.0001);
Tester.equal("sigmoid(0.5) = 0.6224", 0.6224, Functions.sigmoid(0.5), 0.0001);
Tester.equal("sigmoid(1) = 0.7310", 0.7310, Functions.sigmoid(1), 0.0001);
Tester.equal("sigmoid(4) = 0.9820", 0.9820, Functions.sigmoid(4), 0.0001);
}
@Test
@Category({ FastTest.class, UnitTest.class })
public void testLogarithmicAverage()
{
double a, b, c;
a = 1;
b = 1;
c = 1;
Tester.equal("avg(1,1) = 1", Math.log(c), Functions.logarithmicAverage(Math.log(a), Math.log(b)), 0.0001);
a = 3;
b = 1;
c = 2;
Tester.equal("avg(3,1) = 2", Math.log(c), Functions.logarithmicAverage(Math.log(a), Math.log(b)), 0.0001);
a = 2;
b = 1;
c = 1.5;
Tester.equal("avg(2,1) = 1.5", Math.log(c), Functions.logarithmicAverage(Math.log(a), Math.log(b)), 0.0001);
}
}