//Imports const uno = require('../js/uno'); const Game = require('../js/Game'); //Instanz von CARD_COLORS aus uno.js const CARD_COLORS = uno.CARD_COLORS; //Speichert Kartenanzahl der jeweiligen Farbe let green, red, yellow, blue; //Testet das Generieren von dem Pool mit allen Uno Karten drin describe('Pool aus Karten generieren', () => { //Game wird erstellt mit 0 Spielern und ohne Regeln let game = new Game(0, []); //Speichert die Art der Karten let reverse = [], plus2 = [], plus4 = [], skip = [], chooseColor = [], normalCards = []; //Vor jedem durchlauf Kartenanzahl der Farben auf 0 setzen, //neues Game erstellen beforeEach(() => { game = new Game(0, []); green = 0; red = 0; yellow = 0; blue = 0; }); //Sortiert alle Karten aus cardPool in Arrays der Art, um später die Überprüfungen auszuführen game.cardPool.forEach(function (element){ switch (element.name){ case "R": reverse.push(element); break; case "+2": plus2.push(element); break; case "+4": plus4.push(element); break; case "S": skip.push(element); break; case "CC": chooseColor.push(element); break; default: normalCards.push(element); break; } }); it('Reverse: 2x in jeder Farbe (8)', () => { //Sortiert reverse nach Farben und speichert in green,red,yellow,blue getColorAmounts(reverse); //Jede Farbe muss genau 2 Reverse Karten besitzen expect(green).toBe(2); expect(red).toBe(2); expect(yellow).toBe(2); expect(blue).toBe(2); }); it('+2: 2x in jeder Farbe (8)', () => { //Sortiert plus2 nach Farben und speichert in green,red,yellow,blue getColorAmounts(plus2); //Jede Farbe muss genau 2 +2 Karten besitzen expect(green).toBe(2); expect(red).toBe(2); expect(yellow).toBe(2); expect(blue).toBe(2); }); it('Skip: 2x in jeder Farbe (8)', () => { //Sortiert skip nach Farben und speichert in green,red,yellow,blue getColorAmounts(skip); //Jede Farbe muss genau 2 Aussetzer(Skip) Karten besitzen expect(green).toBe(2); expect(red).toBe(2); expect(yellow).toBe(2); expect(blue).toBe(2); }); it('ChooseColor: 4x', () => { //Es muss genau 4 Farbwahl-Karten geben expect(chooseColor.length).toBe(4); }); it('+4: 4x', () => { //Es muss genau 4 +4-Karten geben expect(plus4.length).toBe(4); }); it('normale Karten: 2x jede 1-9, 4x 0 (76)', () => { //nimmt 3 Zahlen und testet diese let zero = 0; let seven = 0; let one = 0; //guckt ob insgesamt 76 normale Karten im Array sind expect(normalCards.length).toBe(76); //testet die 3 Zahlen normalCards.forEach(function (element){ //Anzahl 0len in zero if(element.name === 0) zero++; //Anzahl 7 - Grün in seven else if(element.name === 7 && element.color === CARD_COLORS[2]) seven++; //Anzahl 1sen in one else if(element.name === 1) one++; }); //Testet ob genau 4 0len im Deck sind expect(zero).toBe(4); //Testet ob 2 Grüne 7ben im Deck sind expect(seven).toBe(2); //Testet ob 8 1sen im Deck sind expect(one).toBe(8); }); }) //Setzt die Kartenanzahl der Farben für array function getColorAmounts(array){ //Für jedes Element im übergebenen Array wird für dessen Farbe die dazugehörige Variable um eins erhöht array.forEach(function (element){ switch (element.color){ case "GREEN": green++; break; case "RED": red++; break; case "YELLOW": yellow++; break; case "BLUE": blue++; break; default: break; } }); }