package rabbitescape.render; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.CoreMatchers.*; import org.junit.Test; import rabbitescape.engine.CellularDirection; public class TestVector2D { @Test public void Vectors_add() { Vector2D a = new Vector2D( 1, 2 ); Vector2D b = new Vector2D( 3, 4 ); assertThat( a.add( b ), equalTo( new Vector2D( 4, 6 ) ) ); } @Test public void Vectors_subtract() { Vector2D a = new Vector2D( 1, 2 ); Vector2D b = new Vector2D( 3, 4 ); assertThat( a.subtract( b ), equalTo( new Vector2D( -2, -2 ) ) ); } @Test public void Vectors_multiply_with_double() { Vector2D a = new Vector2D( 4, 6 ); assertThat( a.multiply( 1.5 ), equalTo( new Vector2D( 6, 9 ) ) ); } @Test public void Vectors_multiply_with_int() { Vector2D a = new Vector2D( 4, 6 ); assertThat( a.multiply( 2 ), equalTo( new Vector2D( 8, 12 ) ) ); } @Test public void Vectors_can_be_divided() { Vector2D a = new Vector2D( 4, 6 ); assertThat( a.divide( 2 ), equalTo( new Vector2D( 2, 3 ) ) ); } @Test public void Vectors_can_be_created_from_cellular_directions() { Vector2D a = Vector2D.translate( CellularDirection.DOWN ); assertThat( a, equalTo( new Vector2D( 0, 1 ) ) ); } @Test public void Vector_angle_is_calculated() { Vector2D a = new Vector2D( 1000, (int) ( 1000 * Math.sqrt( 3.01 ) ) ); assertThat( a.angle() , equalTo( 60 ) ); } @Test public void Vector_square_magnitude_is_calculated() { Vector2D a = new Vector2D( 3, 4 ); assertThat( a.magnitude2() , equalTo( 25 ) ); } @Test public void Equal_if_direction_and_magnitude_are_equal() { Vector2D a = new Vector2D( 10, 10 ); Vector2D b = new Vector2D( 10, 10 ); assertThat( a.equals( b ), equalTo ( true ) ); } @Test public void Unequal_if_different() { Vector2D a = new Vector2D( 10, 10 ); Vector2D b = new Vector2D( 10, 11 ); assertThat( a.equals( b ), equalTo ( false ) ); } @Test public void ToString_formats_to_coordinates() { Vector2D a = new Vector2D( 3, 4 ); assertThat( a.toString(), equalTo( "(0003,0004)" ) ); } }