Browse Source

UnitTest für KartenFunktionen hinzugefügt

main
Nicolas Fritz 2 years ago
parent
commit
8e6166975b
  1. 4
      uno/node/js/Game.js
  2. 11
      uno/node/js/Player.js
  3. 3
      uno/node/js/cards/special/ChooseColor.js
  4. 4
      uno/node/js/cards/special/PlusAmount.js
  5. 98
      uno/node/tests/test_Card.test.js

4
uno/node/js/Game.js

@ -16,7 +16,7 @@ class Game {
this._cardOnDeck = null; //Karte die auf dem Tisch liegt
this._currentPlayer = 0; //Aktueller Spieler Index im Player Array
this._direction = 0; //Spielrichtung
this._direction = 1; //Spielrichtung
this._players = []; //Array mit allen Spielern drin
this._cardPool = [] //Pool aus Karten
@ -124,7 +124,7 @@ class Game {
}
//Aktuellen Spieler kann, darf nicht mehr Spielen
this._currentPlayer.canPlay = false;
this.players[this._currentPlayer].canPlay = false;
//nächster Spieler wird gesetzt
this._currentPlayer = this.nextPlayer();

11
uno/node/js/Player.js

@ -1,5 +1,6 @@
//Klasse Player für Spieler einer Uno Runde
const uno = require("./uno");
const {CARD_COLORS} = require("./uno");
class Player {
@ -57,6 +58,12 @@ class Player {
this._game.cardOnDeck.putSelf();
}
selectColor(){
//Todo: Spieler Möglichkeit geben Farbe zu wählen, nicht random
return CARD_COLORS[Math.floor(Math.random() * 4) + 1];
}
//Gibt den Namen eines Spielers zurück
get name() {
return this._name;
@ -77,6 +84,10 @@ class Player {
return this._canPlay;
}
set canPlay(bool){
this._canPlay = bool;
}
//Gibt das SpielerDeck zurück
get hand(){
return this._hand;

3
uno/node/js/cards/special/ChooseColor.js

@ -17,9 +17,8 @@ class ChooseColor extends Card {
//Führt eigene Logik aus (Wählt farbe aus)
putSelf() {
//Todo: Spieler Möglichkeit geben Farbe zu wählen, nicht random
//Setzt die Farbe der Karte auf eine Random Farbe
this._color = CARD_COLORS[Math.floor(Math.random() * 4) + 1];
this._color = this.game.players[this.game.currentPlayer].selectColor();
//Logik von Card.js ausführen
super.putSelf();

4
uno/node/js/cards/special/PlusAmount.js

@ -23,6 +23,10 @@ class PlusAmount extends Card {
//lässt den nächsten Spieler den PlusAmount der Karte ziehen
this.game.players[this.game.nextPlayer()].drawCard(this._plus);
if(this._plus === 4){
this._color = this.game.players[this.game.currentPlayer].selectColor();
}
//Logik von Card.js ausführen
super.putSelf();
}

98
uno/node/tests/test_Card.test.js

@ -5,6 +5,7 @@ const ChooseColor = require('../js/cards/special/ChooseColor');
const Skip = require('../js/cards/special/Skip');
const Reverse = require('../js/cards/special/Reverse');
const PlusAmount = require('../js/cards/special/PlusAmount');
const Game = require('../js/Game');
//Instanz CARD_COLORS aus uno.js
const CARD_COLORS = uno.CARD_COLORS;
@ -99,6 +100,103 @@ describe('Karten erstellen', () => {
});
describe('Kartenfunktionen', () => {
let game = new Game(2, null);
let card;
//Spieler brauchen karten, sonst beendet sich das Spiel
game.players[0].canPlay = true;
game.players[1].canPlay = true;
game.players[0].drawCard(2);
game.players[1].drawCard(2);
it('Card - nächster Spieler an der Reihe', () => {
card = new Card('8', CARD_COLORS[2], game);
let player = game.currentPlayer;
card.putSelf();
//Der nächste Spieler muss an der Reihe sein
expect(player).toBe(game.nextPlayer());
});
it('CC - Setzen der KartenFarbe', () => {
card = new ChooseColor(game);
card.putSelf();
//Die farbe von CC muss gesetzt werden
let bool = (card.color === "NONE");
expect(bool).toBe(false);
});
it('R - Wechseln der Spielrichtung', () => {
card = new Reverse(CARD_COLORS[2], game);
card.putSelf();
//Die Spielrichtung muss geändert werden
expect(game.direction).toBe(2);
});
it('S - nächster Spieler wird übersprungen', () => {
card = new Skip(CARD_COLORS[2], game);
let currentPlayer = game.currentPlayer;
card.putSelf();
//Der 2te Spieler wurde übersprungen, der Gleiche Spieler muss an der Reihe sein
expect(currentPlayer).toBe(game.currentPlayer);
});
it('+2 - nächster Spieler +2 Karten', () => {
card = new PlusAmount(game, CARD_COLORS[2]);
let nextPlayer = game.players[game.nextPlayer()];
let playerDeck = nextPlayer.hand.length
card.putSelf();
//Der nächste Spieler muss 2 Karten mehr auf der Hand haben
expect(playerDeck).toBe(nextPlayer.hand.length - 2);
});
it('+4 - Farbe gesetzt, nächster Spieler +4 Karten', () => {
card = new PlusAmount(game);
let nextPlayer = game.players[game.nextPlayer()];
let playerDeck = nextPlayer.hand.length
card.putSelf();
//Der nächste Spieler muss 4 Karten mehr auf der Hand haben
expect(playerDeck).toBe(nextPlayer.hand.length - 4);
//Die farbe von +4 muss gesetzt werden
let bool = (card.color === "NONE");
expect(bool).toBe(false);
});
});
//Testet eine Karte auf die Eigenschaften von Card.js
function testCreatedCard(card, number, card_colors){

Loading…
Cancel
Save