20-08-2023, 10:17 AM
On ajoute la chanoinesse aux sacro-saintes célestes:
Code:
package com.calculateur.warhammer.calcul.mort.arbre.calcul;
import org.apache.commons.math3.fraction.Fraction;
import org.junit.jupiter.api.Test;
import com.calculateur.warhammer.base.exception.FunctionnalExeption;
import com.calculateur.warhammer.calcul.mort.arbre.INoeudArbre;
import com.calculateur.warhammer.calcul.mort.arbre.calcul.builder.adepta.sororitas.SacroSainteCelesteBuilderAttaque;
import com.calculateur.warhammer.calcul.mort.arbre.calcul.builder.chaos.space.marine.SpaceMarineDuChaosBuilderDefense;
import com.calculateur.warhammer.calcul.mort.arbre.data.DataCalculProbabiliteBuilder;
import com.calculateur.warhammer.calcul.mort.arbre.data.IDataCalculProbabilite;
import com.calculateur.warhammer.calcul.test.utils.FractionCheminBuilder;
import com.calculateur.warhammer.data.action.IContexteAction;
import com.calculateur.warhammer.data.enumeration.EGestionDe;
import com.calculateur.warhammer.data.enumeration.EMouvement;
import com.calculateur.warhammer.data.enumeration.ESimule;
import com.calculateur.warhammer.data.identifiable.batiment.RecordBatiment;
import com.calculateur.warhammer.data.unite.IConstituantDefenseur;
public class SacroSainteCelesteVSChaosSpaceMarineTest extends AbstractCalculArbreTest {
@Test
public void SacrosSaintes10HallebardeTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(2, 3);
Fraction probaBlesse = new Fraction(2, 3);
Fraction probaRateSauvegarde = new Fraction(2, 3);
Fraction probaAttendu = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Integer nombreReussite = 6;// On tue donc 3 marines
IDataCalculProbabilite data = getData(10, false, false, false);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(1, null, null, 1);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes10HallebardeChanoinesseTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(2, 3);
Fraction probaRateTouche = new Fraction(1, 3);
Fraction probaBlesse = new Fraction(2, 3);
Fraction probaRateSauvegarde = new Fraction(2, 3);
Fraction chemin1 = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction chemin2 = FractionCheminBuilder.getInstance().addFraction(probaRateTouche).addFraction(probaTouche)
.addFraction(probaBlesse).addFraction(probaRateSauvegarde).build();
Fraction probaAttendu = chemin1.add(chemin2);
Integer nombreReussite = 8;// On tue donc 4 marines
IDataCalculProbabilite data = getData(10, false, false, true);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(1, null, null, 2);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes10HallebardeRageSacreeTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(2, 3);
Fraction probaBlesse = new Fraction(5, 6);
Fraction probaRateSauvegarde = new Fraction(2, 3);
Fraction probaAttendu = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Integer nombreReussite = 8;// On tue donc 4 marines
IDataCalculProbabilite data = getData(10, false, true, false);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(1, null, null, 1);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes10HallebardeRageSacreeChanoinesseTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(2, 3);
Fraction probaRateTouche = new Fraction(1, 3);
Fraction probaBlesse = new Fraction(5, 6);
Fraction probaRateSauvegarde = new Fraction(2, 3);
Fraction chemin1 = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction chemin2 = FractionCheminBuilder.getInstance().addFraction(probaRateTouche).addFraction(probaTouche)
.addFraction(probaBlesse).addFraction(probaRateSauvegarde).build();
Fraction probaAttendu = chemin1.add(chemin2);
Integer nombreReussite = 10;// On tue donc 5 marines
IDataCalculProbabilite data = getData(10, false, true, true);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(1, null, null, 2);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes5HallebardeTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(5, 6);
Fraction probaBlesse = new Fraction(2, 3);
Fraction probaRateSauvegarde = new Fraction(2, 3);
Fraction probaAttendu = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Integer nombreReussite = 4;// On tue donc 2 marines
IDataCalculProbabilite data = getData(5, false, false, false);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(1, null, null, 1);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes5HallebardeChanoinesseTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(5, 6);
Fraction probaRateTouche = new Fraction(1, 6);
Fraction probaBlesse = new Fraction(2, 3);
Fraction probaRateSauvegarde = new Fraction(2, 3);
Fraction chemin1 = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction chemin2 = FractionCheminBuilder.getInstance().addFraction(probaRateTouche).addFraction(probaTouche)
.addFraction(probaBlesse).addFraction(probaRateSauvegarde).build();
Fraction probaAttendu = chemin1.add(chemin2);
Integer nombreReussite = 4;// On tue donc 2 marines
IDataCalculProbabilite data = getData(5, false, false, true);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(1, null, null, 2);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes5HallebardeRageSacreeTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(5, 6);
Fraction probaBlesse = new Fraction(5, 6);
Fraction probaRateSauvegarde = new Fraction(2, 3);
Fraction probaAttendu = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Integer nombreReussite = 4;// On tue donc 2 marines
IDataCalculProbabilite data = getData(5, false, true, false);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(1, null, null, 1);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes5HallebardeRageSacreeChanoinesseTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(5, 6);
Fraction probaRateTouche = new Fraction(1, 6);
Fraction probaBlesse = new Fraction(5, 6);
Fraction probaRateSauvegarde = new Fraction(2, 3);
Fraction chemin1 = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction chemin2 = FractionCheminBuilder.getInstance().addFraction(probaRateTouche).addFraction(probaTouche)
.addFraction(probaBlesse).addFraction(probaRateSauvegarde).build();
Fraction probaAttendu = chemin1.add(chemin2);
Integer nombreReussite = 4;// On tue donc 2 marines
IDataCalculProbabilite data = getData(5, false, true, true);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(1, null, null, 2);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes10MasseTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(2, 3);
Fraction probaBlesse = new Fraction(1, 2);
Fraction probaRateSauvegarde = new Fraction(1, 2);
Fraction probaAttendu = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Integer nombreReussite = 3;// On tue donc 3 marines
IDataCalculProbabilite data = getData(10, true, false, false);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(2, null, null, 1);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes10MasseChanoinesseTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(2, 3);
Fraction probaRateTouche = new Fraction(1, 3);
Fraction probaBlesse = new Fraction(1, 2);
Fraction probaRateSauvegarde = new Fraction(1, 2);
Fraction chemin1 = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction chemin2 = FractionCheminBuilder.getInstance().addFraction(probaRateTouche).addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction probaAttendu = chemin1.add(chemin2);
Integer nombreReussite = 3;// On tue donc 3 marines
IDataCalculProbabilite data = getData(10, true, false, true);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(2, null, null, 2);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes10MasseRageSacree() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(2, 3);
Fraction probaBlesse = new Fraction(2, 3);
Fraction probaRateSauvegarde = new Fraction(1, 2);
Fraction probaAttendu = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Integer nombreReussite = 4;// On tue donc 4 marines
IDataCalculProbabilite data = getData(10, true, true, false);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(2, null, null, 1);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes10MasseRageSacreeChanoinesse() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(2, 3);
Fraction probaRateTouche = new Fraction(1, 3);
Fraction probaBlesse = new Fraction(2, 3);
Fraction probaRateSauvegarde = new Fraction(1, 2);
Fraction chemin1 = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction chemin2 = FractionCheminBuilder.getInstance().addFraction(probaRateTouche).addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction probaAttendu = chemin1.add(chemin2);
Integer nombreReussite = 5;// On tue donc 10 marines
IDataCalculProbabilite data = getData(10, true, true, true);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(2, null, null, 2);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes5MasseTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(5, 6);
Fraction probaBlesse = new Fraction(1, 2);
Fraction probaRateSauvegarde = new Fraction(1, 2);
Fraction probaAttendu = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Integer nombreReussite = 3;// On tue donc 3 marines
IDataCalculProbabilite data = getData(5, true, false, false);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(2, null, null, 1);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes5MasseChanoinesseTest() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(5, 6);
Fraction probaRateTouche = new Fraction(1, 6);
Fraction probaBlesse = new Fraction(1, 2);
Fraction probaRateSauvegarde = new Fraction(1, 2);
Fraction chemin1 = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction chemin2 = FractionCheminBuilder.getInstance().addFraction(probaRateTouche).addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction probaAttendu = chemin1.add(chemin2);
Integer nombreReussite = 3;// On tue donc 3 marines
IDataCalculProbabilite data = getData(5, true, false, true);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(2, null, null, 2);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes5MasseRageSacree() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(5, 6);
Fraction probaBlesse = new Fraction(2, 3);
Fraction probaRateSauvegarde = new Fraction(1, 2);
Fraction probaAttendu = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Integer nombreReussite = 3;// On tue donc 3 marines
IDataCalculProbabilite data = getData(5, true, true, false);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(2, null, null, 1);
validateBlessureNormales(racine, blessures);
}
@Test
public void SacrosSaintes5MasseRageSacreeChanoinesse() throws FunctionnalExeption {
Fraction probaTouche = new Fraction(5, 6);
Fraction probaRateTouche = new Fraction(1, 6);
Fraction probaBlesse = new Fraction(2, 3);
Fraction probaRateSauvegarde = new Fraction(1, 2);
Fraction chemin1 = FractionCheminBuilder.getInstance().addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction chemin2 = FractionCheminBuilder.getInstance().addFraction(probaRateTouche).addFraction(probaTouche).addFraction(probaBlesse)
.addFraction(probaRateSauvegarde).build();
Fraction probaAttendu = chemin1.add(chemin2);
Integer nombreReussite = 3;// On tue donc 3 marines
IDataCalculProbabilite data = getData(5, true, true, true);
INoeudArbre racine = doTestStandard(data, probaAttendu, nombreReussite);
RecordBlessures blessures = new RecordBlessures(2, null, null, 2);
validateBlessureNormales(racine, blessures);
}
private IDataCalculProbabilite getData(Integer nbSoeur, boolean isMasse, boolean isRageSacree,
boolean isChanoinesse) {
IContexteAction context = getContextAction(nbSoeur);
SacroSainteCelesteBuilderAttaque builder = SacroSainteCelesteBuilderAttaque.getInstance(context, nbSoeur);
if (isMasse) {
builder.equipeMasseEnergetique();
} else {
builder.equipeHallebardeConsacree();
}
if (isRageSacree) {
builder.utiliseStratagemeRageSacree();
}
if (isChanoinesse) {
builder.ajouteChanoinesse();
}
IConstituantDefenseur defenseur = SpaceMarineDuChaosBuilderDefense.getInstance(context, 10).build();
return DataCalculProbabiliteBuilder.getInstance().addContextAction(context).addAttaquant(builder.build())
.addDefenseur(defenseur).addGestionNombreAttaque(EGestionDe.SIMULATION_OPTIMISTE)
.addGestionJetToucheBlessure(EGestionDe.SIMULATION_OPTIMISTE)
.addGestionSauvegardeDefenseur(EGestionDe.SIMULATION_OPTIMISTE).build();
}
private IContexteAction getContextAction(Integer nbSoeur) {
return ContextActionForTestProbaBuilder.getInstance().addSimule(ESimule.CORPS_A_CORPS_APRES_CHARGE)
.addNumeroTour(2).addEffectifInitialAttaquant(10).addEffectifCourantAttaquant(nbSoeur)
.addMouvementAttaquant(EMouvement.IMMOBILE).addBatimentAttaquant(new RecordBatiment(false, false))
.addEffectifCourantDefenseur(10).addMouvementDefenseur(EMouvement.IMMOBILE)
.addBatimentDefenseur(new RecordBatiment(false, false)).addDistanceEntreBelligerant(0.0).build();
}
}