mass update

This commit is contained in:
2018-04-11 21:05:45 +02:00
parent 016a2e2bbb
commit 17ce8566a3
8 changed files with 270 additions and 224 deletions

View File

@@ -1,94 +1,94 @@
package worms.model;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.RepeatedTest;
import static org.junit.jupiter.api.Assertions.*;
import worms.util.Coordinate;
import java.util.Random;
class WormTest {
private static Worm worm;
private static Random r = new Random();
@BeforeAll
static void setUp() {
worm = new Worm(Coordinate.create(0.0, 0.0), 0, "Test", 1);
}
@RepeatedTest(5000)
void move() {
worm = new Worm(Coordinate.create(0.0, 0.0), 0, "Test", 1);
int steps = r.nextInt(5101) - 100;
double maxAngle = Math.abs(2 * Math.PI - worm.getOrientation());
double minAngle = worm.getOrientation();
double combAngle = maxAngle + minAngle;
double angle = r.nextDouble() * combAngle - minAngle;
worm.turn(angle);
long cost = (long) Math.ceil(Math.abs(Math.cos(worm.getOrientation())) + Math.abs(4 * Math.sin(worm.getOrientation()))) * steps;
if (steps < 0 || cost > worm.getActionPoints()) {
assertThrows(IllegalArgumentException.class, () -> worm.move(steps));
}
else {
double newLocX = worm.getLocation().item1 + steps * worm.getRadius() * Math.cos(worm.getOrientation());
double newLocY = worm.getLocation().item2 + steps * worm.getRadius() * Math.sin(worm.getOrientation());
worm.move(steps);
assertEquals(Coordinate.create(newLocX, newLocY), worm.getLocation());
}
}
@RepeatedTest(5000)
void turn() {
double angle = r.nextDouble() * 4 * Math.PI - 2 * Math.PI;
double oldAngle = worm.getOrientation();
if (!Worm.isValidOrientation(oldAngle + angle) || worm.getActionPoints() - (long) Math.ceil(Math.toDegrees(angle) / 6) < 0) {
assertThrows(AssertionError.class, () -> worm.turn(angle));
worm = new Worm(Coordinate.create(0.0, 0.0), 0, "Test", 1);
}
else {
worm.turn(angle);
assertEquals(oldAngle + angle, worm.getOrientation());
}
}
@Test
void turnInvalidValue() {
assertThrows(AssertionError.class, () -> worm.turn(Double.NaN));
}
@RepeatedTest(5000)
void jump() {
worm = new Worm(Coordinate.create(0.0, 0.0), 0, "Test", 1);
double maxAngle = Math.abs(2 * Math.PI - worm.getOrientation());
double minAngle = worm.getOrientation();
double combAngle = maxAngle + minAngle;
double angle = r.nextDouble() * combAngle - minAngle;
worm.turn(angle);
int steps = r.nextInt(100);
worm.move(steps);
if (worm.getOrientation() >= Math.PI || worm.getActionPoints() == 0){
assertThrows(IllegalStateException.class, () -> worm.jump());
}
else {
double orient = worm.getOrientation();
double force = 5 * worm.getActionPoints() + worm.getMass() * Worm.G;
double v = force / worm.getMass() * Worm.FORCE_TIME;
double newLocX = worm.getLocation().item1 + Math.pow(v, 2) * Math.sin(2 * orient) / Worm.G;
worm.jump();
assertEquals(Coordinate.create(newLocX, worm.getLocation().getCoordinateY()), worm.getLocation());
}
}
@Test
void doubleJump() {
worm = new Worm(Coordinate.create(0.0, 0.0), 0, "Test", 1);
worm.jump();
assertThrows(IllegalStateException.class, () -> worm.jump());
}
}
//package worms.model;
//
//import org.junit.jupiter.api.Test;
//import org.junit.jupiter.api.BeforeAll;
//import org.junit.jupiter.api.RepeatedTest;
//import static org.junit.jupiter.api.Assertions.*;
//import worms.util.Coordinate;
//
//import java.util.Random;
//
//class WormTest {
//
// private static Worm worm;
// private static Random r = new Random();
//
// @BeforeAll
// static void setUp() {
// worm = new Worm(Coordinate.create(0.0, 0.0), 0, "Test", 1);
// }
//
// @RepeatedTest(5000)
// void move() {
// worm = new Worm(Coordinate.create(0.0, 0.0), 0, "Test", 1);
// int steps = r.nextInt(5101) - 100;
// double maxAngle = Math.abs(2 * Math.PI - worm.getOrientation());
// double minAngle = worm.getOrientation();
// double combAngle = maxAngle + minAngle;
// double angle = r.nextDouble() * combAngle - minAngle;
// worm.turn(angle);
// long cost = (long) Math.ceil(Math.abs(Math.cos(worm.getOrientation())) + Math.abs(4 * Math.sin(worm.getOrientation()))) * steps;
// if (steps < 0 || cost > worm.getActionPoints()) {
// assertThrows(IllegalArgumentException.class, () -> worm.move(steps));
// }
// else {
//
// double newLocX = worm.getLocation().item1 + steps * worm.getRadius() * Math.cos(worm.getOrientation());
// double newLocY = worm.getLocation().item2 + steps * worm.getRadius() * Math.sin(worm.getOrientation());
// worm.move(steps);
// assertEquals(Coordinate.create(newLocX, newLocY), worm.getLocation());
// }
// }
//
// @RepeatedTest(5000)
// void turn() {
// double angle = r.nextDouble() * 4 * Math.PI - 2 * Math.PI;
// double oldAngle = worm.getOrientation();
//
// if (!Worm.isValidOrientation(oldAngle + angle) || worm.getActionPoints() - (long) Math.ceil(Math.toDegrees(angle) / 6) < 0) {
// assertThrows(AssertionError.class, () -> worm.turn(angle));
// worm = new Worm(Coordinate.create(0.0, 0.0), 0, "Test", 1);
// }
// else {
// worm.turn(angle);
// assertEquals(oldAngle + angle, worm.getOrientation());
// }
//
// }
//
// @Test
// void turnInvalidValue() {
// assertThrows(AssertionError.class, () -> worm.turn(Double.NaN));
// }
//
// @RepeatedTest(5000)
// void jump() {
//
// worm = new Worm(Coordinate.create(0.0, 0.0), 0, "Test", 1);
// double maxAngle = Math.abs(2 * Math.PI - worm.getOrientation());
// double minAngle = worm.getOrientation();
// double combAngle = maxAngle + minAngle;
// double angle = r.nextDouble() * combAngle - minAngle;
// worm.turn(angle);
// int steps = r.nextInt(100);
// worm.move(steps);
//
// if (worm.getOrientation() >= Math.PI || worm.getActionPoints() == 0){
// assertThrows(IllegalStateException.class, () -> worm.jump());
// }
// else {
// double orient = worm.getOrientation();
// double force = 5 * worm.getActionPoints() + worm.getMass() * Worm.G;
// double v = force / worm.getMass() * Worm.FORCE_TIME;
// double newLocX = worm.getLocation().item1 + Math.pow(v, 2) * Math.sin(2 * orient) / Worm.G;
// worm.jump();
// assertEquals(Coordinate.create(newLocX, worm.getLocation().getCoordinateY()), worm.getLocation());
// }
// }
// @Test
// void doubleJump() {
// worm = new Worm(Coordinate.create(0.0, 0.0), 0, "Test", 1);
// worm.jump();
// assertThrows(IllegalStateException.class, () -> worm.jump());
// }
//}