Coverage Summary for Class: Card12 (it.polimi.ingsw.Model)
| Class | Class, % | Method, % | Branch, % | Line, % |
|---|---|---|---|---|
| Card12 | 100% (1/1) | 100% (3/3) | 100% (8/8) | 100% (11/11) |
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.Misc.OptionalValue; 6 7 import java.io.Serial; 8 9 /** 10 * EFFECT: Choose a type of Student: every player 11 * (including yourself) must return 3 Students of that type 12 * from their Dining Room to the bag. If any player has 13 * fewer than 3 Students of that type, return as many 14 * Students as they have. 15 */ 16 public class Card12 extends StatelessEffect { 17 @Serial 18 private static final long serialVersionUID = 114L; // convention: 1 for model, (01 -> 99) for objects 19 20 public Card12(Model ctx) { 21 super(12, 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 PawnColour</li> 30 * </ul> 31 */ 32 public OptionalValue<InputValidationException> overridableCheckInput(CharacterCardInput input) { 33 if (input.getTargetPawn().isEmpty()) { 34 return OptionalValue.of(new InvalidElementException("Target Pawn Colour")); 35 } 36 return OptionalValue.empty(); 37 } 38 39 /** 40 * Refer to: {@link CharacterCard#unsafeApplyEffect(CharacterCardInput)} for further information 41 */ 42 @Override 43 protected void unsafeApplyEffect(CharacterCardInput input) throws Exception { 44 for (PlayerBoard p : this.context.getMutablePlayerBoards()) { 45 //If any player has fewer than 3 Students of that type, return as many Students as they have. 46 int amountToRemove = Math.min(3, p.getDiningRoomCount(input.getTargetPawn().get())); 47 48 for (int i = 0; i < amountToRemove; i++) { 49 this.context.removeStudentFromDiningRoom(input.getTargetPawn().get(), p); 50 } 51 52 for (int i = 0; i < amountToRemove; i++) { 53 this.context.getMutableStudentBag().appendAndShuffle(input.getTargetPawn().get()); 54 } 55 } 56 } 57 58 //test purpose only 59 }