Coverage Summary for Class: Cloud (it.polimi.ingsw.Model)

Class Class, % Method, % Branch, % Line, %
Cloud 100% (1/1) 100% (5/5) 100% (4/4) 100% (13/13)


1 package it.polimi.ingsw.Model; 2  3 import it.polimi.ingsw.Exceptions.Container.EmptyContainerException; 4 import it.polimi.ingsw.Exceptions.Container.FullContainerException; 5 import it.polimi.ingsw.Model.Enums.PawnColour; 6  7 import java.io.Serial; 8 import java.io.Serializable; 9 import java.util.ArrayList; 10 import java.util.Collection; 11 import java.util.List; 12  13 /** 14  * The Cloud class is used to replenish pawns in the entrance fields of the {@link PlayerBoard#getEntranceStudents()} 15  */ 16 public class Cloud implements Serializable { 17  @Serial 18  private static final long serialVersionUID = 118L; // convention: 1 for model, (01 -> 99) for objects 19  20  private final int id; 21  private ArrayList<PawnColour> contents; 22  23  /** 24  * Construct a Cloud, assigning an ID to it. 25  * 26  * @param id if the cloud is in an array, the id will be the index of the array at which the cloud is located 27  */ 28  public Cloud(int id) { 29  this.id = id; 30  contents = new ArrayList<>(3); 31  } 32  33  /** 34  * The ID of the cloud is the index of the array in which the Cloud is stored 35  * 36  * @return the ID of the cloud 37  */ 38  public int getId() { 39  return id; 40  } 41  42  /** 43  * A Cloud will need to be emptied out, eventually. This method returns a {@link List} of {@link PawnColour} and empties the Cloud. 44  * 45  * @return a {@link List} of {@link PawnColour}s that were contained in the Cloud 46  * @throws EmptyContainerException if the Cloud being emptied was already empty, this exception is thrown. 47  */ 48  public List<PawnColour> extractContents() throws EmptyContainerException { 49  if (contents.size() > 0) { 50  ArrayList<PawnColour> toReturn = new ArrayList<>(this.contents); 51  this.contents = new ArrayList<>(3); 52  return toReturn; 53  } else { 54  throw new EmptyContainerException("Cloud"); 55  } 56  } 57  58  /** 59  * Cloud contents may be inspected without emptying the tile. 60  * 61  * @return an {@link java.util.List#copyOf(Collection)} of the contents of the Cloud 62  */ 63  public List<PawnColour> getContents() { 64  return List.copyOf(contents); 65  } 66  67  /** 68  * A cloud may need to be filled from time to time. this method is used for that 69  * 70  * @param colours a {@link List} of {@link PawnColour}s to put in the Cloud tile 71  * @throws FullContainerException if the Cloud being filled already had some contents, this exception will be thrown 72  */ 73  public void fill(List<PawnColour> colours) throws FullContainerException { 74  if (contents.isEmpty()) { 75  contents.addAll(colours); 76  } else { 77  throw new FullContainerException("Cloud"); 78  } 79  } 80 } 81