/** * ************************************************************************* Vrátí instanci * testovací třídy schopnou testovat instance zadané třídy hry. * * @param gameClass Třída testované hry * @return Instance schopná testovat zadanou třídu hry a její hru */ static Crate fromGameClass(Class<? extends IGame> gameClass) { Class<? extends IGame> gc = gameClass; IGame gm = GameTClassTest.getInstanceOfGame(gc); AScenarioManager sm = gm.getScenarioManager(); return new Crate(sm, gc, gm); }
/** * ************************************************************************* 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); }
/** * ************************************************************************* 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()); } }