package org.iplantc.phyloviewer.shared.math;
import junit.framework.TestCase;
import org.iplantc.phyloviewer.shared.math.PolarVector2;
import org.iplantc.phyloviewer.shared.math.Vector2;
import org.junit.Test;
public class TestPolarVector2 extends TestCase {
static final double pi = Math.PI;
@Test
public void testCartesianConstructor() {
double delta = 10E-14;
Vector2 v = new Vector2(0,0);
PolarVector2 pv = new PolarVector2(v);
assertEquals(0.0, pv.getRadius(), delta);
assertEquals(0.0, pv.getAngle(), delta);
assertEquals(v.getX(), pv.getX(), delta);
assertEquals(v.getY(), pv.getY(), delta);
assertTrue(pv.isValid());
v.setX(1.0);
pv = new PolarVector2(v);
assertEquals(v.length(), pv.getRadius(), delta);
assertEquals(0.0, pv.getAngle(), delta);
assertEquals(v.getX(), pv.getX(), delta);
assertEquals(v.getY(), pv.getY(), delta);
assertTrue(pv.isValid());
v.setY(1.0);
pv = new PolarVector2(v);
assertEquals(v.length(), pv.getRadius(), delta);
assertEquals(pi / 4, pv.getAngle(), delta);
assertEquals(v.getX(), pv.getX(), delta);
assertEquals(v.getY(), pv.getY(), delta);
assertTrue(pv.isValid());
v.setX(0.0);
pv = new PolarVector2(v);
assertEquals(v.length(), pv.getRadius(), delta);
assertEquals(pi / 2, pv.getAngle(), delta);
assertEquals(v.getX(), pv.getX(), delta);
assertEquals(v.getY(), pv.getY(), delta);
assertTrue(pv.isValid());
v.setX(-1.0);
pv = new PolarVector2(v);
assertEquals(v.length(), pv.getRadius(), delta);
assertEquals(3 * pi / 4, pv.getAngle(), delta);
assertEquals(v.getX(), pv.getX(), delta);
assertEquals(v.getY(), pv.getY(), delta);
assertTrue(pv.isValid());
v.setY(0.0);
pv = new PolarVector2(v);
assertEquals(v.length(), pv.getRadius(), delta);
assertEquals(pi, pv.getAngle(), delta);
assertEquals(v.getX(), pv.getX(), delta);
assertEquals(v.getY(), pv.getY(), delta);
assertTrue(pv.isValid());
v.setY(-1.0);
pv = new PolarVector2(v);
assertEquals(v.length(), pv.getRadius(), delta);
assertEquals(5 * pi / 4, pv.getAngle(), delta);
assertEquals(v.getX(), pv.getX(), delta);
assertEquals(v.getY(), pv.getY(), delta);
assertTrue(pv.isValid());
v.setX(0.0);
pv = new PolarVector2(v);
assertEquals(v.length(), pv.getRadius(), delta);
assertEquals(3 * pi / 2, pv.getAngle(), delta);
assertEquals(v.getX(), pv.getX(), delta);
assertEquals(v.getY(), pv.getY(), delta);
assertTrue(pv.isValid());
v.setX(1.0);
pv = new PolarVector2(v);
assertEquals(v.length(), pv.getRadius(), delta);
assertEquals(7 * pi / 4, pv.getAngle(), delta);
assertEquals(v.getX(), pv.getX(), delta);
assertEquals(v.getY(), pv.getY(), delta);
assertTrue(pv.isValid());
}
}