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.

82 lines
3.0 KiB

  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 base.BuggyGame;
  8. import gameobjects.EgoObject;
  9. import gameobjects.GameObject;
  10. import gameobjects.RectObject;
  11. /**
  12. * Tests {@link SpaceInvadersLevel} for
  13. * <ol>
  14. * <li>calcEnemySpeedX() returns the same value as constant SpaceInvadersLevel.ENEMYSPEEDX
  15. * <li>calcEnemySpeedY() returns the same value as constant SpaceInvadersLevel.ENEMYSPEEDY
  16. * <li>calcNrEnemies() returns the same value as constant SpaceInvadersLevel.NR_ENEMIES
  17. * <li>actionIfEnemyIsHit() adds 200 points to score
  18. * <li>actionIfEgoObjectIsHit() reduces number of lives (egoLives)
  19. * </ol>
  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", myLevel.calcEnemySpeedX() == SpaceInvadersLevel.ENEMYSPEEDX);
  39. }
  40. @Test
  41. void testCalcEnemySpeedY() {
  42. assertTrue("EnemySpeedY is as in SpaceInvadersLevel defined", myLevel.calcEnemySpeedY() == SpaceInvadersLevel.ENEMYSPEEDY);
  43. }
  44. @Test
  45. void testCalcNrEnemies() {
  46. assertTrue("NrOfEnemies is as in SpaceInvadersLevel defined", myLevel.calcNrEnemies() == SpaceInvadersLevel.NR_ENEMIES);
  47. }
  48. @Test
  49. void testActionIfEnemyIsHitPointsUp() {
  50. Integer numPointsBefore = (Integer)myLevel.getGlobalFlag("points");
  51. GameObject dummyShot = new RectObject("shot1", myLevel, 0,0,0,0, 12, 12, Color.WHITE);
  52. GameObject dummyEnemy = new RectObject("ego1", myLevel, 0,0,0,0, 12, 12, Color.BLACK);
  53. myLevel.addObject(dummyShot);
  54. myLevel.addObject(dummyEnemy);
  55. myLevel.actionIfEnemyIsHit(dummyEnemy, dummyShot);; // this is the call under test
  56. Integer numPointsAfter = (Integer)myLevel.getGlobalFlag("points"); // changed?
  57. assertTrue("numPoints is up +200 after EnemyIsHit", numPointsAfter == numPointsBefore + 200); // points are set +200 , check.
  58. }
  59. @Test
  60. void testActionIfEgoObjectIsHitLivesDown() {
  61. Integer numLivesBefore = (Integer)myLevel.getGlobalFlag("egoLives");
  62. GameObject dummyShot = new RectObject("shot1", myLevel, 0,0,0,0, 12, 12, Color.RED);
  63. GameObject dummyEgo = new EgoObject("ego1", myLevel, 0,0,0,0, 5);
  64. myLevel.addObject(dummyShot);
  65. myLevel.actionIfEgoObjectIsHit(dummyShot, dummyEgo); // this is the call under test
  66. Integer numLivesAfter = (Integer)myLevel.getGlobalFlag("egoLives"); // changed?
  67. assertTrue("numLives is reduced by one ifEgoIsHit", numLivesAfter == numLivesBefore - 1); // lives is reduced by one
  68. }
  69. }