mirror of
https://github.com/kmitresse/Cards-Rush.git
synced 2026-05-13 17:11:49 +00:00
end: devWeb - ending project
This commit is contained in:
@@ -134,7 +134,6 @@ public class ForgottenPasswordBean implements Serializable {
|
||||
// Envoi du message
|
||||
Transport.send(message);
|
||||
|
||||
System.out.println("E-mail envoyé avec succès à : " + email);
|
||||
} catch (MessagingException e) {
|
||||
throw new RuntimeException("Erreur lors de l'envoi de l'e-mail", e);
|
||||
}
|
||||
|
||||
@@ -56,6 +56,9 @@ public class Player implements Serializable {
|
||||
@Column(name = "right_click_count")
|
||||
private int rightClickCount;
|
||||
|
||||
@Transient
|
||||
private int partialRightClickCount;
|
||||
|
||||
@Column(name = "rapid_click_count")
|
||||
private int rapidClickCount;
|
||||
|
||||
@@ -68,6 +71,7 @@ public class Player implements Serializable {
|
||||
@Transient
|
||||
private ClickChoice currentClick = null;
|
||||
|
||||
|
||||
/**
|
||||
* Constructeur par défaut
|
||||
*/
|
||||
@@ -85,6 +89,7 @@ public class Player implements Serializable {
|
||||
this.rapidClickCount = 0;
|
||||
this.deck = new Deck(game.getNbColors(), game.getNbValuesPerColor());
|
||||
this.deck.shuffle();
|
||||
this.partialRightClickCount = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -103,6 +108,7 @@ public class Player implements Serializable {
|
||||
this.rapidClickCount = 0;
|
||||
this.deck = new Deck(game.getNbColors(), game.getNbValuesPerColor());
|
||||
this.deck.shuffle();
|
||||
this.partialRightClickCount = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -125,6 +131,7 @@ public class Player implements Serializable {
|
||||
this.clickCount = clickCount;
|
||||
this.rightClickCount = rightClickCount;
|
||||
this.rapidClickCount = rapidClickCount;
|
||||
this.partialRightClickCount = 0;
|
||||
|
||||
this.deck = new Deck(game.getNbColors(), game.getNbValuesPerColor());
|
||||
this.deck.shuffle();
|
||||
@@ -273,6 +280,20 @@ public class Player implements Serializable {
|
||||
return rapidClickCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return le nombre de clics partiels corrects
|
||||
*/
|
||||
public int getPartialRightClickCount() {
|
||||
return partialRightClickCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Incrémente de 1 le nombre de clics partielement corrects
|
||||
*/
|
||||
public void incrementPartialRightClickCount() {
|
||||
partialRightClickCount++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Modifie le nombre de clics rapides
|
||||
*
|
||||
|
||||
@@ -351,7 +351,6 @@ public class User implements Serializable {
|
||||
int maxScore = 0;
|
||||
int totalScore = 0;
|
||||
for (Player p : playedGames) {
|
||||
System.out.println("Score max : " + p.getScoreMax() + " Score : " + p.getScore());
|
||||
maxScore += p.getScoreMax();
|
||||
totalScore += p.getScore();
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ public class SimplePlayer {
|
||||
private final boolean winner;
|
||||
private final int clickCount;
|
||||
private final int rightClickCount;
|
||||
private final int partialRightClickCount;
|
||||
private final int rapidClickCount;
|
||||
private final Card currentCard;
|
||||
|
||||
@@ -20,8 +21,8 @@ public class SimplePlayer {
|
||||
this.clickCount = player.getClickCount();
|
||||
this.rightClickCount = player.getRightClickCount();
|
||||
this.rapidClickCount = player.getRapidClickCount();
|
||||
|
||||
this.currentCard = player.getDeck().getCards().get(currentRound % player.getDeck().getCards().size());
|
||||
this.partialRightClickCount = player.getPartialRightClickCount();
|
||||
this.currentCard = player.getDeck().getCards().get((partialRightClickCount+rightClickCount) % player.getDeck().getCards().size());
|
||||
}
|
||||
|
||||
public SimplePlayer(Player player) {
|
||||
@@ -30,6 +31,7 @@ public class SimplePlayer {
|
||||
this.winner = player.isWinner();
|
||||
this.clickCount = player.getClickCount();
|
||||
this.rightClickCount = player.getRightClickCount();
|
||||
this.partialRightClickCount = player.getPartialRightClickCount();
|
||||
this.rapidClickCount = player.getRapidClickCount();
|
||||
this.currentCard = null;
|
||||
}
|
||||
@@ -54,6 +56,10 @@ public class SimplePlayer {
|
||||
return clickCount;
|
||||
}
|
||||
|
||||
public int getPartialRightClickCount() {
|
||||
return partialRightClickCount;
|
||||
}
|
||||
|
||||
public int getRightClickCount() {
|
||||
return rightClickCount;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ public class SimpleUser {
|
||||
private final int nbWin;
|
||||
private final double winRate;
|
||||
private final double scoreRate;
|
||||
|
||||
private final double rigthClickPercentRate;
|
||||
private final double rapidClickPercentRate;
|
||||
|
||||
|
||||
@@ -44,7 +44,6 @@ public class ProfileServlet extends HttpServlet {
|
||||
userDAO = new Game_JPA_DAO_Factory().getDAOUser();
|
||||
User user = userDAO.findById(usersession.getId().intValue());
|
||||
for(Player p : user.getPlayedGames()){
|
||||
System.out.println("Partie jouée le " + p.getGame().getCreatedAt().toLocaleString());
|
||||
}
|
||||
request.getSession().setAttribute("user", user);
|
||||
request.getRequestDispatcher("/WEB-INF/pages/profile.jsp").forward(request, response);
|
||||
|
||||
@@ -119,7 +119,7 @@ public class GameWS {
|
||||
player.incrementClickCount();
|
||||
|
||||
// Compteur de clics rapides
|
||||
if (gameClickCount == 1) {
|
||||
if (gameClickCount == 1 && choice != ClickChoice.TIMER_END) {
|
||||
player.incrementRapidClickCount();
|
||||
player.addToScore(1);
|
||||
};
|
||||
@@ -141,6 +141,7 @@ public class GameWS {
|
||||
player.incrementRightClickCount();
|
||||
player.setScore(playerScore + 2);
|
||||
} else {
|
||||
player.incrementPartialRightClickCount();
|
||||
player.setScore(playerScore + 1);
|
||||
}
|
||||
} else {
|
||||
@@ -153,6 +154,7 @@ public class GameWS {
|
||||
player.incrementRightClickCount();
|
||||
player.setScore(playerScore + 2);
|
||||
} else {
|
||||
player.incrementPartialRightClickCount();
|
||||
player.setScore(playerScore + 1);
|
||||
}
|
||||
} else {
|
||||
@@ -180,11 +182,13 @@ public class GameWS {
|
||||
player.incrementRightClickCount();
|
||||
player.setScore(playerScore + 2);
|
||||
} else {
|
||||
|
||||
player.setScore(playerScore - 1);
|
||||
}
|
||||
}
|
||||
case COLOR -> {
|
||||
if ((nbSameCard >= nbSameColor) && (nbSameCard >= nbSameValue) && (nbSameCard >= nbNone)) {
|
||||
player.incrementPartialRightClickCount();
|
||||
player.setScore(playerScore + 1);
|
||||
} else if ((nbSameColor > nbSameCard) && (nbSameColor >= nbSameValue) && (nbSameColor >= nbNone)) {
|
||||
player.incrementRightClickCount();
|
||||
@@ -195,6 +199,7 @@ public class GameWS {
|
||||
}
|
||||
case VALUE -> {
|
||||
if ((nbSameCard >= nbSameColor) && (nbSameCard >= nbSameValue) && (nbSameCard >= nbNone)) {
|
||||
player.incrementPartialRightClickCount();
|
||||
player.setScore(playerScore + 1);
|
||||
} else if ((nbSameValue > nbSameCard) && (nbSameValue > nbSameColor) && (nbSameValue >= nbNone)) {
|
||||
player.incrementRightClickCount();
|
||||
@@ -218,9 +223,6 @@ public class GameWS {
|
||||
// Diffuser le score du joueur
|
||||
broadcast(new Message("updatePlayer", gson.toJson(new SimplePlayer(player))).toJson());
|
||||
|
||||
System.out.println(gameClickCount + " / " + games.get(game).size());
|
||||
|
||||
|
||||
// Si tous les joueurs ont cliqué
|
||||
if (gameClickCount >= games.get(game).size()) {
|
||||
// Stopper le timer
|
||||
@@ -261,7 +263,6 @@ public class GameWS {
|
||||
for (Player p : games.get(game)) {
|
||||
PlayerBean playerBean = new PlayerBean(p);
|
||||
if (playerBean.validate()) System.out.println("Player " + p.getUser().getUsername() + " sauvegardé en base de données");
|
||||
else System.out.println();
|
||||
}
|
||||
em.getTransaction().commit();
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
<div class="buttons is-flex-direction-column">
|
||||
<p id="round" class="title has-text-white"></p>
|
||||
<p id="timer" class="subtitle has-text-white"></p>
|
||||
<button class="button is-fullwidth" data-value="COLOR_VALUE">Même couleur et valeur</button>
|
||||
<button class="button is-fullwidth" data-value="COLOR_VALUE">Même carte</button>
|
||||
<button class="button is-fullwidth" data-value="COLOR">Même couleur</button>
|
||||
<button class="button is-fullwidth" data-value="VALUE">Même valeur</button>
|
||||
<button class="button is-fullwidth" data-value="NONE">Aucun</button>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<img class="py-5" src="${pageContext.request.contextPath}/static/img/CardsRushLogoBlack.svg"/>
|
||||
</div>
|
||||
<p>
|
||||
Card Rush est un jeu de rapidité multijoueur en ligne.<br>
|
||||
Chaque joueur possède un jeu de carte identique mélangé aléatoirement. Au centre du plateau un jeu de carte
|
||||
Card Rush est un jeu de rapidité multijoueurs en ligne.<br>
|
||||
Chaque joueur possède un jeu de cartes identique mais mélangé aléatoirement. Au centre du plateau un jeu de carte
|
||||
similaire.<br>
|
||||
Votre objectif si vous l'acceptez, identifier les similitudes entre votre main et celle du plateau le plus
|
||||
rapidement possible.
|
||||
@@ -22,15 +22,15 @@
|
||||
</p>
|
||||
<ul>
|
||||
<li>Les cartes comparées sont identiques</li>
|
||||
<li>Les cartes comparées ont la même couleur mais pas la même valeur</li>
|
||||
<li>Les cartes comparées ont la même valeur mais pas la même couleur</li>
|
||||
<li>Les cartes comparées ont la même couleur, mais pas la même valeur</li>
|
||||
<li>Les cartes comparées ont la même valeur, mais pas la même couleur</li>
|
||||
<li>Les cartes comparées sont totalement différentes</li>
|
||||
</ul>
|
||||
<h2>Modes de difficultés</h2>
|
||||
<p>Deux modes de difficultés s'offrent à vous :</p>
|
||||
<ul>
|
||||
<li><p>Le mode <span class="tag is-light is-medium is-primary">facile</span>: Vous ne devez effectuer des
|
||||
comparaisons uniquement entre voter main et celle du plateau.</p>
|
||||
<li><p>Le mode <span class="tag is-light is-medium is-primary">facile</span>: Vous ne devez uniquement effectuer des
|
||||
comparaisons entre votre main et celle du plateau.</p>
|
||||
<p>
|
||||
Exemple : <br>
|
||||
Vous : 4 de pique <br>
|
||||
@@ -40,10 +40,10 @@
|
||||
</li>
|
||||
<li><p>
|
||||
Le mode <span class="tag is-light is-medium is-primary">difficile</span>: Vous devez effectuer des
|
||||
comparaisons avec les mains de chaque joueur et opter pour la réponse correspondant aux plus grand nombre
|
||||
de joueur.<br>
|
||||
comparaisons entre le plateau et les mains de chaque joueur (vous compris) et opter pour la réponse correspondant aux plus grand nombre
|
||||
de joueurs.<br>
|
||||
Attention : Une priorité est définie pour les réponses: </p>
|
||||
<p class="has-text-weight-bold is-centered"> "Même carte" > "Même Couleur" > "Même Valeur" > "Aucun"</p>
|
||||
<p class="has-text-weight-bold is-centered"> "Même carte" > "Même couleur" > "Même valeur" > "Aucun"</p>
|
||||
<p>
|
||||
Si deux réponses sont possibles car elles représentent le même nombre de joueurs, la réponse la plus prioritaire est définie comme correcte.
|
||||
</p>
|
||||
@@ -66,6 +66,7 @@
|
||||
</li>
|
||||
<li>Aucune réponse : <span class="tag is-light">+0pt</span></li>
|
||||
<li>Mauvaise réponse : <span class="tag is-danger">-1pt</span></li>
|
||||
<li>Bonus de rapidité : <span class="tag is-success">+1pt</span></li>
|
||||
</ul>
|
||||
<h2>Vainqueur de la partie</h2>
|
||||
<p>Le vainqueur d'une partie est celui qui aura accumulé le plus de points, en cas d'égalité, le joueur le plus rapide est déclaré vainqueur.<br>
|
||||
|
||||
@@ -48,8 +48,6 @@
|
||||
})
|
||||
.then(() => window.location.href = "${pageContext.request.contextPath}/lobby")
|
||||
.catch((error) => {
|
||||
console.log(error)
|
||||
|
||||
// Animations des champs
|
||||
inputs.forEach(input => {
|
||||
input.classList.add("is-danger");
|
||||
|
||||
@@ -98,8 +98,6 @@
|
||||
tooltip.innerHTML = input.value
|
||||
nbRound.max = nbValues.value * nbColors.value;
|
||||
nbRound.value = parseInt(nbRound.value) > parseInt(nbRound.max) ? nbRound.max : nbRoundtmp;
|
||||
console.log("newValue : " + nbRound.value)
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -98,7 +98,6 @@
|
||||
changePassword.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
passwordFields.forEach(field => {
|
||||
console.log(field)
|
||||
field.style.display = "block";
|
||||
});
|
||||
});
|
||||
@@ -122,7 +121,6 @@
|
||||
const url = new URL(action);
|
||||
const formData = new FormData(profileForm);
|
||||
for (const [key, value] of formData.entries()) {
|
||||
console.log(key, value);
|
||||
url.searchParams.append(key, value);
|
||||
}
|
||||
url.searchParams.append("id", ${user.id})
|
||||
@@ -130,7 +128,6 @@
|
||||
fetch(url, {headers: {"Content-Type": "application/json"}, method})
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
console.log(data)
|
||||
if (data.code !== 200) throw new Error(data.message);
|
||||
onSuccess()
|
||||
})
|
||||
@@ -163,7 +160,6 @@
|
||||
notification.appendChild(notificationTitle);
|
||||
notification.appendChild(notificationMessage);
|
||||
document.body.appendChild(notification);
|
||||
console.log("je suis bien dans la fonction mais la notification ne s'affiche pas")
|
||||
setTimeout(() => {
|
||||
notification.remove()
|
||||
inputs.forEach(input => input.classList.remove("is-danger"));
|
||||
@@ -193,7 +189,6 @@
|
||||
notification.appendChild(notificationTitle);
|
||||
notification.appendChild(notificationMessage);
|
||||
document.body.appendChild(notification);
|
||||
console.log("je suis bien dans la fonction mais la notification ne s'affiche pas")
|
||||
|
||||
setTimeout(() => notification.remove(), 5010);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ export default class Message {
|
||||
const message = JSON.parse(rawMessage);
|
||||
message.data = JSON.parse(message.data);
|
||||
|
||||
console.log(message);
|
||||
|
||||
this.type = message.type;
|
||||
this.data = message.data;
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
package uppa.project.dao;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Objects;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.dao.AbstractDAOFactory;
|
||||
import uppa.project.database.dao.PersistenceKind;
|
||||
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
class AbstractDAOFactoryTest {
|
||||
|
||||
@BeforeAll
|
||||
static void setUp() {
|
||||
EntityManagerProvider.setPersitenceUnitName("test");
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getDAOFactory() {
|
||||
// If the method throws an exception, make sure the database is running
|
||||
assertDoesNotThrow(() -> AbstractDAOFactory.getDAOFactory(PersistenceKind.JPA));
|
||||
|
||||
// Test if the method returns the correct DAO factory
|
||||
HashMap<PersistenceKind, Class> factories = new HashMap<>() {{
|
||||
put(PersistenceKind.JPA, Game_JPA_DAO_Factory.class);
|
||||
}};
|
||||
|
||||
for (PersistenceKind kind : PersistenceKind.values()) {
|
||||
assertEquals(
|
||||
factories.get(kind),
|
||||
Objects.requireNonNull(AbstractDAOFactory.getDAOFactory(kind)).getClass()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,161 +0,0 @@
|
||||
package uppa.project.dao.jpa;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.dao.jpa.DAO_JPA_Game;
|
||||
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.database.pojo.Game;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class DAO_JPA_GameTest {
|
||||
|
||||
static EntityManager entityManager;
|
||||
static DAO<Game> dao;
|
||||
|
||||
static Game[] fixture;
|
||||
|
||||
@BeforeAll
|
||||
static void setUp() throws DAOException {
|
||||
EntityManagerProvider.setPersitenceUnitName("test");
|
||||
entityManager = EntityManagerProvider.getInstance();
|
||||
dao = new Game_JPA_DAO_Factory().getDAOGame();
|
||||
|
||||
assertEquals(dao.getClass(), DAO_JPA_Game.class);
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
void clean() {
|
||||
fixture = new Game[] {
|
||||
new Game(
|
||||
new BigDecimal(1),
|
||||
new Date(100, Calendar.NOVEMBER, 1),
|
||||
Game.Difficulty.EASY,
|
||||
10,
|
||||
4,
|
||||
2,
|
||||
4,
|
||||
new ArrayList<>()
|
||||
),
|
||||
new Game(
|
||||
new BigDecimal(2),
|
||||
new Date(100, Calendar.DECEMBER, 1),
|
||||
Game.Difficulty.HARD,
|
||||
10,
|
||||
3,
|
||||
2,
|
||||
4,
|
||||
new ArrayList<>()
|
||||
),
|
||||
};
|
||||
entityManager.getTransaction().begin();
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void rollback() {
|
||||
entityManager.getTransaction().rollback();
|
||||
}
|
||||
|
||||
@Test
|
||||
void findById() throws DAOException {
|
||||
// Create the game
|
||||
dao.create(fixture[0]);
|
||||
|
||||
// Retrieve the fixture
|
||||
Game game = dao.findById(fixture[0].getId().intValue());
|
||||
|
||||
// Check if the retrieved fixture is the same as the created fixture
|
||||
assertEquals(game.getCreatedAt(), fixture[0].getCreatedAt());
|
||||
assertEquals(game.getDifficulty(), fixture[0].getDifficulty());
|
||||
assertEquals(game.getNbColors(), fixture[0].getNbColors());
|
||||
assertEquals(game.getNbValuesPerColor(), fixture[0].getNbValuesPerColor());
|
||||
assertEquals(game.getNbRounds(), fixture[0].getNbRounds());
|
||||
}
|
||||
|
||||
@Test
|
||||
void findByField() throws DAOException {
|
||||
// Create games
|
||||
for (Game game : fixture) {
|
||||
dao.create(game);
|
||||
System.out.println(game.getNbRounds());
|
||||
}
|
||||
|
||||
// Retrieve the fixture by nbRounds
|
||||
Game[] games = dao.findByField("nbRounds", 4);
|
||||
assertEquals(1, games.length);
|
||||
|
||||
// Check if the retrieved fixture is the same as the created fixture
|
||||
assertEquals(games[0].getCreatedAt(), fixture[0].getCreatedAt());
|
||||
assertEquals(games[0].getDifficulty(), fixture[0].getDifficulty());
|
||||
assertEquals(games[0].getNbColors(), fixture[0].getNbColors());
|
||||
assertEquals(games[0].getNbValuesPerColor(), fixture[0].getNbValuesPerColor());
|
||||
assertEquals(games[0].getNbRounds(), fixture[0].getNbRounds());
|
||||
}
|
||||
|
||||
@Test
|
||||
void findAll() throws DAOException {
|
||||
// Create games
|
||||
for (Game game : fixture) {
|
||||
dao.create(game);
|
||||
}
|
||||
|
||||
// Retrieve all games
|
||||
Game[] games = dao.findAll();
|
||||
assertEquals(fixture.length, games.length);
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() throws DAOException {
|
||||
// Create the game
|
||||
dao.create(fixture[0]);
|
||||
|
||||
// Retrieve the fixture
|
||||
Game game = dao.findById(fixture[0].getId().intValue());
|
||||
|
||||
// Check if the retrieved fixture is the same as the created fixture
|
||||
assertEquals(game.getCreatedAt(), fixture[0].getCreatedAt());
|
||||
assertEquals(game.getDifficulty(), fixture[0].getDifficulty());
|
||||
assertEquals(game.getNbColors(), fixture[0].getNbColors());
|
||||
assertEquals(game.getNbValuesPerColor(), fixture[0].getNbValuesPerColor());
|
||||
assertEquals(game.getNbRounds(), fixture[0].getNbRounds());
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() throws DAOException {
|
||||
// Create the game
|
||||
dao.create(fixture[0]);
|
||||
|
||||
// Update the game
|
||||
fixture[0].setNbColors(4);
|
||||
dao.update(fixture[0]);
|
||||
|
||||
// Retrieve the fixture
|
||||
Game game = dao.findById(fixture[0].getId().intValue());
|
||||
|
||||
// Check if the retrieved fixture is the same as the updated fixture
|
||||
assertEquals(4, game.getNbColors());
|
||||
}
|
||||
|
||||
@Test
|
||||
void delete() throws DAOException {
|
||||
// Create the game
|
||||
dao.create(fixture[0]);
|
||||
Game game = dao.findAll()[0];
|
||||
|
||||
// Delete the game
|
||||
dao.delete(game);
|
||||
|
||||
// Check if the game has been deleted
|
||||
assertNull(dao.findById(game.getId().intValue()));
|
||||
}
|
||||
}
|
||||
@@ -1,151 +0,0 @@
|
||||
package uppa.project.dao.jpa;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.dao.jpa.DAO_JPA_Player;
|
||||
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.database.pojo.Game;
|
||||
import uppa.project.database.pojo.Player;
|
||||
import uppa.project.database.pojo.User;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class DAO_JPA_PlayerTest {
|
||||
|
||||
static EntityManager entityManager;
|
||||
static DAO<Player> dao;
|
||||
|
||||
static Player[] fixture;
|
||||
|
||||
@BeforeAll
|
||||
static void setUp() throws DAOException {
|
||||
EntityManagerProvider.setPersitenceUnitName("test");
|
||||
entityManager = EntityManagerProvider.getInstance();
|
||||
dao = new Game_JPA_DAO_Factory().getDAOPlayer();
|
||||
|
||||
assertEquals(dao.getClass(), DAO_JPA_Player.class);
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
void clean() {
|
||||
fixture = new Player[] {
|
||||
new Player(
|
||||
new BigDecimal(1),
|
||||
new Game(new BigDecimal(1), new Date(100, 10, 1), Game.Difficulty.EASY, 10, 4, 2, 4, new ArrayList<>()),
|
||||
new User("user1", "email1", "password1", new Date(100, Calendar.JANUARY, 12), User.Gender.OTHER),
|
||||
2, false, 3, 1, 2
|
||||
),
|
||||
new Player(
|
||||
new BigDecimal(2),
|
||||
new Game(new BigDecimal(1), new Date(100, 10, 1), Game.Difficulty.EASY, 10, 4, 2, 4, new ArrayList<>()),
|
||||
new User("user2", "email2", "password2", new Date(100, Calendar.MARCH, 15), User.Gender.MALE)
|
||||
, 3, true, 4, 2, 3
|
||||
),
|
||||
};
|
||||
entityManager.getTransaction().begin();
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void rollback() {
|
||||
entityManager.getTransaction().rollback();
|
||||
}
|
||||
|
||||
@Test
|
||||
void findById() throws DAOException {
|
||||
// Create a new player
|
||||
dao.create(fixture[0]);
|
||||
Player player = dao.findAll()[0];
|
||||
|
||||
// Find the player by its id
|
||||
Player foundPlayer = dao.findById(player.getId().intValue());
|
||||
assertEquals(player, foundPlayer);
|
||||
}
|
||||
|
||||
@Test
|
||||
void findByField() throws DAOException {
|
||||
// Create players
|
||||
for (Player player : fixture) {
|
||||
dao.create(player);
|
||||
}
|
||||
|
||||
// Find the players by their click count
|
||||
Player[] foundPlayers = dao.findByField("clickCount", 3);
|
||||
assertEquals(1, foundPlayers.length);
|
||||
assertEquals(3, foundPlayers[0].getClickCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
void findAll() throws DAOException {
|
||||
// Create players
|
||||
for (Player player : fixture) {
|
||||
dao.create(player);
|
||||
}
|
||||
|
||||
// Find all the players
|
||||
Player[] foundPlayers = dao.findAll();
|
||||
assertEquals(fixture.length, foundPlayers.length);
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() throws DAOException {
|
||||
// Create players
|
||||
dao.create(fixture[0]);
|
||||
|
||||
|
||||
// Find all the players
|
||||
Player[] foundPlayers = dao.findAll();
|
||||
assertEquals(1, foundPlayers.length);
|
||||
|
||||
// Check if the players are the same
|
||||
|
||||
assertEquals(fixture[0].getClickCount(), foundPlayers[0].getClickCount());
|
||||
assertEquals(fixture[0].getScore(), foundPlayers[0].getScore());
|
||||
assertEquals(fixture[0].isWinner(), foundPlayers[0].isWinner());
|
||||
assertEquals(fixture[0].getRapidClickCount(), foundPlayers[0].getRapidClickCount());
|
||||
assertEquals(fixture[0].getRightClickCount(), foundPlayers[0].getRightClickCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() throws DAOException {
|
||||
// Create a new player
|
||||
dao.create(fixture[0]);
|
||||
Player player = dao.findAll()[0];
|
||||
|
||||
// Update the player
|
||||
player.setClickCount(5);
|
||||
player.setScore(4);
|
||||
player.setWinner();
|
||||
player.setRapidClickCount(3);
|
||||
|
||||
dao.update(player);
|
||||
|
||||
// Find the player by its id
|
||||
Player foundPlayer = dao.findById(player.getId().intValue());
|
||||
assertEquals(player, foundPlayer);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void delete() throws DAOException {
|
||||
// Create a new player
|
||||
dao.create(fixture[0]);
|
||||
Player player = dao.findAll()[0];
|
||||
|
||||
// Delete the player
|
||||
dao.delete(player);
|
||||
|
||||
// Find all the players
|
||||
Player[] foundPlayers = dao.findAll();
|
||||
assertEquals(0, foundPlayers.length);
|
||||
}
|
||||
}
|
||||
-149
@@ -1,149 +0,0 @@
|
||||
package uppa.project.dao.jpa;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.dao.jpa.DAO_JPA_RecoveryPasswordToken;
|
||||
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.database.pojo.RecoveryPasswordToken;
|
||||
import uppa.project.database.pojo.User;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class DAO_JPA_RecoveryPasswordTokenTest {
|
||||
|
||||
static EntityManager entityManager;
|
||||
static DAO<RecoveryPasswordToken> dao;
|
||||
|
||||
static RecoveryPasswordToken[] fixture;
|
||||
|
||||
@BeforeAll
|
||||
static void setUp() throws DAOException {
|
||||
EntityManagerProvider.setPersitenceUnitName("test");
|
||||
entityManager = EntityManagerProvider.getInstance();
|
||||
dao = new Game_JPA_DAO_Factory().getDAORecoveryPasswordToken();
|
||||
|
||||
assertEquals(dao.getClass(), DAO_JPA_RecoveryPasswordToken.class);
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
void clean() {
|
||||
fixture = new RecoveryPasswordToken[] {
|
||||
new RecoveryPasswordToken(
|
||||
new BigDecimal(1), "token1",
|
||||
new User(
|
||||
"user1", "email1", "password1",
|
||||
new Date(100, Calendar.JANUARY, 1),
|
||||
User.Gender.OTHER
|
||||
),
|
||||
new Date(124, Calendar.FEBRUARY, 2)
|
||||
),
|
||||
new RecoveryPasswordToken(
|
||||
new BigDecimal(2), "token2",
|
||||
new User(
|
||||
"user2", "email2", "password2",
|
||||
new Date(100, Calendar.MARCH, 3),
|
||||
User.Gender.FEMALE
|
||||
),
|
||||
new Date(124, Calendar.APRIL, 4)
|
||||
),
|
||||
};
|
||||
entityManager.getTransaction().begin();
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void rollback() {
|
||||
entityManager.getTransaction().rollback();
|
||||
}
|
||||
|
||||
@Test
|
||||
void findById() throws DAOException {
|
||||
// Create a new recovery password token
|
||||
dao.create(fixture[0]);
|
||||
RecoveryPasswordToken recoveryPasswordToken = dao.findAll()[0];
|
||||
|
||||
// Find the recovery password token by id
|
||||
RecoveryPasswordToken recoveryPasswordTokenInDb = dao.findById(recoveryPasswordToken.getId().intValue());
|
||||
assertEquals(recoveryPasswordToken.getId(), recoveryPasswordTokenInDb.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
void findByField() throws DAOException {
|
||||
// Create recovery password tokens
|
||||
for (RecoveryPasswordToken recoveryPasswordToken : fixture)
|
||||
dao.create(recoveryPasswordToken);
|
||||
|
||||
// Find the recovery password token by token
|
||||
RecoveryPasswordToken recoveryPasswordToken = dao.findByField("token", "token1")[0];
|
||||
assertEquals(fixture[0].getToken(), recoveryPasswordToken.getToken());
|
||||
|
||||
// Check if the recovery password token is the same
|
||||
assertEquals(fixture[0].getToken(), recoveryPasswordToken.getToken());
|
||||
}
|
||||
|
||||
@Test
|
||||
void findAll() throws DAOException {
|
||||
// Find all recovery password tokens
|
||||
RecoveryPasswordToken[] recoveryPasswordTokens = dao.findAll();
|
||||
assertEquals(0, recoveryPasswordTokens.length);
|
||||
|
||||
// Create recovery password tokens
|
||||
for (RecoveryPasswordToken recoveryPasswordToken : fixture)
|
||||
dao.create(recoveryPasswordToken);
|
||||
|
||||
// Find all recovery password tokens
|
||||
recoveryPasswordTokens = dao.findAll();
|
||||
assertEquals(fixture.length, recoveryPasswordTokens.length);
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() throws DAOException {
|
||||
// Create a new recovery password token
|
||||
dao.create(fixture[0]);
|
||||
RecoveryPasswordToken recoveryPasswordToken = dao.findAll()[0];
|
||||
|
||||
// Check if the recovery password token is the same
|
||||
assertEquals(fixture[0].getToken(), recoveryPasswordToken.getToken());
|
||||
assertEquals(fixture[0].getExpirationDate(), recoveryPasswordToken.getExpirationDate());
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() throws DAOException {
|
||||
// Create a new recovery password token
|
||||
dao.create(fixture[0]);
|
||||
RecoveryPasswordToken recoveryPasswordToken = dao.findAll()[0];
|
||||
|
||||
// Update the recovery password token
|
||||
recoveryPasswordToken.setToken("newToken");
|
||||
dao.update(recoveryPasswordToken);
|
||||
|
||||
// Check if the recovery password token is in the database
|
||||
RecoveryPasswordToken recoveryPasswordTokenInDb = dao.findAll()[0];
|
||||
assertEquals(recoveryPasswordToken.getToken(), recoveryPasswordTokenInDb.getToken());
|
||||
|
||||
// Check if the recovery password token is the same
|
||||
recoveryPasswordTokenInDb = dao.findAll()[0];
|
||||
assertEquals(recoveryPasswordToken.getToken(), recoveryPasswordTokenInDb.getToken());
|
||||
}
|
||||
|
||||
@Test
|
||||
void delete() throws DAOException {
|
||||
// Create a new recovery password token
|
||||
dao.create(fixture[0]);
|
||||
RecoveryPasswordToken recoveryPasswordToken = dao.findAll()[0];
|
||||
|
||||
// Delete the recovery password token
|
||||
dao.delete(recoveryPasswordToken);
|
||||
|
||||
// Check if the recovery password token is not in the database
|
||||
assertNull(dao.findById(recoveryPasswordToken.getId().intValue()));
|
||||
}
|
||||
}
|
||||
@@ -1,135 +0,0 @@
|
||||
package uppa.project.dao.jpa;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import java.util.Date;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.dao.jpa.DAO_JPA_User;
|
||||
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.database.pojo.User;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class DAO_JPA_UserTest {
|
||||
|
||||
static EntityManager entityManager;
|
||||
static DAO<User> dao;
|
||||
static User[] fixture;
|
||||
|
||||
@BeforeAll
|
||||
static void setUp() throws DAOException {
|
||||
EntityManagerProvider.setPersitenceUnitName("test");
|
||||
entityManager = EntityManagerProvider.getInstance();
|
||||
dao = new Game_JPA_DAO_Factory().getDAOUser();
|
||||
|
||||
assertEquals(dao.getClass(), DAO_JPA_User.class);
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
void clean() {
|
||||
fixture = new User[] {
|
||||
new User("username", "email", "password", new Date(), User.Gender.MALE),
|
||||
new User("username1", "email1", "password1", new Date(), User.Gender.FEMALE),
|
||||
};
|
||||
entityManager.getTransaction().begin();
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void rollback() {
|
||||
entityManager.getTransaction().rollback();
|
||||
}
|
||||
|
||||
@Test
|
||||
void findById() throws DAOException {
|
||||
// Create a new user
|
||||
dao.create(fixture[0]);
|
||||
User user = dao.findAll()[0];
|
||||
|
||||
// Find the user by id
|
||||
User userInDb = dao.findById(user.getId().intValue());
|
||||
assertEquals(user.getId(), userInDb.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
void findByField() throws DAOException {
|
||||
// Create users
|
||||
for (User user : fixture) dao.create(user);
|
||||
|
||||
// Find the user by username
|
||||
User[] usersInDb = dao.findByField("username", fixture[0].getUsername());
|
||||
assertEquals(1, usersInDb.length);
|
||||
|
||||
// Check if the user is the same
|
||||
assertEquals(fixture[0].getUsername(), usersInDb[0].getUsername());
|
||||
assertEquals(fixture[0].getEmail(), usersInDb[0].getEmail());
|
||||
assertEquals(fixture[0].getPassword(), usersInDb[0].getPassword());
|
||||
}
|
||||
|
||||
@Test
|
||||
void findAll() throws DAOException {
|
||||
// Find all users
|
||||
User[] fixture = dao.findAll();
|
||||
assertEquals(0, fixture.length);
|
||||
|
||||
// Create a new user
|
||||
for (User user : fixture) dao.create(user);
|
||||
|
||||
// Find all users
|
||||
User[] usersInDb = dao.findAll();
|
||||
assertEquals(fixture.length, usersInDb.length);
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() throws DAOException {
|
||||
// Create users
|
||||
dao.create(fixture[0]);
|
||||
|
||||
// Check if the user is in the database
|
||||
User[] usersInDb = dao.findAll();
|
||||
assertEquals(1, usersInDb.length);
|
||||
|
||||
// Check if the user is the same
|
||||
assertEquals(fixture[0].getUsername(), usersInDb[0].getUsername());
|
||||
assertEquals(fixture[0].getEmail(), usersInDb[0].getEmail());
|
||||
assertEquals(fixture[0].getPassword(), usersInDb[0].getPassword());
|
||||
assertEquals(fixture[0].getBirth(), usersInDb[0].getBirth());
|
||||
assertEquals(fixture[0].getGender(), usersInDb[0].getGender());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() throws DAOException {
|
||||
// Create a new user
|
||||
dao.create(fixture[0]);
|
||||
User user = dao.findAll()[0];
|
||||
|
||||
// Update the user
|
||||
user.setUsername("new_username");
|
||||
dao.update(user);
|
||||
|
||||
// Check if the user is in the database
|
||||
User[] usersInDb = dao.findAll();
|
||||
assertEquals(1, usersInDb.length);
|
||||
|
||||
// Check if the user is the same
|
||||
assertEquals(user.getUsername(), usersInDb[0].getUsername());
|
||||
}
|
||||
|
||||
@Test
|
||||
void delete() throws DAOException {
|
||||
// Create a new user
|
||||
dao.create(fixture[0]);
|
||||
User user = dao.findAll()[0];
|
||||
|
||||
// Delete the user
|
||||
dao.delete(user);
|
||||
|
||||
// Check if the user is not in the database
|
||||
assertNull(dao.findById(user.getId().intValue()));
|
||||
}
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
package uppa.project.dao.jpa;
|
||||
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.dao.DAO;
|
||||
import uppa.project.database.dao.DAOException;
|
||||
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
||||
import uppa.project.database.pojo.User;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class Game_JPA_DAO_FactoryTest {
|
||||
|
||||
static Game_JPA_DAO_Factory factory;
|
||||
|
||||
@BeforeAll
|
||||
static void setUp() {
|
||||
EntityManagerProvider.setPersitenceUnitName("test");
|
||||
factory = new Game_JPA_DAO_Factory();
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getDAOUser() throws DAOException {
|
||||
// If the method throws an exception, make sure the database is running
|
||||
assertDoesNotThrow(() -> factory.getDAOUser());
|
||||
|
||||
// Check if the returned object is a DAO<User>
|
||||
assertNotNull(factory.getDAOUser());
|
||||
|
||||
// Check if the object is unique
|
||||
DAO<User> dao1 = factory.getDAOUser();
|
||||
DAO<User> dao2 = factory.getDAOUser();
|
||||
assertEquals(dao1, dao2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getDAOGame() throws DAOException {
|
||||
// If the method throws an exception, make sure the database is running
|
||||
assertDoesNotThrow(() -> factory.getDAOGame());
|
||||
|
||||
// Check if the returned object is a DAO<Game>
|
||||
assertNotNull(factory.getDAOGame());
|
||||
|
||||
// Check if the object is unique
|
||||
DAO<User> dao1 = factory.getDAOUser();
|
||||
DAO<User> dao2 = factory.getDAOUser();
|
||||
assertEquals(dao1, dao2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getDAOPlayer() throws DAOException {
|
||||
// If the method throws an exception, make sure the database is running
|
||||
assertDoesNotThrow(() -> factory.getDAOPlayer());
|
||||
|
||||
// Check if the returned object is a DAO<Player>
|
||||
assertNotNull(factory.getDAOPlayer());
|
||||
|
||||
// Check if the object is unique
|
||||
DAO<User> dao1 = factory.getDAOUser();
|
||||
DAO<User> dao2 = factory.getDAOUser();
|
||||
assertEquals(dao1, dao2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getDAORecoveryPasswordToken() throws DAOException {
|
||||
// If the method throws an exception, make sure the database is running
|
||||
assertDoesNotThrow(() -> factory.getDAORecoveryPasswordToken());
|
||||
|
||||
// Check if the returned object is a DAO<RecoveryPasswordToken>
|
||||
assertNotNull(factory.getDAORecoveryPasswordToken());
|
||||
|
||||
// Check if the object is unique
|
||||
DAO<User> dao1 = factory.getDAOUser();
|
||||
DAO<User> dao2 = factory.getDAOUser();
|
||||
assertEquals(dao1, dao2);
|
||||
}
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
package uppa.project.pojo;
|
||||
|
||||
import java.util.HashMap;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.pojo.Card;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
class CardTest {
|
||||
|
||||
@Test
|
||||
void test_constructor() {
|
||||
|
||||
// Card with correct Value
|
||||
new Card(Card.Color.HEART, Card.Value.ACE);
|
||||
new Card(Card.Color.HEART, Card.Value.TWO);
|
||||
new Card(Card.Color.HEART, Card.Value.THREE);
|
||||
new Card(Card.Color.CLUBS, Card.Value.FOUR);
|
||||
new Card(Card.Color.CLUBS, Card.Value.FIVE);
|
||||
new Card(Card.Color.CLUBS, Card.Value.SIX);
|
||||
new Card(Card.Color.DIAMONDS, Card.Value.SEVEN);
|
||||
new Card(Card.Color.DIAMONDS, Card.Value.EIGHT);
|
||||
new Card(Card.Color.DIAMONDS, Card.Value.NINE);
|
||||
new Card(Card.Color.SPADES, Card.Value.TEN);
|
||||
new Card(Card.Color.SPADES, Card.Value.JACK);
|
||||
new Card(Card.Color.SPADES, Card.Value.QUEEN);
|
||||
new Card(Card.Color.HEART, Card.Value.KING);
|
||||
|
||||
// Card with correct Color
|
||||
new Card(Card.Color.HEART, Card.Value.ACE);
|
||||
new Card(Card.Color.CLUBS, Card.Value.ACE);
|
||||
new Card(Card.Color.DIAMONDS, Card.Value.ACE);
|
||||
new Card(Card.Color.SPADES, Card.Value.ACE);
|
||||
|
||||
// Invalid Card Color
|
||||
assertThrows(IllegalArgumentException.class, () -> new Card(null, Card.Value.ACE));
|
||||
|
||||
// Invalid Card Value
|
||||
assertThrows(IllegalArgumentException.class, () -> new Card(Card.Color.HEART, null));
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getColor() {
|
||||
final HashMap<Card, Card.Color> TESTS = new HashMap<>() {{
|
||||
put(new Card(Card.Color.HEART, Card.Value.ACE), Card.Color.HEART);
|
||||
put(new Card(Card.Color.CLUBS, Card.Value.TWO), Card.Color.CLUBS);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.THREE), Card.Color.DIAMONDS);
|
||||
put(new Card(Card.Color.SPADES, Card.Value.FOUR), Card.Color.SPADES);
|
||||
}};
|
||||
|
||||
for (Card card : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(card), card.getColor());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getValue() {
|
||||
final HashMap<Card, Card.Value> TESTS = new HashMap<>() {{
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.ACE), Card.Value.ACE);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.TWO), Card.Value.TWO);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.THREE), Card.Value.THREE);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.FOUR), Card.Value.FOUR);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.FIVE), Card.Value.FIVE);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.SIX), Card.Value.SIX);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.SEVEN), Card.Value.SEVEN);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.EIGHT), Card.Value.EIGHT);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.NINE), Card.Value.NINE);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.TEN), Card.Value.TEN);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.JACK), Card.Value.JACK);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.QUEEN), Card.Value.QUEEN);
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.KING), Card.Value.KING);
|
||||
}};
|
||||
|
||||
for (Card card : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(card), card.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_toString() {
|
||||
|
||||
final HashMap<Card, String> TESTS = new HashMap<>() {{
|
||||
put(new Card(Card.Color.HEART, Card.Value.ACE), "Card{color=HEART, value=ACE}");
|
||||
put(new Card(Card.Color.CLUBS, Card.Value.TWO), "Card{color=CLUBS, value=TWO}");
|
||||
put(new Card(Card.Color.DIAMONDS, Card.Value.THREE), "Card{color=DIAMONDS, value=THREE}");
|
||||
put(new Card(Card.Color.SPADES, Card.Value.FOUR), "Card{color=SPADES, value=FOUR}");
|
||||
}};
|
||||
|
||||
for (Card card : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(card), card.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_CardValue() {
|
||||
|
||||
// Expect the right number of values
|
||||
assertEquals(13, Card.Value.values().length);
|
||||
|
||||
// Expect the right name and ordinal for each value
|
||||
final String[] EXPECTED_NAMES = new String[]{
|
||||
"ACE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN", "JACK", "QUEEN", "KING"
|
||||
};
|
||||
|
||||
for (int index = 0; index < EXPECTED_NAMES.length; index++) {
|
||||
String expectedName = EXPECTED_NAMES[index];
|
||||
Card.Value currentValue = Card.Value.values()[index];
|
||||
|
||||
assertEquals(index, currentValue.ordinal()); // Ordinal
|
||||
assertEquals(expectedName, currentValue.name()); // Name
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_CardColor() {
|
||||
// Expect the right number of colors
|
||||
assertEquals(4, Card.Color.values().length);
|
||||
|
||||
// Expect the right name and ordinal for each color
|
||||
final String[] EXPECTED_NAMES = new String[]{"HEART", "CLUBS", "SPADES", "DIAMONDS"};
|
||||
|
||||
for (int index = 0; index < Card.Color.values().length; index++) {
|
||||
String expectedName = EXPECTED_NAMES[index];
|
||||
Card.Color currentColor = Card.Color.values()[index];
|
||||
|
||||
assertEquals(index, currentColor.ordinal()); // Ordinal
|
||||
assertEquals(expectedName, currentColor.name()); // Name
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,138 +0,0 @@
|
||||
package uppa.project.pojo;
|
||||
|
||||
import java.util.HashMap;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.pojo.Card;
|
||||
import uppa.project.database.pojo.Deck;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class DeckTest {
|
||||
|
||||
@Test
|
||||
void test_constructor() {
|
||||
new Deck(4, 13);
|
||||
new Deck(3, 10);
|
||||
new Deck(2, 7);
|
||||
new Deck(2, 2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_constructor_deckWithSameParametersHaveSameCards() {
|
||||
Deck mockDeck = new Deck(4, 13);
|
||||
Deck mockDeck2 = new Deck(4, 13);
|
||||
assertEquals(mockDeck, mockDeck2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_isValidDeck() {
|
||||
// Nombre de couleurs et de valeurs valides
|
||||
final int[][] TRUE_EXPECTED = {{4, 13}, {3, 10}, {2, 7},};
|
||||
|
||||
for (int[] args : TRUE_EXPECTED) {
|
||||
assertTrue(Deck.isDeckValid(args[0], args[1]));
|
||||
}
|
||||
|
||||
// Nombre de couleurs et de valeurs invalides
|
||||
final int[][] FALSE_EXPECTED = {{0, 13}, {5, 10}, {8, 7}, {-1, 11}, {-6, 12},};
|
||||
|
||||
for (int[] args : FALSE_EXPECTED) {
|
||||
assertFalse(Deck.isDeckValid(args[0], args[1]));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_constructor_throwIllegalArgumentExceptionOnInvalidColor() {
|
||||
int[] INCORRECT_COLORS = {Integer.MIN_VALUE, 0, 5, 8, -1, -6, Integer.MAX_VALUE};
|
||||
for (int incorrect_color : INCORRECT_COLORS) {
|
||||
assertThrows(IllegalArgumentException.class, () -> new Deck(incorrect_color, 13));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_constructor_throwIllegalArgumentExceptionOnInvalidValues() {
|
||||
int[] INCORRECT_VALUES = {Integer.MIN_VALUE, -2, 0, 14, Integer.MAX_VALUE};
|
||||
for (int incorrect_value : INCORRECT_VALUES) {
|
||||
assertThrows(IllegalArgumentException.class, () -> new Deck(4, incorrect_value));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getCards_size() {
|
||||
final HashMap<Deck, Integer> TESTS = new HashMap<>() {{
|
||||
put(new Deck(4, 13), 52);
|
||||
put(new Deck(3, 11), 33);
|
||||
put(new Deck(2, 7), 14);
|
||||
put(new Deck(2, 5), 10);
|
||||
}};
|
||||
for (Deck deck : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(deck), deck.getCards().size());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getCards_returnTheRightNumberOfColors() {
|
||||
HashMap<Deck, Integer> TESTS = new HashMap<>() {{
|
||||
put(new Deck(4, 13), 4);
|
||||
put(new Deck(3, 10), 3);
|
||||
put(new Deck(2, 7), 2);
|
||||
put(new Deck(2, 2), 2);
|
||||
}};
|
||||
|
||||
for (Deck deck : TESTS.keySet()) {
|
||||
int expected = TESTS.get(deck);
|
||||
int actual = (int)deck.getCards().stream().map(Card::getColor).distinct().count();
|
||||
assertEquals(expected, actual);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getCards_returnTheRightNumberOfValues() {
|
||||
HashMap<Deck, Integer> TESTS = new HashMap<>() {{
|
||||
put(new Deck(4, 13), 13);
|
||||
put(new Deck(3, 10), 10);
|
||||
put(new Deck(2, 7), 7);
|
||||
put(new Deck(2, 2), 2);
|
||||
}};
|
||||
|
||||
for (Deck deck : TESTS.keySet()) {
|
||||
int expected = TESTS.get(deck);
|
||||
int actual = (int)deck.getCards().stream().map(Card::getValue).distinct().count();
|
||||
assertEquals(expected, actual);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_shuffle() {
|
||||
Deck mockDeck1 = new Deck(4,6);
|
||||
Deck mockDeck2 = new Deck(4,6);
|
||||
Deck mockDeck3 = new Deck(4,6);
|
||||
|
||||
mockDeck1.shuffle();
|
||||
mockDeck2.shuffle();
|
||||
mockDeck3.shuffle();
|
||||
assertNotEquals(mockDeck1.getCards(), mockDeck2.getCards());
|
||||
assertNotEquals(mockDeck1.getCards(), mockDeck3.getCards());
|
||||
assertNotEquals(mockDeck2.getCards(), mockDeck3.getCards());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_shuffle_deckSizeHasNotChange() {
|
||||
Deck mockDeck = new Deck(4, 13);
|
||||
int initialSize = mockDeck.getCards().size();
|
||||
mockDeck.shuffle();
|
||||
assertEquals(initialSize, mockDeck.getCards().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_shuffle_deckHaveSameCards() {
|
||||
Deck mockDeck = new Deck(4, 13);
|
||||
Deck mockDeck2 = new Deck(4,13);
|
||||
mockDeck2.shuffle();
|
||||
assertEquals(mockDeck, mockDeck2);
|
||||
}
|
||||
}
|
||||
@@ -1,333 +0,0 @@
|
||||
package uppa.project.pojo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.pojo.Deck;
|
||||
import uppa.project.database.pojo.Game;
|
||||
import uppa.project.database.pojo.Player;
|
||||
import uppa.project.database.pojo.User;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
class GameTest {
|
||||
|
||||
Game[] fixture;
|
||||
static Player[][] playersFixture;
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll(){
|
||||
playersFixture = new Player[][]{
|
||||
{new Player(new BigDecimal(1), new Game(Game.Difficulty.EASY, 10, 17, 3, 6), new User(), 10, true, 5, 5, 5)},
|
||||
{new Player(new BigDecimal(2), new Game(Game.Difficulty.EASY, 10, 17, 3, 6), new User(), 15, true, 5, 5, 5),
|
||||
new Player(new BigDecimal(3), new Game(Game.Difficulty.EASY, 10, 17, 3, 6), new User(), 20, true, 5, 5, 5)},
|
||||
{new Player(new BigDecimal(4), new Game(Game.Difficulty.EASY, 15, 17, 3, 6), new User(), 10, true, 5, 5, 5),
|
||||
new Player(new BigDecimal(5), new Game(Game.Difficulty.EASY, 15, 17, 3, 6), new User(), 30, true, 5, 5, 5),
|
||||
new Player(new BigDecimal(6), new Game(Game.Difficulty.EASY, 15, 17, 3, 6), new User(), 20, true, 5, 5, 5)}
|
||||
};
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
void beforeEach() {
|
||||
fixture = new Game[]{
|
||||
new Game(new BigDecimal(1), new Date(2024 - 1900, 5, 6), Game.Difficulty.EASY, 50, 17, 3, 6, new ArrayList<>(Arrays.asList(playersFixture[0]))),
|
||||
new Game(new BigDecimal(2), new Date(2023 - 1900, 7, 9), Game.Difficulty.HARD, 10, 28, 4, 13, new ArrayList<>(Arrays.asList(playersFixture[1]))),
|
||||
new Game(new BigDecimal(3), new Date(2022 - 1900, 11, 12), Game.Difficulty.EASY, 15, 16, 2, 9, new ArrayList<>(Arrays.asList(playersFixture[2])))
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_constructor() {
|
||||
new Game();
|
||||
new Game(Game.Difficulty.EASY, 10, 17, 3, 6);
|
||||
new Game(new BigDecimal(1), new Date(2023, 12, 25), Game.Difficulty.EASY,15, 17, 3, 6, new ArrayList<Player>());
|
||||
new Game(new BigDecimal(2), new Date(2024, 3, 26), Game.Difficulty.HARD, 20, 52, 4, 13, new ArrayList<Player>());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_constructor_throwIllegalArgumentExceptionOnInvalidValues() {
|
||||
int[] INCORRECT_VALUES = {Integer.MIN_VALUE, -2, 0, 14, Integer.MAX_VALUE};
|
||||
for (int incorrect_value : INCORRECT_VALUES) {
|
||||
assertThrows(IllegalArgumentException.class, () -> new Game(Game.Difficulty.EASY,10, 4 * incorrect_value, 4, incorrect_value));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_constructor_throwIllegalArgumentExceptionOnInvalidColors() {
|
||||
int[] INCORRECT_VALUES = {Integer.MIN_VALUE, -9, -2, 0, 5, 8, Integer.MAX_VALUE};
|
||||
for (int incorrect_value : INCORRECT_VALUES) {
|
||||
assertThrows(IllegalArgumentException.class, () -> new Game(Game.Difficulty.EASY, 10, 4 * incorrect_value, incorrect_value, 13));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_constructor_throwIllegalArgumentExceptionOnInvalidNbRounds() {
|
||||
assertThrows(IllegalArgumentException.class, () -> new Game(Game.Difficulty.EASY, 10, 0, 4, 8));
|
||||
assertThrows(IllegalArgumentException.class, () -> new Game(Game.Difficulty.EASY, 10, 33, 4, 8));
|
||||
assertThrows(IllegalArgumentException.class, () -> new Game(Game.Difficulty.EASY, 10, -5, 4, 8));
|
||||
assertThrows(IllegalArgumentException.class, () -> new Game(Game.Difficulty.EASY, 10, 13, 2, 6));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void test_constructor_throwIllegalArgumentExceptionOnInvalidTimers() {
|
||||
int[] INCORRECT_VALUES = {Integer.MIN_VALUE, -9, -2, 0, 5, 61, Integer.MAX_VALUE};
|
||||
for (int incorrect_value : INCORRECT_VALUES) {
|
||||
assertThrows(IllegalArgumentException.class, () -> new Game(Game.Difficulty.EASY, incorrect_value, 13, 2, 6));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getId() {
|
||||
final HashMap<Game, BigDecimal> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], new BigDecimal(1));
|
||||
put(fixture[1], new BigDecimal(2));
|
||||
put(fixture[2], new BigDecimal(3));
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(game), game.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getCreatedAt() {
|
||||
final HashMap<Game, Date> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], new Date(2024 - 1900, 5, 6));
|
||||
put(fixture[1], new Date(2023 - 1900, 7, 9));
|
||||
put(fixture[2], new Date(2022 - 1900, 11, 12));
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(game), game.getCreatedAt());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getDifficulty() {
|
||||
final HashMap<Game, Game.Difficulty> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], Game.Difficulty.EASY);
|
||||
put(fixture[1], Game.Difficulty.HARD);
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(game), game.getDifficulty());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setDifficulty() {
|
||||
Game game = fixture[0];
|
||||
assertEquals(Game.Difficulty.EASY, game.getDifficulty());
|
||||
|
||||
// Change the difficulty
|
||||
game.setDifficulty(Game.Difficulty.HARD);
|
||||
assertEquals(Game.Difficulty.HARD, game.getDifficulty());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getTimer() {
|
||||
final HashMap<Game, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 50);
|
||||
put(fixture[1], 10);
|
||||
put(fixture[2], 15);
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(game), game.getTimer());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setTimer() {
|
||||
Game game = fixture[0];
|
||||
assertEquals(50, game.getTimer());
|
||||
|
||||
// Change the timer
|
||||
game.setTimer(25);
|
||||
assertEquals(25, game.getTimer());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getNbRounds() {
|
||||
final HashMap<Game, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 17);
|
||||
put(fixture[1], 28);
|
||||
put(fixture[2], 16);
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(game), game.getNbRounds());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setNbRounds() {
|
||||
Game game = fixture[0];
|
||||
assertEquals(17, game.getNbRounds());
|
||||
|
||||
// Change the number of rounds
|
||||
game.setNbRounds(5);
|
||||
assertEquals(5, game.getNbRounds());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getNbColors() {
|
||||
final HashMap<Game, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 3);
|
||||
put(fixture[1], 4);
|
||||
put(fixture[2], 2);
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(game), game.getNbColors());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setNbColors() {
|
||||
Game game = fixture[0];
|
||||
assertEquals(3, game.getNbColors());
|
||||
|
||||
// Change the number of colors
|
||||
game.setNbColors(2);
|
||||
assertEquals(2, game.getNbColors());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getNbValuesPerColor() {
|
||||
final HashMap<Game, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 6);
|
||||
put(fixture[1], 13);
|
||||
put(fixture[2], 9);
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(game), game.getNbValuesPerColor());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setNbValuesPerColor() {
|
||||
Game game = fixture[0];
|
||||
assertEquals(6, game.getNbValuesPerColor());
|
||||
|
||||
// Change the number of values per color
|
||||
game.setNbValuesPerColor(8);
|
||||
assertEquals(8, game.getNbValuesPerColor());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getPlayers() {
|
||||
final HashMap<Game, ArrayList<Player>> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], new ArrayList<>(Arrays.asList(playersFixture[0])));
|
||||
put(fixture[1], new ArrayList<>(Arrays.asList(playersFixture[1])));
|
||||
put(fixture[2], new ArrayList<>(Arrays.asList(playersFixture[2])));
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(game), game.getPlayers());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setPlayers() {
|
||||
Game game = fixture[0];
|
||||
assertEquals(new ArrayList<>(Arrays.asList(playersFixture[0])), game.getPlayers());
|
||||
|
||||
// Add players
|
||||
game.setPlayers(new ArrayList<>(Arrays.asList(playersFixture[1])));
|
||||
assertEquals(new ArrayList<>(Arrays.asList(playersFixture[1])), game.getPlayers());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getNbPlayers() {
|
||||
final HashMap<Game, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 1);
|
||||
put(fixture[1], 2);
|
||||
put(fixture[2], 3);
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(game), game.getPlayers().size());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_addPlayer() {
|
||||
Game game = fixture[0];
|
||||
ArrayList<Player> players = new ArrayList<>(Arrays.asList(playersFixture[0]));
|
||||
assertEquals(players.size(), game.getPlayers().size());
|
||||
|
||||
Player player = new Player(new BigDecimal(2), new Game(Game.Difficulty.EASY, 20, 17, 3, 6), new User(), 10, true, 5, 5, 5);
|
||||
|
||||
// Add a player
|
||||
game.addPlayer(player);
|
||||
players.add(player);
|
||||
assertEquals(players.size(), game.getPlayers().size());
|
||||
|
||||
// Check if the player is the same
|
||||
assertEquals(players, game.getPlayers());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getDeck() {
|
||||
final HashMap<Game, Deck> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], new Deck(3, 6));
|
||||
put(fixture[1], new Deck(4, 13));
|
||||
put(fixture[2], new Deck(2, 9));
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(game), game.getDeck());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_sortPlayersByScore() {
|
||||
final HashMap<Game, ArrayList<Player>> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], new ArrayList<>() {{
|
||||
add(playersFixture[0][0]);
|
||||
}});
|
||||
put(fixture[1], new ArrayList<>() {{
|
||||
add(playersFixture[1][1]);
|
||||
add(playersFixture[1][0]);
|
||||
}});
|
||||
put(fixture[2], new ArrayList<>() {{
|
||||
add(playersFixture[2][1]);
|
||||
add(playersFixture[2][2]);
|
||||
add(playersFixture[2][0]);
|
||||
}});
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
ArrayList<Player> expected = TESTS.get(game);
|
||||
game.sortPlayersByScoreAndRapidity();
|
||||
assertEquals(expected, game.getPlayers());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_toString() {
|
||||
final HashMap<Game, String> TESTS = new HashMap<>() {{
|
||||
put(fixture[0],
|
||||
"Game{id=1, createdAt=Thu Jun " + "06 00:00:00 CEST 2024, difficulty=EASY, nbRounds=17, nbColors=3, nbValuesPerColor=6}");
|
||||
put(fixture[1],
|
||||
"Game{id=2, createdAt=Wed Aug 09 00:00:00 CEST 2023, difficulty=HARD, nbRounds=28, nbColors=4, nbValuesPerColor=13}");
|
||||
put(fixture[2],
|
||||
"Game{id=3, createdAt=Mon Dec 12 00:00:00 CET 2022, difficulty=EASY, nbRounds=16, nbColors=2, nbValuesPerColor=9}");
|
||||
}};
|
||||
|
||||
for (Game game : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(game), game.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,337 +0,0 @@
|
||||
package uppa.project.pojo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.pojo.Deck;
|
||||
import uppa.project.database.pojo.Game;
|
||||
import uppa.project.database.pojo.Player;
|
||||
import uppa.project.database.pojo.User;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class PlayerTest {
|
||||
|
||||
static Player[] fixture;
|
||||
static Game[] games;
|
||||
static User[] users;
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
games = new Game[]{
|
||||
new Game(new BigDecimal(1), new Date(101, 2, 4), Game.Difficulty.EASY, 50,18,2,10,null),
|
||||
new Game(new BigDecimal(2), new Date(101, 2, 4), Game.Difficulty.EASY, 10,18,4,13,null),
|
||||
new Game(new BigDecimal(3), new Date(101, 2, 4), Game.Difficulty.EASY, 20,18,3,6,null),
|
||||
new Game(new BigDecimal(4), new Date(101, 2, 4), Game.Difficulty.HARD,25,18,3,6,null),
|
||||
};
|
||||
|
||||
users = new User[]{
|
||||
new User("username1", "email1", "password1", new Date(), User.Gender.MALE),
|
||||
new User("username2", "email2", "password2", new Date(), User.Gender.FEMALE),
|
||||
new User("username3", "email3", "password3", new Date(), User.Gender.OTHER),
|
||||
new User("username4", "email4", "password4", new Date(100, 1, 1), User.Gender.OTHER)
|
||||
|
||||
};
|
||||
}
|
||||
@BeforeEach
|
||||
void beforeEach() {
|
||||
fixture = new Player[]{
|
||||
new Player(
|
||||
new BigDecimal(1),
|
||||
games[0],
|
||||
users[0],
|
||||
10, true, 6,5,5
|
||||
),
|
||||
new Player(
|
||||
new BigDecimal(2),
|
||||
games[1],
|
||||
users[1],
|
||||
20, false, 4,2,1
|
||||
),
|
||||
new Player(
|
||||
new BigDecimal(3),
|
||||
games[2],
|
||||
users[2],
|
||||
15, true, 10,5,5
|
||||
),
|
||||
new Player(
|
||||
new BigDecimal(4),
|
||||
games[3],
|
||||
users[3],
|
||||
15, true, 10,5,5
|
||||
)
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_constructor() {
|
||||
new Player();
|
||||
new Player(new Game(Game.Difficulty.EASY,25,4,2,3), new User());
|
||||
new Player(new Game(Game.Difficulty.EASY,10,4,2,3), new User());
|
||||
new Player(new Game(Game.Difficulty.EASY,20,4,2,3), new User());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getGame() {
|
||||
final HashMap<Player, Game> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], games[0]);
|
||||
put(fixture[1], games[1]);
|
||||
put(fixture[2], games[2]);
|
||||
}};
|
||||
|
||||
for (Player player : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(player), player.getGame());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setGame() {
|
||||
Player player = fixture[0];
|
||||
Game game = player.getGame();
|
||||
|
||||
// Set a new game
|
||||
Game newGame = new Game(new BigDecimal(4), new Date(), Game.Difficulty.HARD,10,20,4,5,null);
|
||||
player.setGame(newGame);
|
||||
|
||||
assertNotEquals(game, player.getGame());
|
||||
assertEquals(newGame, player.getGame());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getUser() {
|
||||
Player player = fixture[0];
|
||||
|
||||
User expected = new User("username1", "email1", "password1", new Date(), User.Gender.MALE);
|
||||
assertEquals(expected.getUsername(), player.getUser().getUsername());
|
||||
assertEquals(expected.getEmail(), player.getUser().getEmail());
|
||||
assertEquals(expected.getPassword(), player.getUser().getPassword());
|
||||
assertEquals(expected.getGender(), player.getUser().getGender());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void test_setUser() {
|
||||
Player player = fixture[0];
|
||||
User user = player.getUser();
|
||||
|
||||
// Set a new user
|
||||
User newUser = new User("username2", "email2", "password2", new Date(), User.Gender.FEMALE);
|
||||
player.setUser(newUser);
|
||||
|
||||
assertNotEquals(user, player.getUser());
|
||||
assertEquals(newUser, player.getUser());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getScore() {
|
||||
final HashMap<Player, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0],10);
|
||||
put(fixture[1],20);
|
||||
put(fixture[2],15);;
|
||||
}};
|
||||
|
||||
for (Player player : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(player), player.getScore());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setScore() {
|
||||
Player player = fixture[0];
|
||||
int score = player.getScore();
|
||||
|
||||
// Set a new score
|
||||
player.setScore(15);
|
||||
assertEquals(15, player.getScore());
|
||||
assertNotEquals(score, player.getScore());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_addToScore() {
|
||||
Player player = fixture[0];
|
||||
int score = player.getScore();
|
||||
|
||||
// Update the score
|
||||
player.addToScore(5);
|
||||
assertEquals(score + 5, player.getScore());
|
||||
assertNotEquals(score, player.getScore());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_isWinner() {
|
||||
final HashMap<Player, Boolean> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], true);
|
||||
put(fixture[1], false);
|
||||
put(fixture[2], true);
|
||||
}};
|
||||
|
||||
for (Player player : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(player), player.isWinner());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setWinner() {
|
||||
Player player = fixture[1];
|
||||
assertFalse(player.isWinner());
|
||||
|
||||
player.setWinner();
|
||||
assertTrue(player.isWinner());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getClickCount() {
|
||||
final HashMap<Player, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 6);
|
||||
put(fixture[1], 4);
|
||||
put(fixture[2], 10);
|
||||
}};
|
||||
|
||||
for (Player player : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(player), player.getClickCount());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setClickCount() {
|
||||
Player player = fixture[0];
|
||||
int clickCount = player.getClickCount();
|
||||
|
||||
// Set a new click count
|
||||
player.setClickCount(3);
|
||||
assertEquals(3, player.getClickCount());
|
||||
assertNotEquals(clickCount, player.getClickCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_incrementClickCount() {
|
||||
Player player = fixture[0];
|
||||
int clickCount = player.getClickCount();
|
||||
|
||||
// Increment the click count
|
||||
player.incrementClickCount();
|
||||
assertEquals(clickCount + 1, player.getClickCount());
|
||||
assertNotEquals(clickCount, player.getClickCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getRightClickCount() {
|
||||
final HashMap<Player, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 5);
|
||||
put(fixture[1], 2);
|
||||
put(fixture[2], 5);
|
||||
}};
|
||||
|
||||
for (Player player : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(player), player.getRightClickCount());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setRightClickCount() {
|
||||
Player player = fixture[0];
|
||||
int rightClickCount = player.getRightClickCount();
|
||||
|
||||
// Set a new right click count
|
||||
player.setRightClickCount(3);
|
||||
assertEquals(3, player.getRightClickCount());
|
||||
assertNotEquals(rightClickCount, player.getRightClickCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_incrementRightClickCount() {
|
||||
Player player = fixture[0];
|
||||
int rightClickCount = player.getRightClickCount();
|
||||
|
||||
// Increment the right click count
|
||||
player.incrementRightClickCount();
|
||||
assertEquals(rightClickCount + 1, player.getRightClickCount());
|
||||
assertNotEquals(rightClickCount, player.getRightClickCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getRatioRightClick() {
|
||||
final HashMap<Player, Double> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 83.33);
|
||||
put(fixture[1], 50.);
|
||||
put(fixture[2], 50.);
|
||||
}};
|
||||
|
||||
for (Player player : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(player), player.getRatioRightClick());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getRapidClickCount() {
|
||||
final HashMap<Player, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 5);
|
||||
put(fixture[1], 1);
|
||||
put(fixture[2], 5);
|
||||
}};
|
||||
|
||||
for (Player player : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(player), player.getRapidClickCount());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setRapidClickCount() {
|
||||
Player player = fixture[0];
|
||||
int rapidClickCount = player.getRapidClickCount();
|
||||
|
||||
// Set a new rapid click count
|
||||
player.setRapidClickCount(3);
|
||||
assertEquals(3, player.getRapidClickCount());
|
||||
assertNotEquals(rapidClickCount, player.getRapidClickCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_incrementRapidClickCount() {
|
||||
Player player = fixture[0];
|
||||
int rapidClickCount = player.getRapidClickCount();
|
||||
|
||||
// Increment the rapid click count
|
||||
player.incrementRapidClickCount();
|
||||
assertEquals(rapidClickCount + 1, player.getRapidClickCount());
|
||||
assertNotEquals(rapidClickCount, player.getRapidClickCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getRatioRapidClick() {
|
||||
final HashMap<Player, Double> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 83.33);
|
||||
put(fixture[1], 25.);
|
||||
put(fixture[2], 50.);
|
||||
}};
|
||||
|
||||
for (Player player : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(player), player.getRatioRapidClick());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getDeck() {
|
||||
final HashMap<Player, Deck> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], new Deck(2,10));
|
||||
put(fixture[1], new Deck(4,13));
|
||||
put(fixture[2], new Deck(3,6));
|
||||
}};
|
||||
|
||||
for (Player player : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(player), player.getDeck());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_toString() {
|
||||
String expected = "Player{id=4, game=Game{id=4, createdAt=Sun Mar 04 00:00:00 CET 2001, difficulty=HARD, nbRounds=18, nbColors=3, nbValuesPerColor=6}, user=User{id='null', username=username4, email=email4, birth='Tue Feb 01 00:00:00 CET 2000', gender='OTHER'}, score=15, winner=true, clickCount=10, rightClickCount=5, rapidClickCount=5}";
|
||||
|
||||
assertEquals(expected, fixture[3].toString());
|
||||
}
|
||||
}
|
||||
@@ -1,152 +0,0 @@
|
||||
package uppa.project.pojo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.pojo.RecoveryPasswordToken;
|
||||
import uppa.project.database.pojo.User;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
class RecoveryPasswordTokenTest {
|
||||
|
||||
RecoveryPasswordToken[] fixture;
|
||||
static User[] usersFixture;
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
usersFixture = new User[]{
|
||||
new User(new BigDecimal(1), "username1", "email1", "password1", new Date(96, Calendar.FEBRUARY, 20), User.Gender.MALE, null),
|
||||
new User(new BigDecimal(2), "username2", "email2", "password2", new Date(101, Calendar.MAY, 12), User.Gender.OTHER, null),
|
||||
new User(new BigDecimal(3), "username3", "email3", "password3", new Date(100, Calendar.SEPTEMBER, 30), User.Gender.FEMALE, null)
|
||||
};
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
void beforeEach() {
|
||||
fixture = new RecoveryPasswordToken[]{
|
||||
new RecoveryPasswordToken(
|
||||
new BigDecimal(1),
|
||||
"token1",
|
||||
usersFixture[0],
|
||||
new Date(124, Calendar.MARCH,28)),
|
||||
new RecoveryPasswordToken(
|
||||
new BigDecimal(2),
|
||||
"token2", usersFixture[1]
|
||||
, new Date(124, Calendar.JULY,14)),
|
||||
new RecoveryPasswordToken(
|
||||
new BigDecimal(3),
|
||||
"token3",
|
||||
usersFixture[2],
|
||||
new Date(124, Calendar.SEPTEMBER,5))
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void test_constructor() {
|
||||
new RecoveryPasswordToken(new BigDecimal(1), "token1", new User(), new Date(124, Calendar.FEBRUARY, 2));
|
||||
new RecoveryPasswordToken(new BigDecimal(2), "token2", new User(), new Date(124, Calendar.APRIL, 4));
|
||||
new RecoveryPasswordToken(new BigDecimal(3), "token3", new User(), new Date(124, Calendar.JUNE, 6));
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getId() {
|
||||
HashMap<RecoveryPasswordToken, BigDecimal> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], new BigDecimal(1));
|
||||
put(fixture[1], new BigDecimal(2));
|
||||
put(fixture[2], new BigDecimal(3));
|
||||
}};
|
||||
|
||||
for (RecoveryPasswordToken token : TESTS.keySet())
|
||||
assertEquals(TESTS.get(token), token.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getToken() {
|
||||
HashMap<RecoveryPasswordToken, String> TESTS = new HashMap<>() {
|
||||
{
|
||||
put(fixture[0], "token1");
|
||||
put(fixture[1], "token2");
|
||||
put(fixture[2], "token3");
|
||||
}};
|
||||
|
||||
for (RecoveryPasswordToken token : TESTS.keySet())
|
||||
assertEquals(TESTS.get(token), token.getToken());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setToken() {
|
||||
final String EXPECTED = "new-token";
|
||||
final RecoveryPasswordToken TOKEN = new RecoveryPasswordToken(new BigDecimal(1), "token", new User(), new Date());
|
||||
|
||||
TOKEN.setToken(EXPECTED);
|
||||
assertEquals(EXPECTED, TOKEN.getToken());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getUser() {
|
||||
final HashMap<RecoveryPasswordToken, User> TESTS = new HashMap<>() {
|
||||
{
|
||||
put(fixture[0], usersFixture[0]);
|
||||
put(fixture[1], usersFixture[1]);
|
||||
put(fixture[2], usersFixture[2]);
|
||||
}};
|
||||
for (RecoveryPasswordToken token : TESTS.keySet())
|
||||
assertEquals(TESTS.get(token), token.getUser());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setUser() {
|
||||
RecoveryPasswordToken token = fixture[0];
|
||||
assertEquals(usersFixture[0], token.getUser());
|
||||
|
||||
User newUser = usersFixture[1];
|
||||
token.setUser(newUser);
|
||||
assertEquals(newUser, token.getUser());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getExpiresAt() {
|
||||
final HashMap<RecoveryPasswordToken, Date> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], new Date(124, Calendar.MARCH, 28));
|
||||
put(fixture[1], new Date(124, Calendar.JULY, 14));
|
||||
put(fixture[2], new Date(124, Calendar.SEPTEMBER, 5));
|
||||
}};
|
||||
for (RecoveryPasswordToken token : TESTS.keySet())
|
||||
assertEquals(TESTS.get(token), token.getExpiresAt());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setExpiresAt() {
|
||||
RecoveryPasswordToken token = fixture[0];
|
||||
assertEquals(new Date(124, Calendar.MARCH, 28), token.getExpiresAt());
|
||||
Date newDate = new Date(124, Calendar.FEBRUARY, 3);
|
||||
token.setExpiresAt(newDate);
|
||||
assertEquals(newDate, token.getExpiresAt());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_ToString() {
|
||||
final HashMap<RecoveryPasswordToken, String> TESTS = new HashMap<>() {{
|
||||
put(fixture[0],
|
||||
"RecoveryPasswordToken{id=1, token=token1, " +
|
||||
"user=User{id='1', username=username1, email=email1, birth='Tue Feb 20 00:00:00 CET 1996', gender='MALE'}, " +
|
||||
"expiresAt=Thu Mar 28 00:00:00 CET 2024}");
|
||||
put(fixture[1],
|
||||
"RecoveryPasswordToken{id=2, token=token2, " +
|
||||
"user=User{id='2', username=username2, email=email2, birth='Sat May 12 00:00:00 CEST 2001', gender='OTHER'}, " +
|
||||
"expiresAt=Sun Jul 14 00:00:00 CEST 2024}");
|
||||
put(fixture[2],
|
||||
"RecoveryPasswordToken{id=3, token=token3, " +
|
||||
"user=User{id='3', username=username3, email=email3, birth='Sat Sep 30 00:00:00 CEST 2000', gender='FEMALE'}, " +
|
||||
"expiresAt=Thu Sep 05 00:00:00 CEST 2024}");
|
||||
}};
|
||||
for (RecoveryPasswordToken token : TESTS.keySet())
|
||||
assertEquals(TESTS.get(token), token.toString());
|
||||
}
|
||||
}
|
||||
@@ -1,370 +0,0 @@
|
||||
package uppa.project.pojo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.pojo.Game;
|
||||
import uppa.project.database.pojo.Player;
|
||||
import uppa.project.database.pojo.User;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class UserTest {
|
||||
|
||||
User[] fixture;
|
||||
static Player[][] playersFixture;
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
|
||||
playersFixture = new Player[][]{
|
||||
{
|
||||
new Player(new BigDecimal(1),
|
||||
new Game(Game.Difficulty.EASY, 50,20, 4, 13),
|
||||
new User(), 10, false, 10, 9, 5)
|
||||
},
|
||||
{
|
||||
new Player(new BigDecimal(2),
|
||||
new Game(Game.Difficulty.EASY, 50, 20, 4, 13),
|
||||
new User(), 10, true, 20, 17, 12),
|
||||
new Player(new BigDecimal(3),
|
||||
new Game(Game.Difficulty.EASY, 10, 20, 4, 13),
|
||||
new User(), 10, false, 15, 5, 2)
|
||||
},
|
||||
{
|
||||
new Player(new BigDecimal(4),
|
||||
new Game(Game.Difficulty.EASY, 50, 20, 4, 13),
|
||||
new User(), 10, true, 5, 3, 1),
|
||||
new Player(new BigDecimal(5),
|
||||
new Game(Game.Difficulty.EASY, 10, 20, 4, 13),
|
||||
new User(), 10, true, 16, 16, 10),
|
||||
new Player(new BigDecimal(6),
|
||||
new Game(Game.Difficulty.EASY, 15, 20, 4, 13),
|
||||
new User(), 10, true, 17, 11, 4)
|
||||
}
|
||||
};
|
||||
}
|
||||
@BeforeEach
|
||||
void beforeEach() {
|
||||
fixture = new User[]{
|
||||
new User(new BigDecimal(1), "username1", "email1", "password1",
|
||||
new Date(1996 - 1900, Calendar.FEBRUARY, 20), User.Gender.MALE, new ArrayList<>(Arrays.asList(playersFixture[0]))),
|
||||
new User(new BigDecimal(2), "username2", "email2", "password2",
|
||||
new Date(1998 - 1900, Calendar.JUNE, 6), User.Gender.FEMALE, new ArrayList<>(Arrays.asList(playersFixture[1]))),
|
||||
new User(new BigDecimal(3), "username3", "email3", "password3",
|
||||
new Date(1996 - 1900, Calendar.SEPTEMBER, 18), User.Gender.OTHER, new ArrayList<>(Arrays.asList(playersFixture[2]))),
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_constructor() {
|
||||
new User();
|
||||
new User("username", "email", "password", new Date(), User.Gender.OTHER);
|
||||
new User(new BigDecimal(1), "username1", "email1", "password1", new Date(), User.Gender.MALE, null);
|
||||
new User(new BigDecimal(2), "username1", "email1", "password1", new Date(), User.Gender.MALE, new ArrayList<Player>());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getId() {
|
||||
final HashMap<User, BigDecimal> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], new BigDecimal(1));
|
||||
put(fixture[1], new BigDecimal(2));
|
||||
put(fixture[2], new BigDecimal(3));
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getUsername() {
|
||||
final HashMap<User, String> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], "username1");
|
||||
put(fixture[1], "username2");
|
||||
put(fixture[2], "username3");
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getUsername());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setUsername() {
|
||||
User user = fixture[0];
|
||||
assertEquals("username1", user.getUsername());
|
||||
|
||||
// Change the username
|
||||
user.setUsername("new-username");
|
||||
assertEquals("new-username", user.getUsername());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getEmail() {
|
||||
final HashMap<User, String> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], "email1");
|
||||
put(fixture[1], "email2");
|
||||
put(fixture[2], "email3");
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getEmail());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setEmail() {
|
||||
User user = fixture[0];
|
||||
assertEquals("email1", user.getEmail());
|
||||
|
||||
// Change the email
|
||||
user.setEmail("new-email");
|
||||
assertEquals("new-email", user.getEmail());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getPassword() {
|
||||
final HashMap<User, String> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], "password1");
|
||||
put(fixture[1], "password2");
|
||||
put(fixture[2], "password3");
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getPassword());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void test_setPassword() {
|
||||
User user = fixture[0];
|
||||
assertEquals("password1", user.getPassword());
|
||||
|
||||
// Change the password
|
||||
user.setPassword("new-password");
|
||||
assertEquals(User.hashPassword("new-password"), user.getPassword());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getBirth() {
|
||||
final HashMap<User, Date> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], new Date(1996 - 1900, Calendar.FEBRUARY, 20));
|
||||
put(fixture[1], new Date(1998 - 1900, Calendar.JUNE, 6));
|
||||
put(fixture[2], new Date(1996 - 1900, Calendar.SEPTEMBER, 18));
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getBirth());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void test_setBirth() {
|
||||
User user = fixture[0];
|
||||
assertEquals(new Date(1996 - 1900, Calendar.FEBRUARY, 20), user.getBirth());
|
||||
|
||||
// Change the birth
|
||||
user.setBirth(new Date(1996 - 1900, Calendar.MARCH, 20));
|
||||
assertEquals(new Date(1996 - 1900, Calendar.MARCH, 20), user.getBirth());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getGender() {
|
||||
final HashMap<User, User.Gender> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], User.Gender.MALE);
|
||||
put(fixture[1], User.Gender.FEMALE);
|
||||
put(fixture[2], User.Gender.OTHER);
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getGender());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setGender() {
|
||||
User user = fixture[0];
|
||||
assertEquals(User.Gender.MALE, user.getGender());
|
||||
|
||||
// Change the gender
|
||||
user.setGender(User.Gender.FEMALE);
|
||||
assertEquals(User.Gender.FEMALE, user.getGender());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_UserGender() {
|
||||
|
||||
// Expect the right number of genders
|
||||
assertEquals(3, User.Gender.values().length);
|
||||
|
||||
// Expect the right name and ordinal for each gender
|
||||
final String[] EXPECTED_NAMES = new String[]{
|
||||
"MALE", "FEMALE", "OTHER"
|
||||
};
|
||||
|
||||
for (int index = 0; index < EXPECTED_NAMES.length; index++) {
|
||||
String expectedName = EXPECTED_NAMES[index];
|
||||
User.Gender currentValue = User.Gender.values()[index];
|
||||
|
||||
assertEquals(index, currentValue.ordinal()); // Ordinal
|
||||
assertEquals(expectedName, currentValue.name()); // Name
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_verifyPassword() {
|
||||
String [] passwords = {"password1", "password2", "password3"};
|
||||
User[] users = {
|
||||
new User("username1", "email1", "password1", new Date(), User.Gender.MALE),
|
||||
new User("username2", "email2", "password2", new Date(), User.Gender.MALE),
|
||||
new User("username3", "email3", "password3", new Date(), User.Gender.MALE)
|
||||
};
|
||||
for (int index = 0 ; index< users.length; index++) {
|
||||
assertTrue(users[index].verifyPassword(passwords[index]));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getPlayedGames() {
|
||||
final HashMap<User, ArrayList<Player>> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], new ArrayList<>(Arrays.asList(playersFixture[0])));
|
||||
put(fixture[1], new ArrayList<>(Arrays.asList(playersFixture[1])));
|
||||
put(fixture[2], new ArrayList<>(Arrays.asList(playersFixture[2])));
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getPlayedGames());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_addPlayedGame() {
|
||||
User user = fixture[0];
|
||||
Player player = new Player(new BigDecimal(4),
|
||||
new Game(Game.Difficulty.EASY, 10,20, 4, 13),
|
||||
new User(), 10, true, 5, 3, 1);
|
||||
user.addPlayedGame(player);
|
||||
ArrayList<Player> expected = new ArrayList<>(Arrays.asList(playersFixture[0]));
|
||||
expected.add(player);
|
||||
assertEquals(expected, user.getPlayedGames());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getNbPlayedGame() {
|
||||
final HashMap<User, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 1);
|
||||
put(fixture[1], 2);
|
||||
put(fixture[2], 3);
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getPlayedGames().size());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getNbWin() {
|
||||
final HashMap<User, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 0);
|
||||
put(fixture[1], 1);
|
||||
put(fixture[2], 3);
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getNbWin());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getWinRate() {
|
||||
|
||||
final HashMap<User, Double> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 0.0);
|
||||
put(fixture[1], 50.);
|
||||
put(fixture[2], 100.);
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getWinRate());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getNbClicks() {
|
||||
final HashMap<User, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 10);
|
||||
put(fixture[1], 35);
|
||||
put(fixture[2], 38);
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getNbClicks());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getNbRightClicks() {
|
||||
final HashMap<User, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 9);
|
||||
put(fixture[1], 22);
|
||||
put(fixture[2], 30);
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getNbRightClicks());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getRightClickPercentRate() {
|
||||
final HashMap<User, Double> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 90.);
|
||||
put(fixture[1], 62.85);
|
||||
put(fixture[2], 78.94);
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getRightClickPercentRate());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getNbRapidClicks() {
|
||||
final HashMap<User, Integer> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 5);
|
||||
put(fixture[1], 14);
|
||||
put(fixture[2], 15);
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getNbRapidClicks());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getRapidClickPercentRate() {
|
||||
final HashMap<User, Double> TESTS = new HashMap<>() {{
|
||||
put(fixture[0], 50.);
|
||||
put(fixture[1], 40.);
|
||||
put(fixture[2], 39.47);
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.getRapidClickPercentRate());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_toString() {
|
||||
final HashMap<User, String> TESTS = new HashMap<>() {{
|
||||
put(new User(new BigDecimal(1), "username1", "email1", "password1",
|
||||
new Date(1996-1900, 1, 4), User.Gender.MALE,null),
|
||||
"User{id='1', username=username1, email=email1, birth='Sun Feb 04 00:00:00 CET 1996', gender='MALE'}"
|
||||
);
|
||||
put(new User(new BigDecimal(2), "username2", "email2", "password2",
|
||||
new Date(1996-1900, 2, 6), User.Gender.FEMALE,null),
|
||||
"User{id='2', username=username2, email=email2, birth='Wed Mar 06 00:00:00 CET 1996', gender='FEMALE'}");
|
||||
put(new User(new BigDecimal(3), "username3", "email3", "password3",
|
||||
new Date(1996-1900, 3, 5), User.Gender.OTHER,null),
|
||||
"User{id='3', username=username3, email=email3, birth='Fri Apr 05 00:00:00 CEST 1996', gender='OTHER'}");
|
||||
}};
|
||||
for (User user : TESTS.keySet()) {
|
||||
assertEquals(TESTS.get(user), user.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
package uppa.project.provider;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import uppa.project.database.dao.EntityManagerProvider;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class EntityManagerProviderTest {
|
||||
|
||||
@BeforeAll
|
||||
static void setUp() {
|
||||
EntityManagerProvider.setPersitenceUnitName("test");
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getInstance() {
|
||||
// If the method throws an exception, make sure the database is running
|
||||
assertDoesNotThrow(EntityManagerProvider::getInstance);
|
||||
|
||||
// Check if the object is unique
|
||||
EntityManager entity1 = EntityManagerProvider.getInstance();
|
||||
EntityManager entity2 = EntityManagerProvider.getInstance();
|
||||
|
||||
assertNotNull(entity1);
|
||||
assertNotNull(entity2);
|
||||
assertEquals(entity1, entity2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_close() {
|
||||
// If the method throws an exception, make sure the database is running
|
||||
assertDoesNotThrow(EntityManagerProvider::getInstance);
|
||||
|
||||
// Check if the object is closed
|
||||
EntityManager entity = EntityManagerProvider.getInstance();
|
||||
EntityManagerProvider.close();
|
||||
|
||||
assertFalse(entity::isOpen);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user