package me.moodcat.database.embeddables; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; import junitx.extensions.EqualsHashCodeTestCase; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; /** * Test to make sure {@link VAVector vectors} are elementary. * * @author JeremybellEU */ @RunWith(Enclosed.class) public class VAVectorTest { public static class VAVectorEqualsTest extends EqualsHashCodeTestCase { public VAVectorEqualsTest(final String name) { super(name); } @Override protected Object createInstance() throws Exception { return new VAVector(0.5, 0.5); } @Override protected Object createNotEqualInstance() throws Exception { return new VAVector(0.5, 1.0); } } public static class VAVectorCalculationsTest { @Test public void additionAndSubstractionReturnSameVector() { final VAVector one = new VAVector(0.5, 0.5); final VAVector other = new VAVector(0.25, 0.25); assertEquals(one, one.add(other).subtract(other)); } @Test public void multiplicationTwoAndSubstractionReturnSameVector() { final VAVector one = new VAVector(0.5, 0.5); final double scalar = 2; assertEquals(one, one.multiply(scalar).subtract(one)); } @Test public void multiplicationTwoDistanceIsOne() { final VAVector one = new VAVector(0.5, 0.0); final double scalar = 2; assertEquals(one.length(), one.distance(one.multiply(scalar)), 1E-5); assertEquals(one.length(), VAVector.distance(one, one.multiply(scalar)), 1E-5); } @Test public void averageOfList() { final VAVector one = new VAVector(0.5, 0.5); final VAVector second = new VAVector(1.0, 1.0); final VAVector otherOne = new VAVector(-0.5, -0.5); final VAVector otherSecond = new VAVector(-1.0, -1.0); final List<VAVector> vectors = new ArrayList<VAVector>(); vectors.add(one); vectors.add(second); vectors.add(otherOne); vectors.add(otherSecond); assertEquals(new VAVector(0.0, 0.0), VAVector.average(vectors)); } @Test public void averageOfEmptyListIsZeroVector() { final VAVector zero = new VAVector(0.0, 0.0); final List<VAVector> vectors = new ArrayList<VAVector>(); assertEquals(zero, VAVector.average(vectors)); } } }