Coverage Summary for Class: Card03 (it.polimi.ingsw.Model)
| Class | Class, % | Method, % | Branch, % | Line, % |
|---|---|---|---|---|
| Card03 | 100% (1/1) | 100% (3/3) | 83,3% (10/12) | 93,8% (15/16) |
1 package it.polimi.ingsw.Model; 2 3 import it.polimi.ingsw.Exceptions.Input.InputValidationException; 4 import it.polimi.ingsw.Exceptions.Input.InvalidElementException; 5 import it.polimi.ingsw.Exceptions.Operation.FailedOperationException; 6 import it.polimi.ingsw.Misc.OptionalValue; 7 8 import java.io.Serial; 9 10 /** 11 * EFFECT: Choose an Island and resolve the Island as if 12 * Mother Nature had ended her movement there. Mother 13 * Nature will still move and the Island where she ends 14 * her movement will also be resolved. 15 */ 16 public class Card03 extends StatelessEffect { 17 @Serial 18 private static final long serialVersionUID = 105L; // convention: 1 for model, (01 -> 99) for objects 19 20 public Card03(Model ctx) { 21 super(3, 3, ctx); 22 } 23 24 /** 25 * Refer to: {@link CharacterCard#overridableCheckInput(CharacterCardInput)} for further information 26 * 27 * @param input CharacterCardInput should contain: 28 * <ul> 29 * <li>A valid island's ID </li> 30 * </ul> 31 */ 32 public OptionalValue<InputValidationException> overridableCheckInput(CharacterCardInput input) { 33 if (input.getTargetIsland().isEmpty()) { 34 return OptionalValue.of(new InvalidElementException("Target Island")); // target ti not set 35 } 36 Island ti = input.getTargetIsland().get(); 37 int tiID = ti.getId(); 38 if (tiID < 0 || tiID >= 12) { 39 return OptionalValue.of(new InvalidElementException("Target Island")); // target ti out of bounds for id 40 } 41 if (!this.context.getMutableIslandField().getMutableIslands().contains(ti)) { 42 return OptionalValue.of(new InvalidElementException("Target Island")); // target ti not in field 43 } 44 return OptionalValue.empty(); 45 } 46 47 /** 48 * Refer to: {@link CharacterCard#unsafeApplyEffect(CharacterCardInput)} for further information 49 */ 50 @Override 51 protected void unsafeApplyEffect(CharacterCardInput input) throws Exception { 52 Island ti = input.getTargetIsland().get(); 53 for (IslandGroup ig : this.context.getMutableIslandField().getMutableGroups()) { 54 if (ig.contains(ti)) { 55 context.actMotherNaturePower(ig); 56 return; 57 } 58 } 59 throw new FailedOperationException("Card03.unsafeApplyEffect", "Target Island was not contained in any IslandGroup"); 60 } 61 62 //test purpose only 63 }