You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
2.9 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. package playground;
  2. import static org.junit.Assert.assertTrue;
  3. import java.awt.Color;
  4. import org.junit.jupiter.api.AfterAll;
  5. import org.junit.jupiter.api.BeforeAll;
  6. import org.junit.jupiter.api.Test;
  7. import gameobjects.EgoObject;
  8. import gameobjects.GameObject;
  9. import gameobjects.RectObject;
  10. /**
  11. * Tests {@link SpaceInvadersLevel} for
  12. * <ol>
  13. * <li>calcEnemySpeedX() returns the same value as constant SpaceInvadersLevel.ENEMYSPEEDX
  14. * <li>calcEnemySpeedY() returns the same value as constant SpaceInvadersLevel.ENEMYSPEEDY
  15. * <li>calcNrEnemies() returns the same value as constant SpaceInvadersLevel.NR_ENEMIES
  16. * <li>actionIfEnemyIsHit() adds 200 points to score
  17. * <li>actionIfEgoObjectIsHit() reduces number of lives (egoLives)
  18. * </ol>
  19. *
  20. * @author jkonert
  21. *
  22. */
  23. class SpaceInvadersLevelTest {
  24. private static SpaceInvadersLevel myLevel;
  25. @BeforeAll
  26. static void setUpBeforeClass() throws Exception {
  27. myLevel = new SpaceInvadersLevel();
  28. SpaceInvadersLevel.setGlobalFlag("egoLives", 5);
  29. SpaceInvadersLevel.setGlobalFlag("points", 500);
  30. SpaceInvadersLevel.setGlobalFlag("highscore", 5000);
  31. }
  32. @AfterAll
  33. static void tearDownAfterClass() throws Exception {
  34. // nothing
  35. }
  36. @Test
  37. void testCalcEnemySpeedX() {
  38. assertTrue("EnemySpeedX is as in SpaceInvadersLevel defined",
  39. myLevel.calcEnemySpeedX() == SpaceInvadersLevel.ENEMYSPEEDX);
  40. }
  41. @Test
  42. void testCalcEnemySpeedY() {
  43. assertTrue("EnemySpeedY is as in SpaceInvadersLevel defined",
  44. myLevel.calcEnemySpeedY() == SpaceInvadersLevel.ENEMYSPEEDY);
  45. }
  46. @Test
  47. void testCalcNrEnemies() {
  48. assertTrue("NrOfEnemies is as in SpaceInvadersLevel defined",
  49. myLevel.calcNrEnemies() == SpaceInvadersLevel.NR_ENEMIES);
  50. }
  51. @Test
  52. void testActionIfEnemyIsHitPointsUp() {
  53. Integer numPointsBefore = (Integer) myLevel.getGlobalFlag("points");
  54. GameObject dummyShot = new RectObject("shot1", myLevel, 0, 0, 0, 0, 12, 12, Color.WHITE);
  55. GameObject dummyEnemy = new RectObject("ego1", myLevel, 0, 0, 0, 0, 12, 12, Color.BLACK);
  56. myLevel.addObject(dummyShot);
  57. myLevel.addObject(dummyEnemy);
  58. myLevel.actionIfEnemyIsHit(dummyEnemy, dummyShot);
  59. ; // this is the call under test
  60. Integer numPointsAfter = (Integer) myLevel.getGlobalFlag("points"); // changed?
  61. assertTrue("numPoints is up +200 after EnemyIsHit", numPointsAfter == numPointsBefore + 200); // points are set +200
  62. // , check.
  63. }
  64. @Test
  65. void testActionIfEgoObjectIsHitLivesDown() {
  66. Integer numLivesBefore = (Integer) myLevel.getGlobalFlag("egoLives");
  67. GameObject dummyShot = new RectObject("shot1", myLevel, 0, 0, 0, 0, 12, 12, Color.RED);
  68. GameObject dummyEgo = new EgoObject("ego1", myLevel, 0, 0, 0, 0, 5);
  69. myLevel.addObject(dummyShot);
  70. myLevel.actionIfEgoObjectIsHit(dummyShot, dummyEgo); // this is the call under test
  71. Integer numLivesAfter = (Integer) myLevel.getGlobalFlag("egoLives"); // changed?
  72. assertTrue("numLives is reduced by one ifEgoIsHit", numLivesAfter == numLivesBefore - 1); // lives is reduced by one
  73. }
  74. }