import org.junit.jupiter.api.Test;
import resources.Algo;
import static controls.ConstantMethods.printAlgoState;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class MainTest {
@Test
void test(){
Algo algo = new Algo();
algo.setDeck(0, 1, 2, 3, 4, 5, 6, 7);
algo.distributeHands();
printAlgoState(algo);
//Aはカードを1枚引き、Bの0番目のカードに対して「1」を宣言する。
algo.setTargetA(0);
algo.setGuessA(3);
algo.drawAndAttackA();
//アタックは失敗する。
assertEquals(false, algo.getResultByDrawingA().getKey());
assertEquals(false, algo.getLoseA());
assertEquals(false, algo.getLoseB());
//Bはカードを1枚引き、Aの2番目のカードに対して「2」を宣言する。
algo.setTargetB(2);
algo.setGuessB(2);
algo.drawAndAttackB();
//アタックは失敗する。
assertEquals(false, algo.getResultByDrawingB().getKey());
assertEquals(false, algo.getLoseA());
assertEquals(false, algo.getLoseB());
//Aはカードを1枚引き、Bの1番目のカードに対して「3」を宣言する。
algo.setTargetA(1);
algo.setGuessA(3);
algo.drawAndAttackA();
//アタックは成功する。
assertEquals(true, algo.getResultByDrawingA().getKey());
assertEquals(false, algo.getLoseA());
assertEquals(false, algo.getLoseB());
//Bはカードを1枚引き、Aの0番目のカードに対して「2」を宣言する。
algo.setTargetB(0);
algo.setGuessB(2);
algo.drawAndAttackB();
//アタックは失敗する。
assertEquals(false, algo.getResultByDrawingB().getKey());
assertEquals(false, algo.getLoseA());
assertEquals(false, algo.getLoseB());
//Aは手札の0番目のカードアタックに使用し、Bの0番目のカードに対して「1」を宣言する。
algo.setAttackerA(0);
algo.setTargetA(0);
algo.setGuessA(1);
algo.selectAndAttackA();
//アタックは成功する。
assertEquals(true, algo.getResultBySelectingA().getKey());
//Bの手札が全て表になったので、Bは敗北する。
assertEquals(false, algo.getLoseA());
assertEquals(true, algo.getLoseB());
printAlgoState(algo);
}
}