Coverage Summary for Class: Order2 (it.polimi.ingsw.gc14.Model.Orders)

Class Class, % Method, % Branch, % Line, %
Order2 100% (1/1) 100% (3/3) 87.5% (14/16) 95.7% (22/23)


 package it.polimi.ingsw.gc14.Model.Orders;
 
 import it.polimi.ingsw.gc14.Model.OrderLogicCard;
 import it.polimi.ingsw.gc14.Model.Player;
 import it.polimi.ingsw.gc14.View.TUI.AsciiTable;
 import it.polimi.ingsw.gc14.View.TUI.BorderStyle;
 
 import java.util.*;
 
 /**
  * Represents the order logic card used in a two-player game.
  *
  * <p>This class defines the specific turn-order behavior for games with
  * two players.
  */
 public class Order2 extends OrderLogicCard  {
 
     /**
      * Creates an Order2 logic card for a two-player game.
      *
      * @param players the list of players associated with this order card.
      * @throws NoSuchElementException if the number of players is not equal to 2.
      */
     public Order2(ArrayList<Player> players) throws NoSuchElementException {
         super(players);
         if(players.size()!=2)
             throw new NoSuchElementException();
     }
 
     /**
      * Applies the effect associated with the specified position index for the given player.
      * <p>If {@code index == 0}, the player gains 1 Food and the building effect is applied.
      * <p>If {@code index == 1}, the player tries to remove 1 Food; if the player cannot pay it,
      * the player loses 2 Prestige.
      *
      * @param player the player to whom the effect is applied.
      * @param index the position index of the effect to apply.
      * @throws IndexOutOfBoundsException if {@code index < 0} or {@code index >= 2}.
      */
     @Override
     protected void effect(Player player,int index) throws IndexOutOfBoundsException
     {
         if(index >= 2 || index < 0)
         {
             throw new IndexOutOfBoundsException("index out of bounds");
         }
         if(index==0)
         {
             player.addFood(1);
             buildingEffect(player);
             return;
         }
         if (!player.removeFood(1)) {
             player.removePrestige(2);
         }
     }
 
     /**
      * Creates the TURN ORDER box of the TUI.
      * @return the string containing the box
      */
     @Override
     public String toString()
     {
         var table = new AsciiTable(BorderStyle.ROUNDED, 2);
         List<String> stringUp=new ArrayList<>();
         for(int i=0;i<2;i++)
         {
             try {
                 if(playerList.get(i).isPlayed())
                     stringUp.add("");
                 else
                     stringUp.add(playerList.get(i).getPlayer().getTotem() != null ? playerList.get(i).getPlayer().getTotem().toString() : playerList.get(i).getPlayer().getUserName());
             }
             catch (IndexOutOfBoundsException e) {
                 stringUp.add("");
             }
         }
         table.addRow(stringUp);
 
         List<String> stringList=new ArrayList<>();
         stringList.add("+1\uD83C\uDF56");
         stringList.add("-1\uD83C\uDF56/-2\uD83C\uDFC5");
         table.addRow(stringList);
         return table.build() + "\n";
     }
 }