You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
245 lines
12 KiB
245 lines
12 KiB
import XCTest
|
|
@testable import Model
|
|
class BoardTests: XCTestCase {
|
|
|
|
// Initialisez un Board de test avec une configuration de test
|
|
var testBoard: Board!
|
|
|
|
override func setUp() {
|
|
super.setUp()
|
|
// Initialisez un Board avec une configuration de test
|
|
testBoard = Board(withGrid: initialTestConfiguration)
|
|
}
|
|
|
|
override func tearDown() {
|
|
// Nettoyez après chaque test si nécessaire
|
|
testBoard = nil
|
|
super.tearDown()
|
|
}
|
|
|
|
// Testez l'initialisateur de Board
|
|
func testBoardInitializer() {
|
|
XCTAssertNotNil(testBoard) // Vérifiez que le Board a été initialisé avec succès
|
|
|
|
// Vérifiez que la taille du plateau correspond à la configuration initiale
|
|
XCTAssertEqual(testBoard.nbRows, initialTestConfiguration.count)
|
|
XCTAssertEqual(testBoard.nbColumns, initialTestConfiguration[0].count)
|
|
|
|
// Ajoutez d'autres vérifications si nécessaire pour vous assurer que le plateau a été initialisé correctement
|
|
}
|
|
|
|
// Testez countPieces(of:)
|
|
func testCountPiecesOfPlayer() {
|
|
XCTAssertEqual(testBoard.countPieces(of: .player1), expectedPlayer1PieceCount)
|
|
XCTAssertEqual(testBoard.countPieces(of: .player2), expectedPlayer2PieceCount)
|
|
}
|
|
|
|
// Testez countPieces()
|
|
func testCountTotalPieces() {
|
|
let (countPlayer1, countPlayer2) = testBoard.countPieces()
|
|
XCTAssertEqual(countPlayer1, expectedPlayer1PieceCount)
|
|
XCTAssertEqual(countPlayer2, expectedPlayer2PieceCount)
|
|
}
|
|
|
|
// Testez removePiece(atRow:andColumn:)
|
|
func testRemovePiece() {
|
|
let initialCell = testBoard.getCell(atRow: 0, column: 0)
|
|
XCTAssertNotNil(initialCell?.piece)
|
|
let result = testBoard.removePiece(atRow: 0, andColumn: 0)
|
|
XCTAssertEqual(result, .ok)
|
|
|
|
// Vérifiez que la pièce a été supprimée correctement
|
|
let removedCell = testBoard.getCell(atRow: 0, column: 0)
|
|
XCTAssertNil(removedCell?.piece)
|
|
}
|
|
|
|
// Testez insert(piece:atRow:andColumn:)
|
|
func testInsertPiece() {
|
|
// Supprimez toute pièce existante dans la case cible (si elle existe)
|
|
let initialCell = testBoard.getCell(atRow: 0, column: 0)
|
|
if initialCell?.piece != nil {
|
|
let removeResult = testBoard.removePiece(atRow: 0, andColumn: 0)
|
|
XCTAssertEqual(removeResult, .ok)
|
|
}
|
|
|
|
// Insérez une nouvelle pièce dans la case
|
|
let insertResult = testBoard.insert(piece: Piece(withOwner: .player1, andAnimal: .lion), atRow: 0, andColumn: 0)
|
|
XCTAssertEqual(insertResult, .ok)
|
|
|
|
// Vérifiez que la pièce a été insérée correctement
|
|
let cell = testBoard.getCell(atRow: 0, column: 0)
|
|
XCTAssertNotNil(cell?.piece)
|
|
XCTAssertEqual(cell?.piece?.owner, .player1)
|
|
XCTAssertEqual(cell?.piece?.animal, .lion)
|
|
}
|
|
|
|
// Exemple de données de test pour la configuration initiale
|
|
let initialTestConfiguration: [[Cell]] = [
|
|
// Ligne 1
|
|
[Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .lion)),
|
|
Cell(ofType: .jungle), Cell(ofType: .trap), Cell(ofType: .den), Cell(ofType: .trap),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .tiger))],
|
|
|
|
// Ligne 2
|
|
[Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .dog)),
|
|
Cell(ofType: .jungle), Cell(ofType: .trap), Cell(ofType: .jungle),
|
|
Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .cat)), Cell(ofType: .jungle)],
|
|
|
|
// Ligne 3
|
|
[Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .rat)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .leopard)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .wolf)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .elephant))],
|
|
|
|
// Lignes 4 à 7 (Eau et Jungle)
|
|
[Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water),
|
|
Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water), Cell(ofType: .jungle)],
|
|
|
|
[Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water),
|
|
Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water), Cell(ofType: .jungle)],
|
|
|
|
[Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water),
|
|
Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water), Cell(ofType: .jungle)],
|
|
|
|
[Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water),
|
|
Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water), Cell(ofType: .jungle)],
|
|
|
|
// Ligne 8
|
|
[Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .elephant)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .wolf)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .leopard)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .rat))],
|
|
|
|
// Ligne 9
|
|
[Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .cat)),
|
|
Cell(ofType: .jungle), Cell(ofType: .trap), Cell(ofType: .jungle),
|
|
Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .dog)), Cell(ofType: .jungle)],
|
|
|
|
// Ligne 10
|
|
[Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .tiger)),
|
|
Cell(ofType: .jungle), Cell(ofType: .trap), Cell(ofType: .den), Cell(ofType: .trap),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .lion))]
|
|
]
|
|
|
|
let expectedPlayer1PieceCount = 8 // Le nombre attendu de pièces pour le joueur 1
|
|
let expectedPlayer2PieceCount = 8 // Le nombre attendu de pièces pour le joueur 2
|
|
}
|
|
|
|
class BoardPerformanceTests: XCTestCase {
|
|
|
|
// Initialisez un Board de test avec une configuration de test
|
|
var testBoard: Board!
|
|
|
|
override func setUp() {
|
|
super.setUp()
|
|
// Initialisez un Board avec une configuration de test
|
|
testBoard = Board(withGrid: initialTestConfiguration)
|
|
}
|
|
|
|
override func tearDown() {
|
|
// Nettoyez après chaque test si nécessaire
|
|
testBoard = nil
|
|
super.tearDown()
|
|
}
|
|
|
|
// Test de performance pour countPieces(of:)
|
|
func testPerformanceCountPiecesOfPlayer() {
|
|
self.measure {
|
|
for _ in 0..<1000 { // Exécutez le test 1000 fois pour mesurer les performances
|
|
let _ = testBoard.countPieces(of: .player1)
|
|
}
|
|
}
|
|
}
|
|
|
|
// Test de performance pour countPieces()
|
|
func testPerformanceCountTotalPieces() {
|
|
self.measure {
|
|
for _ in 0..<1000 { // Exécutez le test 1000 fois pour mesurer les performances
|
|
let _ = testBoard.countPieces()
|
|
}
|
|
}
|
|
}
|
|
|
|
// Test de performance pour insert(piece:atRow:andColumn:)
|
|
func testPerformanceInsertPiece() {
|
|
let pieceToInsert = Piece(withOwner: .player1, andAnimal: .lion)
|
|
self.measure {
|
|
for _ in 0..<1000 { // Exécutez le test 1000 fois pour mesurer les performances
|
|
let _ = testBoard.insert(piece: pieceToInsert, atRow: 0, andColumn: 0)
|
|
// Nettoyez après chaque itération pour réinitialiser l'état du plateau
|
|
let _ = testBoard.removePiece(atRow: 0, andColumn: 0)
|
|
}
|
|
}
|
|
}
|
|
|
|
// Test de performance pour removePiece(atRow:andColumn:)
|
|
func testPerformanceRemovePiece() {
|
|
let pieceToRemove = Piece(withOwner: .player1, andAnimal: .lion)
|
|
let _ = testBoard.insert(piece: pieceToRemove, atRow: 0, andColumn: 0)
|
|
self.measure {
|
|
for _ in 0..<1000 { // Exécutez le test 1000 fois pour mesurer les performances
|
|
let _ = testBoard.removePiece(atRow: 0, andColumn: 0)
|
|
// Réinsérez la pièce après chaque itération pour réinitialiser l'état du plateau
|
|
let _ = testBoard.insert(piece: pieceToRemove, atRow: 0, andColumn: 0)
|
|
}
|
|
}
|
|
}
|
|
|
|
// Test de performance pour l'initialisateur de Board
|
|
func testPerformanceInitializeBoard() {
|
|
self.measure {
|
|
for _ in 0..<1000 { // Exécutez le test 1000 fois pour mesurer les performances
|
|
_ = Board(withGrid: initialTestConfiguration)
|
|
}
|
|
}
|
|
}
|
|
|
|
// Exemple de données de test pour la configuration initiale
|
|
let initialTestConfiguration: [[Cell]] = [
|
|
// Ligne 1
|
|
[Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .lion)),
|
|
Cell(ofType: .jungle), Cell(ofType: .trap), Cell(ofType: .den), Cell(ofType: .trap),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .tiger))],
|
|
|
|
// Ligne 2
|
|
[Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .dog)),
|
|
Cell(ofType: .jungle), Cell(ofType: .trap), Cell(ofType: .jungle),
|
|
Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .cat)), Cell(ofType: .jungle)],
|
|
|
|
// Ligne 3
|
|
[Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .rat)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .leopard)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .wolf)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player1, andAnimal: .elephant))],
|
|
|
|
// Lignes 4 à 7 (Eau et Jungle)
|
|
[Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water),
|
|
Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water), Cell(ofType: .jungle)],
|
|
|
|
[Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water),
|
|
Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water), Cell(ofType: .jungle)],
|
|
|
|
[Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water),
|
|
Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water), Cell(ofType: .jungle)],
|
|
|
|
[Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water),
|
|
Cell(ofType: .jungle), Cell(ofType: .water), Cell(ofType: .water), Cell(ofType: .jungle)],
|
|
|
|
// Ligne 8
|
|
[Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .elephant)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .wolf)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .leopard)),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .rat))],
|
|
|
|
// Ligne 9
|
|
[Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .cat)),
|
|
Cell(ofType: .jungle), Cell(ofType: .trap), Cell(ofType: .jungle),
|
|
Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .dog)), Cell(ofType: .jungle)],
|
|
|
|
// Ligne 10
|
|
[Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .tiger)),
|
|
Cell(ofType: .jungle), Cell(ofType: .trap), Cell(ofType: .den), Cell(ofType: .trap),
|
|
Cell(ofType: .jungle), Cell(ofType: .jungle, withPiece: Piece(withOwner: .player2, andAnimal: .lion))]
|
|
]
|
|
}
|