Merge pull request #54 from PM2-IT21bWIN-ruiz-mach-krea/testing

Testing
This commit is contained in:
Roman Schenk 2022-05-13 23:03:37 +02:00 committed by GitHub Enterprise
commit 9f745b3198
16 changed files with 260 additions and 34 deletions

View File

@ -8,7 +8,6 @@ import javafx.scene.control.Label;
import javafx.scene.layout.*; import javafx.scene.layout.*;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.scene.text.Font; import javafx.scene.text.Font;
import java.io.IOException; import java.io.IOException;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -169,8 +168,6 @@ public class Factory {
innerVbox.getChildren().add(label); innerVbox.getChildren().add(label);
} }
} }
/** /**

View File

@ -109,8 +109,9 @@ public class FactoryDecorator implements IsObservable {
logger.warning("Failed to open tournament file Error: " + e); logger.warning("Failed to open tournament file Error: " + e);
printMessageToFooter("Fehler beim lesen der Datei.", true); printMessageToFooter("Fehler beim lesen der Datei.", true);
String msg = factory.getLanguageConfigurator().getSelectedLanguage("IOException"); String msg = factory.getLanguageConfigurator().getSelectedLanguage("IOException");
logger.warning("Failed to open tournament file Error: " + e);
printMessageToFooter(msg, true); printMessageToFooter(msg, true);
} //TODO handle and logging }
} }
/** /**

View File

@ -2,7 +2,6 @@ package ch.zhaw.projekt2.turnierverwaltung;
import javafx.scene.control.Labeled; import javafx.scene.control.Labeled;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -103,11 +102,9 @@ public class LanguageConfigurator {
englishDictionary.put("participantNotExist","Participant does not exist"); englishDictionary.put("participantNotExist","Participant does not exist");
germanDictionary.put("placeNotExist","Teilnehmer existiert nicht"); germanDictionary.put("placeNotExist","Teilnehmer existiert nicht");
englishDictionary.put("placeNotExist","Participant does not exist"); englishDictionary.put("placeNotExist","Participant does not exist");
//SaveMsg //SaveMsg
germanDictionary.put("save","Zuletzt gespeichert: "); germanDictionary.put("save","Zuletzt gespeichert: ");
englishDictionary.put("save","Last saved: "); englishDictionary.put("save","Last saved: ");
//Alert //Alert
germanDictionary.put("yes","Ja"); germanDictionary.put("yes","Ja");
englishDictionary.put("yes","Yes"); englishDictionary.put("yes","Yes");
@ -119,7 +116,6 @@ public class LanguageConfigurator {
englishDictionary.put("headerDelete","Delete Tournament?"); englishDictionary.put("headerDelete","Delete Tournament?");
germanDictionary.put("contentDelete","Sind Sie sicher, dass sie das Turnier entfernen wollen?\nNach diesem Vorgang kann es nicht wiederhergestellt werden."); germanDictionary.put("contentDelete","Sind Sie sicher, dass sie das Turnier entfernen wollen?\nNach diesem Vorgang kann es nicht wiederhergestellt werden.");
englishDictionary.put("contentDelete","Are you shure you want to delete the tournament?\nAfter that there is no way to restore."); englishDictionary.put("contentDelete","Are you shure you want to delete the tournament?\nAfter that there is no way to restore.");
germanDictionary.put("titleSchedule","Neu erstellen"); germanDictionary.put("titleSchedule","Neu erstellen");
englishDictionary.put("titleSchedule","Create new"); englishDictionary.put("titleSchedule","Create new");
germanDictionary.put("headerSchedule","Spielplan neu erstellen?"); germanDictionary.put("headerSchedule","Spielplan neu erstellen?");

View File

@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
/** /**
* Class Team represents a team that can be added to a tournament * Class Team represents a team that can be added to a tournament
* (in the prototype there is no functionality for the team) * (in the prototype there is no functionality for the team)
@ -22,7 +21,7 @@ public class Team implements Participant {
* @param name the new name to be set * @param name the new name to be set
*/ */
public Team(String name) { public Team(String name) {
logger.fine("Setting the new name of the team as: " + name); logger.fine("Setting the new name of the team as: " + name);
setName(name); setName(name);
players = new ArrayList<>(); players = new ArrayList<>();
} }

View File

@ -21,7 +21,6 @@ public class MainWindow extends Application {
private Factory factory = new Factory(fileIO, tournamentDecorator, languageConfigurator); private Factory factory = new Factory(fileIO, tournamentDecorator, languageConfigurator);
private static final Logger logger = Logger.getLogger(FileIO.class.getCanonicalName()); private static final Logger logger = Logger.getLogger(FileIO.class.getCanonicalName());
/** /**
* Start method used to initialize the main window and load it's needed component * Start method used to initialize the main window and load it's needed component
* Also sets the scene and set some values like min width and height * Also sets the scene and set some values like min width and height

View File

@ -7,6 +7,7 @@ import javafx.fxml.FXML;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.Menu; import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem; import javafx.scene.control.MenuItem;
import java.util.logging.Logger;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -30,17 +31,19 @@ public class MainWindowController extends FXController {
@FXML @FXML
private Menu menuItemLanguage; private Menu menuItemLanguage;
/** /**
* Method changes the language Setting to german * Method changes the language Setting to german
*/ */
@FXML @FXML
void changeLangToGerman() { void changeLangToGerman() {
getLanguageConfigurator().changeLanguage(LanguageConfigurator.Language.GERMAN); getLanguageConfigurator().changeLanguage(LanguageConfigurator.Language.GERMAN);
logger.fine("language setting changed to german");
} }
@FXML @FXML
void changeLangToEnglish() { void changeLangToEnglish() {
getLanguageConfigurator().changeLanguage(LanguageConfigurator.Language.ENGLISH); getLanguageConfigurator().changeLanguage(LanguageConfigurator.Language.ENGLISH);
logger.fine("language setting changed to english");
} }
/** /**
@ -63,7 +66,9 @@ public class MainWindowController extends FXController {
} }
/**
* There is no content to load
*/
@Override @Override
public void loadContent() { public void loadContent() {
} }

View File

@ -6,6 +6,9 @@ import ch.zhaw.projekt2.turnierverwaltung.LanguageConfigurator;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.ButtonBar; import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType; import javafx.scene.control.ButtonType;
/**
* Class that is used to display the popup window to confirm a sensitive action of the user.
*/
import java.util.logging.Logger; import java.util.logging.Logger;
@ -23,6 +26,9 @@ public class AlertNewSchedule extends Alert {
private String headerDelete; private String headerDelete;
private String contentDelete; private String contentDelete;
/**
* Popup to ask the user if he is sure that he wants to reshuffle the game board.
*/
public AlertNewSchedule(LanguageConfigurator languageConfigurator){ public AlertNewSchedule(LanguageConfigurator languageConfigurator){
super(Alert.AlertType.WARNING); super(Alert.AlertType.WARNING);
yes = languageConfigurator.getSelectedLanguage("yes"); yes = languageConfigurator.getSelectedLanguage("yes");

View File

@ -45,7 +45,7 @@ public class GameController extends FXController{
} }
@FXML @FXML
void saveGameResult(Event event) { void saveGameResult() {
gameDecorator.saveGameResult(pointsTeamOne.getText(), pointsTeamTwo.getText()); gameDecorator.saveGameResult(pointsTeamOne.getText(), pointsTeamTwo.getText());
} }

View File

@ -0,0 +1,27 @@
package ch.zhaw.projekt2.turnierverwaltung;
import javafx.scene.layout.BorderPane;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.InOrder;
import org.mockito.Mockito;
import static org.mockito.Mockito.inOrder;
public class FactoryTest {
private Factory factory;
@Test
@DisplayName("Test method calls")
void checkMethodCalls() {
FileIO fileIO = Mockito.mock(FileIO.class);
TournamentDecorator td = Mockito.mock(TournamentDecorator.class);
LanguageConfigurator lc = Mockito.mock(LanguageConfigurator.class);
BorderPane pane = Mockito.mock(BorderPane.class);
factory = new Factory(fileIO,td,lc);
InOrder order = inOrder(fileIO,td,lc);
//factory.showTournamentList(pane);
}
}

View File

@ -0,0 +1,41 @@
package ch.zhaw.projekt2.turnierverwaltung;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
public class GameTest {
private Game game;
@Test
@DisplayName("TestWinner")
void testWinnerFunction() {
Participant one = Mockito.mock(Player.class);
Participant two = Mockito.mock(Player.class);
game = new Game(one,two);
game.setPoints1(1);
Assertions.assertEquals(one,game.getWinner());
game.setPoints2(2);
Assertions.assertEquals(two,game.getWinner());
}
@Test
@DisplayName("Test refresh Participant")
void refreshTest() {
Participant one = Mockito.mock(Player.class);
Participant two = Mockito.mock(Player.class);
Game game1 = new Game(one,two);
Game game2 = new Game(one,two);
game = new Game(game1,game2);
game1.setPoints1(2);
game2.setPoints2(2);
Assertions.assertNull(game.getParticipant1());
Assertions.assertNull(game.getParticipant2());
game.refreshParticipants();
Assertions.assertEquals(one,game.getParticipant1());
Assertions.assertEquals(two,game.getParticipant2());
}
}

View File

@ -0,0 +1,18 @@
package ch.zhaw.projekt2.turnierverwaltung;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
public class LanguageTest {
@Test
@DisplayName("Test Dictionary")
void test() {
LanguageConfigurator languageConfigurator = new LanguageConfigurator();
Assertions.assertEquals("Ja",languageConfigurator.getSelectedLanguage("yes"));
languageConfigurator.changeLanguage(LanguageConfigurator.Language.ENGLISH);
Assertions.assertEquals("Yes",languageConfigurator.getSelectedLanguage("yes"));
}
}

View File

@ -0,0 +1,25 @@
package ch.zhaw.projekt2.turnierverwaltung;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class PersonTest {
private Person person;
@Test
@DisplayName("Test invalid Parameter")
void invalidParams() {
try {
assertThrows(Person.InvalidPhoneNumberException.class,()->new Person("A","a",".sad"));
person = new Person("A","A","");
assertEquals("A", person.getFirstName());
assertEquals("A", person.getName());
assertEquals("", person.getPhoneNumber());
} catch (InvalidNameException | Person.InvalidPhoneNumberException e) {
fail();
}
}
}

View File

@ -0,0 +1,36 @@
package ch.zhaw.projekt2.turnierverwaltung;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class PlaceTest {
private Place place;
@Test
@DisplayName("Test Params")
void paramTest() {
Assertions.assertThrows(InvalidNameException.class, () -> new Place("*"));
try {
place = new Place("placeA");
assertEquals("placeA", place.getName());
} catch (InvalidNameException e) {
fail();
}
}
@Test
@DisplayName("Place Equals Test")
void testEqual() {
try {
place = new Place("placeA");
assertTrue(place.equals(place));
assertTrue(place.equals(new Place("placeA")));
assertFalse(place.equals(new Place("nads")));
} catch (InvalidNameException e) {
fail();
}
}
}

View File

@ -0,0 +1,39 @@
package ch.zhaw.projekt2.turnierverwaltung;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class PlayerTest {
private Player player;
@Test
@DisplayName("Test invalid Parameter")
void invalidParams() {
try {
assertThrows(Person.InvalidPhoneNumberException.class,()->new Player("A","a",".sad",""));
assertThrows(Player.InvalidDateException.class,()->new Player("A","a","","a"));
player = new Player("A","A","","");
assertEquals("A",player.getFirstName());
assertEquals("A",player.getName());
assertEquals("",player.getPhoneNumber());
assertNull(player.getDateOfBirth());
} catch (InvalidNameException | Person.InvalidPhoneNumberException | Player.InvalidDateException e) {
fail();
}
}
@Test
@DisplayName("Test equals")
void equalsTest() {
try {
player = new Player("A","A","","");
assertTrue(player.equals(player));
assertFalse(player.equals(new Player("B", "D", "", "")));
assertTrue(player.equals(new Player("A", "A", "", "")));
} catch (InvalidNameException | Person.InvalidPhoneNumberException | Player.InvalidDateException e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,31 @@
package ch.zhaw.projekt2.turnierverwaltung;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
public class TeamTest {
private Team team;
@Test
@DisplayName("Team Params")
void testParams() {
Player player = Mockito.mock(Player.class);
team = new Team("Team1");
for (int i = 0; i < 3; i++) {
Assertions.assertEquals(i,team.getPlayers().size());
team.addPlayer(player);
}
}
@Test
@DisplayName("Team Equals")
void equalTeam() {
team = new Team("A");
Assertions.assertTrue(team.equals(team));
Assertions.assertTrue(team.equals(new Team("A")));
Assertions.assertFalse(team.equals(new Team("B")));
}
}

View File

@ -44,20 +44,21 @@ public class TournamentTest {
//Checks if one Participant gets added //Checks if one Participant gets added
Participant participantOne = Mockito.mock(Player.class); Participant participantOne = Mockito.mock(Player.class);
when(participantOne.equals(any(Participant.class))).thenReturn(false); when(participantOne.equals(any(Participant.class))).thenReturn(false);
try {
assertEquals(0, tournament.getParticipants().size()); assertEquals(0, tournament.getParticipants().size());
tournament.saveParticipant(participantOne); tournament.saveParticipant(participantOne);
assertEquals(1, tournament.getParticipants().size()); assertEquals(1, tournament.getParticipants().size());
//Checks if a second Participant gets added
//Checks if a second Participant gets added Participant participantTwo = Mockito.mock(Player.class);
Participant participantTwo = Mockito.mock(Player.class); tournament.saveParticipant(participantTwo);
tournament.saveParticipant(participantTwo); assertEquals(2, tournament.getParticipants().size());
assertEquals(2, tournament.getParticipants().size()); //Checks if a allready added Particpant does not get added
when(participantOne.equals(any(Participant.class))).thenReturn(true);
//Checks if a allready added Particpant does not get added tournament.saveParticipant(participantTwo);
when(participantOne.equals(any(Participant.class))).thenReturn(true); assertEquals(2, tournament.getParticipants().size());
tournament.saveParticipant(participantTwo); } catch (Person.InvalidPhoneNumberException e) {
assertEquals(2, tournament.getParticipants().size()); fail();
}
} }
@ -69,13 +70,13 @@ public class TournamentTest {
//Checks if Error is thrown if Participant not in list //Checks if Error is thrown if Participant not in list
assertThrows(Tournament.ParticipantNotExistsException.class, () -> tournament.removeParticipant(participant)); assertThrows(Tournament.ParticipantNotExistsException.class, () -> tournament.removeParticipant(participant));
//Checks if participant gets removed
tournament.saveParticipant(participant);
assertEquals(1, tournament.getParticipants().size());
try { try {
//Checks if participant gets removed
tournament.saveParticipant(participant);
assertEquals(1, tournament.getParticipants().size());
tournament.removeParticipant(participant); tournament.removeParticipant(participant);
assertEquals(0, tournament.getParticipants().size()); assertEquals(0, tournament.getParticipants().size());
} catch (Tournament.ParticipantNotExistsException e) { } catch (Tournament.ParticipantNotExistsException | Person.InvalidPhoneNumberException e) {
fail(); fail();
} }
} }
@ -126,13 +127,18 @@ public class TournamentTest {
tournament.createGameSchedule(); tournament.createGameSchedule();
assertEquals(2, tournament.getGameList().size()); assertEquals(2, tournament.getGameList().size());
tournament.saveParticipant(participant); tournament.saveParticipant(participant);
} catch (Tournament.NumberOfParticipantInvalidException e) { } catch (Tournament.NumberOfParticipantInvalidException | Person.InvalidPhoneNumberException e) {
fail(); fail();
} }
} else { } else {
assertThrows(Tournament.NumberOfParticipantInvalidException.class, () -> tournament.createGameSchedule()); assertThrows(Tournament.NumberOfParticipantInvalidException.class, () -> tournament.createGameSchedule());
tournament.saveParticipant(participant); try {
tournament.saveParticipant(participant);
} catch (Person.InvalidPhoneNumberException e) {
e.printStackTrace();
}
} }
} }
try { try {