예제 #1
0
파일: Triumvirate.java 프로젝트: tynap/hra
 /**
  * ************************************************************************* Vrátí instanci
  * testovací třídy schopnou testovat zadanou hru.
  *
  * @param game Testovaná hra
  * @return Instance schopná testovat zadanou hru
  */
 static Crate fromGame(IGame game) {
   IGame gm = game;
   Class<? extends IGame> gc = game.getClass();
   AScenarioManager sm = game.getScenarioManager();
   return new Crate(sm, gc, gm);
 }
예제 #2
0
파일: Triumvirate.java 프로젝트: tynap/hra
  /**
   * ************************************************************************* Ověří, že zadané tři
   * parametry si navzájem odpovídají, tj. že:
   *
   * <ul>
   *   <li>je zadán správce scénářů,
   *   <li>hra a třída hry musejí být zadány obě nebo žádná,
   *   <li>zadaná hra je instancí zadané třídy hry,
   *   <li>zadaná třída hry vrací zadanou hru, která je jedináčkem,
   *   <li>zadaná hra vrací zadaného správce scénářů,
   *   <li>správce scénářů hlásí napojení na zadanou třídu hry,
   *   <li>správce scénářů hlásí napojení na zadanou instanci hry,
   *   <li>jméno a xname autora hry musí být totožné se jménem a xname autor spráce scénářů,
   * </ul>
   *
   * @param manager Správce scénářů prověřované aplikace
   * @param gameClass Třída testované hry
   * @param game Testovaná instance
   * @throws IllegalArgumentException Nevyhovují-li parametry podmínkám
   */
  static void verifyTriumvirate(
      AScenarioManager manager, Class<? extends IGame> gameClass, IGame game)
      throws IllegalArgumentException {
    if (manager == null) {
      throw new IllegalArgumentException("\nNebyl zadán správce scénářů");
    }
    if ((gameClass == null)) {
      if (game != null) {
        throw new IllegalArgumentException("\nByla zadána instance hry, ale ne třída hry");
      }
      return; // ==========>
    }

    // gameClass != null
    if (game == null) {
      throw new IllegalArgumentException("\nByla zadána třída hry, ale ne instance hry");
    }
    if (game.getClass() != gameClass) {
      throw new IllegalArgumentException(
          "\nZadaná třída hry se neshoduje s třídou zadané hry"
              + "\n   Zadaná třída hry: "
              + gameClass
              + "\n   Třída zadané hry: "
              + game.getClass());
    }
    if (game != GameTClassTest.getInstanceOfGame(gameClass)) {
      throw new IllegalArgumentException(
          "\nZadaná hra není hrou, kterou vrací tovární metoda zadané"
              + "třídy jako svého jedináčka\n   Třída: "
              + gameClass);
    }
    Class<? extends IGame> managerGameClass = manager.getGameClass();
    if (gameClass != managerGameClass) {
      throw new IllegalArgumentException(
          "\nZadaná třída hry se neshoduje s třídou příslušnou "
              + "k zadanému správce scénářů:"
              + "\n   Třída, k níž se hlásí scénář: "
              + managerGameClass
              + "\n   Zadaná třída hry:             "
              + gameClass);
    }
    IGame mGame = manager.getGame();
    if (game != mGame) {
      throw new IllegalArgumentException(
          "\nInstance hry vrácená správcem scénářů není totožná "
              + "se zadanou instancí hry: "
              + gameClass);
    }
    if (!(manager.getAuthorName().equals(game.getAuthorName())
        && (manager.getAuthorID().equals(game.getAuthorID())))) {
      throw new IllegalArgumentException(
          "\nAutor hry není totožný s autorem správce scénářů:"
              + "\n   Autoh správce scénářů: "
              + manager.getAuthorID()
              + " - "
              + manager.getAuthorName()
              + "\n   Autoh hry:             "
              + game.getAuthorID()
              + " - "
              + game.getAuthorName());
    }
  }