first commit

This commit is contained in:
Joshua Perry 2023-01-29 21:40:57 +00:00
commit 9c4ddc5654
23 changed files with 1170 additions and 0 deletions

55
.classpath Normal file
View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="target/generated-sources/annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

34
.project Normal file
View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>assignment_2</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
<filteredResources>
<filter>
<id>1675021093357</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>

31
pom.xml Normal file
View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.r0r5chach</groupId>
<artifactId>assignment_2</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.4.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,196 @@
package org.r0r5chach;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Scanner;
public class CompetitorList {
private final ArrayList<ValorantPlayer> competitors;
private String reportContents;
public CompetitorList(File list) throws IOException {
competitors = new ArrayList<>();
readCompetitors(list);
reportContents = reportTemplate();
}
public String getReportContents() {
return reportContents;
}
public ArrayList<ValorantPlayer> getCompetitors() {
return competitors;
}
private void readCompetitors(File list) throws FileNotFoundException {
Scanner reader = new Scanner(list);
while (reader.hasNextLine()) {
String[] row = reader.nextLine().split("%");
competitors.add(parseRow(row));
}
reader.close();
}
private ValorantPlayer parseRow(String[] row) {
int playerNumber = Integer.parseInt(row[0]);
Name playerName = new Name(row[1]);
ValorantRank playerLevel = ValorantRank.valueOf(row[2]);
ValorantAgent favoriteAgent = ValorantAgent.valueOf(row[3]);
int[] scores = parseScores(row[4]);
return new ValorantPlayer(playerNumber, playerName, playerLevel, favoriteAgent, scores);
}
private int[] parseScores(String row) {
String[] scores = row.split(",");
int[] parsedScores = new int[scores.length];
for (int i = 0; i < scores.length; i++) {
parsedScores[i] = Integer.parseInt(scores[i]);
}
return parsedScores;
}
private String generateTable() {
StringBuilder table = new StringBuilder("Competitor Level Agent Scores Overall");
for (ValorantPlayer player: getCompetitors()) {
table.append("\n");
for (String detail: player.getFullDetails().split("\n")) {
String[] detailParts = detail.split(": ");
if (detailParts[0].equals("Player Number")) {
table.append(detailParts[1]).append(" ");
}
else {
table.append(detailParts[1]).append(" ");
}
}
}
return table.toString();
}
private int[] generateLevelFreqs() {
int[] freqs = {0, 0, 0, 0};
for (ValorantPlayer player: getCompetitors()) {
switch (player.getPlayerLevel()) {
case IRON -> freqs[0] += 1;
case BRONZE -> freqs[1] += 1;
case SILVER -> freqs[2] += 1;
case GOLD -> freqs[3] += 1;
}
}
return freqs;
}
private int[] generateScoreFreqs() {
int[] freqs = {0, 0, 0, 0, 0, 0};
for (ValorantPlayer player: getCompetitors()) {
for (int score: player.getScores()) {
switch (score) {
case 0 -> freqs[0] += 1;
case 1 -> freqs[1] += 1;
case 2 -> freqs[2] += 1;
case 3 -> freqs[3] += 1;
case 4 -> freqs[4] += 1;
case 5 -> freqs[5] += 1;
}
}
}
return freqs;
}
private double generateAverageScore() {
double avg = 0;
int totalScores = 0;
for (ValorantPlayer player: getCompetitors()) {
for (int score: player.getScores()) {
totalScores += 1;
avg += score;
}
}
avg /= totalScores;
return avg;
}
private double getHighScore() {
double hS = 0;
for (ValorantPlayer player: getCompetitors()) {
if (player.getOverallScore() > hS) {
hS = player.getOverallScore();
}
}
return hS;
}
public File createReportFile() throws IOException {
boolean exists;
int count = 0;
Path path;
FileWriter report = null;
do {
path = Path.of("src/main/resources/report"+count+ ".txt");
exists = Files.exists(path);
if(exists) {
count += 1;
}
else {
Files.createFile(path);
report = new FileWriter(String.valueOf(path));
}
}while (exists);
generateReportContents();
report.append(reportContents);
report.close();
reportContents = reportTemplate();
return new File(path.toUri());
}
public static String createErrorLog(Exception e, String path) {
try {
FileWriter log = new FileWriter(path);
log.append(String.valueOf(e));
log.close();
return Files.readString(Path.of(path));
}
catch (IOException ie) {
return "Error";
}
}
private void replaceVar(String target, String replacement) {
reportContents = reportContents.replace(target, replacement);
}
private String reportTemplate() throws IOException {
return Files.readString(Path.of("src/main/resources/report.template"));
}
private void generateReportContents() {
replaceVar("%TABLE%", generateTable());
replaceVar( "%HIGH-SCORE%", String.valueOf(getHighScore()));
replaceVar( "%AVG-SCORE%", String.valueOf(generateAverageScore()));
int[] freqs = generateLevelFreqs();
for (int i = 0; i < freqs.length; i++) {
replaceVar( "%LEVEL"+i+"%", ValorantRank.values()[i].getRank());
replaceVar( "%VALUE"+i+"%", String.valueOf(freqs[i]));
}
freqs = generateScoreFreqs();
for (int i = 0; i < freqs.length; i++) {
replaceVar( "%SCORE"+i+"%", String.valueOf(freqs[i]));
}
}
}

View File

@ -0,0 +1,17 @@
package org.r0r5chach;
import java.io.IOException;
import java.nio.file.Files;
public class Main {
public static void main(String[] args) {
Manager manager = new Manager();
try {
System.out.println(Files.readString(manager.getReport().toPath()));
}
catch (IOException e) {
System.out.println("reading error");
}
}
}

View File

@ -0,0 +1,40 @@
package org.r0r5chach;
import java.io.File;
import static org.r0r5chach.CompetitorList.createErrorLog;
public class Manager {
private CompetitorList competitors;
public Manager() {
init();
}
public CompetitorList getCompetitors() {
return competitors;
}
public File getReport() {
File report;
try {
report = competitors.createReportFile();
}
catch (Exception e) {
report = new File(createErrorLog(e, "src/main/resource/log.txt"));
}
return report;
}
private void init() {
File sourceFile = new File("src/main/resources/test.txt");
try {
competitors = new CompetitorList(sourceFile);
}
catch (Exception e) {
createErrorLog(e, "src/main/resources/log.txt");
}
}
}

View File

@ -0,0 +1,131 @@
package org.r0r5chach;
/**
* Class that defines a name and it's parts
* @author John.Kanyaru@northampton.ac.uk
*/
public class Name {
/**
* The first name of the stored name
*/
private String firstName;
/**
* The middle name of the stored name
*/
private String middleName;
/**
* The last name of the stored name
*/
private String lastName;
/**
* Construct a name that does not contain a middle name
* @param fName the first name of the name to be stored
* @param lName the last name of the name to be stored
*/
public Name(String fName, String lName) {
firstName = fName;
middleName = "";
lastName = lName;
}
/**
* Construct a name that does have a middle name
* @param fName the first name of the name to be stored
* @param mName the middle name of the name to be stored
* @param lName the last name of the name to be stored
*/
public Name(String fName, String mName, String lName) {
firstName = fName;
middleName = mName;
lastName = lName;
}
/**
* Construct a name from a single string
* @param fullName the first, middle, and last names of the name to be stored separated by whitespace
*/
public Name (String fullName) {
int spacePos1 = fullName.indexOf(' ');
firstName = fullName.substring(0, spacePos1);
int spacePos2 = fullName.lastIndexOf(' ');
if (spacePos1 == spacePos2)
middleName = "";
else
middleName = fullName.substring(spacePos1+1, spacePos2);
lastName = fullName.substring(spacePos2 + 1);
}
/**
* Get the first name of the stored name
* @return the first name of the stored name
*/
public String getFirstName() {return firstName; }
/**
* Get the middle name of the stored name
* @return the middle name of the stored name
*/
public String getMiddleName() { return middleName; }
/**
* Get the last name of the stored name
* @return the last name of the stored name
*/
public String getLastName() {return lastName; }
/**
* Set the stored name's first name to that of the parameter
* @param fn the new first name
*/
public void setFirstName(String fn) {
firstName = fn;
}
/**
* Set the stored name's middle name to that of the parameter
* @param mn the new middle name
*/
public void setMiddleName(String mn) {
middleName = mn;
}
/**
* Set the stored name's last name to that of the parameter
* @param ln the new last name
*/
public void setLastName(String ln) {
lastName = ln;
}
/**
* Get the first and last name of the stored name
* @return a formatted string containing both the first and last names
*/
public String getFirstAndLastName() {
return firstName + " " + lastName;
}
/**
* Get the last and first names of the stored name
* @return a formatted string contains both the first and last names in reverse order
*/
public String getLastCommaFirst() {
return lastName + ", "+ firstName;
}
/**
* Get the full stored name
* @return a string containing the first, middle, and last names
*/
public String getFullName() {
String result = firstName + " ";
if (!middleName.equals("")) {
result += middleName + " ";
}
result += lastName;
return result;
}
/**
* Get the initials of the stored name
* @return a string containing the initials
* @author r0r5chach
*/
public String getInitials() {
String result = firstName.substring(0,1);
if (!middleName.equals("")) {
result += middleName.substring(0,1);
}
result += lastName.substring(0,1);
return result;
}
}

View File

@ -0,0 +1,37 @@
package org.r0r5chach;
import java.util.Locale;
/**
* All Characters a ValorantPlayer can play
* @author r0r5chach
*/
public enum ValorantAgent {
BRIMSTONE,
VIPER,
OMEN,
KILLJOY,
CYPHER,
SOVA,
SAGE,
PHOENIX,
JETT,
REYNA,
RAZE,
BREACH,
SKYE,
YORU,
ASTRA,
KAYO,
CHAMBER,
NEON,
FADE,
HARBOR;
/**
* Get the name of the character
* @return a formatted string containing the character name
*/
public String getAgent() {
return this.name().charAt(0) + this.name().substring(1).toLowerCase(Locale.ROOT); //Capitalizes the first letter and makes sure the other letters are lowercase
}
}

View File

@ -0,0 +1,155 @@
package org.r0r5chach;
import java.text.DecimalFormat;
import java.util.Arrays;
/**
* Class that defines the various attributes and methods associated with a Valorant Player
* @author r0r5chach
*/
public class ValorantPlayer {
/**
* The format to use when converting decimal numbers to strings
*/
private static final DecimalFormat df = new DecimalFormat("0.00");
/**
* The number of the player in the competition
*/
private int playerNumber;
/**
* The name of the player in the competition
*/
private Name playerName;
/**
* The level the player plays at in the competition
* These are derived from the first 4 ranks of the normal game
*/
private ValorantRank playerLevel;
/**
* The character the player plays the most
*/
private ValorantAgent favouriteAgent;
/**
* The scores the player has received
*/
private int[] scores;
/**
* Constructs an object with attributes matching the parameters passed
* @param playerNumber the number of the player
* @param playerName the name of the player
* @param playerLevel the level of the player
* @param favouriteAgent the character the player plays most
*/
public ValorantPlayer(int playerNumber, Name playerName, ValorantRank playerLevel, ValorantAgent favouriteAgent, int[] scores) {
this.playerNumber = playerNumber;
this.playerName = playerName;
this.playerLevel = playerLevel;
this.favouriteAgent = favouriteAgent;
this.scores = scores;
}
/**
* Set the player's number to that of the parameter
* @param playerNumber the new number of the player
*/
public void setPlayerNumber(int playerNumber) {
this.playerNumber = playerNumber;
}
/**
* Set the player's name to that of the parameter
* @param playerName the new name of the player
*/
public void setPlayerName(Name playerName) {
this.playerName = playerName;
}
/**
* Set the player's level to that of the parameter
* @param playerLevel the new level of the player
*/
public void setPlayerLevel(ValorantRank playerLevel) {
this.playerLevel = playerLevel;
}
/**
* Set the player's most played character to that of the parameter
* @param favouriteAgent the new most played character of the player
*/
public void setFavouriteAgent(ValorantAgent favouriteAgent) {
this.favouriteAgent = favouriteAgent;
}
/**
* Set the player's scores
* @param scores the new scores for the player
*/
public void setScores(int[] scores) {
this.scores = scores;
}
/**
* Get the player's number
* @return the player's number
*/
public int getPlayerNumber() {
return this.playerNumber;
}
/**
* Get the player's name
* @return the player's name
*/
public Name getPlayerName() {
return this.playerName;
}
/**
* Get the player's level
* @return the player's level
*/
public ValorantRank getPlayerLevel() {
return this.playerLevel;
}
/**
* Get the player's most played character
* @return the player's most played character
*/
public ValorantAgent getFavouriteAgent() {
return this.favouriteAgent;
}
/**
* Get the player's scores
* @return an array containing the scores
*/
public int[] getScores() {
return this.scores;
}
/**
* Calculates and then returns the overall score of the player.
* The score is calculated by taking the natural log of each score and then dividing the sum by 1.93
* @return an aggregate of the individual scores the player has achieved
*/
public double getOverallScore() {
double output = 0;
for (int score: getScores()) {
output += Math.log(score); //get the sum of the natural log of the scores
}
output /= 1.93; //divide the sum by 1.93
if (output == Double.NEGATIVE_INFINITY) {
output = 0;
}
return Double.parseDouble(df.format(output)); //df.format() allows the scores to be formatted to 2 decimal places
}
/**
* Get all the attributes of the player
* @return all attributes of the player in a formatted string
*/
public String getFullDetails() {
return "Player Number: " + getPlayerNumber() +
"\nName: " + getPlayerName().getFullName() +
"\nPlayer Level: " + getPlayerLevel().getRank() +
"\nFavourite Agent: " + getFavouriteAgent().getAgent() +
"\nScores: " + Arrays.toString(getScores()).replace("[","").replace("]", "") + //replace() allows the array to not be surrounded by brackets
"\nOverall Score: " + getOverallScore();
}
/**
* Get the important attributes of the player
* @return a formatted string containing the playerNumber, playerName, and overall score
*/
public String getShortDetails() {
return "CN " + getPlayerNumber() + " (" + getPlayerName().getInitials() + ") has overall score " + getOverallScore();
}
}

View File

@ -0,0 +1,33 @@
package org.r0r5chach;
import java.util.Locale;
/**
* All levels a ValorantPlayer can be
* @author r0r5chach
*/
public enum ValorantRank {
/**
* First Level
*/
IRON,
/**
* Second Level
*/
BRONZE,
/**
* Third Level
*/
SILVER,
/**
* Four Level
*/
GOLD;
/**
* Get the name of a level
* @return a formatted string containing the level name
*/
public String getRank() {
return this.name().charAt(0) + this.name().substring(1).toLowerCase(Locale.ROOT); //Capitalises the first letter and makes sure the other letters are lowercase
}
}

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,12 @@
%TABLE%
Statistics
The Highest Overall Score: %HIGH-SCORE%
Average Score: %AVG-SCORE%
Level Distribution:
%LEVEL0% %LEVEL1% %LEVEL2% %LEVEL3%
%VALUE0% %VALUE1% %VALUE2% %VALUE3%
Score Distribution:
0 1 2 3 4 5
%SCORE0% %SCORE1% %SCORE2% %SCORE3% %SCORE4% %SCORE5%

View File

View File

@ -0,0 +1,4 @@
101%Caitlin Emily Head%BRONZE%BREACH%0,1,4,2,1,1
102%Joshua Luke Perry%IRON%SOVA%5,5,5,5,5,5
103%Bradley Gordon-Taylor%SILVER%VIPER%3,1,3,2,4,1
104%Nathan Perry%GOLD%BRIMSTONE%0,0,0,0,0,0

View File

@ -0,0 +1,107 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import org.r0r5chach.CompetitorList;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class CompetitorListTest {
@Test
public void competitorListTest() {
try {
CompetitorList cL = new CompetitorList(new File("src/main/resources/test.txt"));
assertEquals(Files.readString(Path.of("src/main/resources/report.template")), cL.getReportContents());
assertEquals(102,cL.getCompetitors().get(1).getPlayerNumber());
}
catch (IOException e) {
System.out.println("File doesn't exist");
}
}
@Test
public void competitorListTestCreateReportFile() {
try {
CompetitorList cL = new CompetitorList(new File("src/main/resources/test.txt"));
assertEquals(Files.readString(Path.of("src/test/java/reportTest.txt")), Files.readString(cL.createReportFile().toPath()));
}
catch (IOException e) {
System.out.println("File doesn't exist");
}
}
@Test
public void competitorListTestCreateErrorLog() {
assertEquals("java.io.IOException", CompetitorList.createErrorLog(new IOException(), "src/main/resources/log.txt"));
assertEquals("Error", CompetitorList.createErrorLog(new IOException(), "src/main/java"));
}
@Test
public void competitorListTestGenerateTable() {
//Already tested in competitorListTestCreateReportFile
}
@Test
public void competitorListTestGetHighScore() {
//Already tested in competitorListTestCreateReportFile
}
@Test
public void competitorListTestGenerateAverageScore() {
//Already tested in competitorListTestCreateReportFile
}
@Test
public void competitorListTestGenerateLevelFreqs() {
//Already tested in competitorListTestCreateReportFile
}
@Test
public void competitorListTestGenerateScoreFreqs() {
//Already tested in competitorListTestCreateReportFile
}
@Test
public void competitorListTestReplaceVar() {
//Already tested in competitorListTestCreateReportFile
}
@Test
public void competitorListTestReportTemplate() {
//Already tested in competitorListTestCreateReportFile
}
@Test
public void competitorListTestGenerateReportContents() {
//Already tested in competitorListTestCreateReportFile
}
@Test
public void competitorListTestParseScores() {
//Already tested in competitorListTest
}
@Test
public void competitorListTestParseRow() {
//Already tested in competitorListTest
}
@Test
public void competitorListTestReadCompetitors() {
//Already tested in competitorListTest
}
@Test
public void competitorListTestGetReportContents() {
//Already tested in competitorListTest
}
@Test
public void competitorListTestGetCompetitors() {
//Already tested in competitorListTest
}
}

View File

@ -0,0 +1,27 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import org.r0r5chach.Main;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.file.Files;
import java.nio.file.Path;
public class MainTest {
@Test
public void mainTest() {
ByteArrayOutputStream output = new ByteArrayOutputStream();
ByteArrayOutputStream expected = new ByteArrayOutputStream();
System.setOut(new PrintStream(expected));
try {
System.out.println(Files.readString(Path.of("src/test/java/reportTest.txt")));
}
catch (IOException e) {
System.out.println("File doesn't exist");
}
System.setOut(new PrintStream(output));
Main.main(new String[0]);
assertEquals(expected.toString(), output.toString());
}
}

View File

@ -0,0 +1,38 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import org.r0r5chach.Manager;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class ManagerTest {
@Test
public void managerTest() {
Manager m = new Manager();
assertEquals("Joshua Luke Perry", m.getCompetitors().getCompetitors().get(1).getPlayerName().getFullName());
}
@Test
public void managerTestGetReport() {
try {
Manager m = new Manager();
assertEquals(Files.readString(Path.of("src/test/java/reportTest.txt")), Files.readString(m.getReport().toPath()));
}
catch (IOException e) {
System.out.println("File does not exist");
}
}
@Test
public void managerTestGetCompetitors() {
//Already tested in managerTest()
}
@Test
public void managerTestInit() {
//Already tested in managerTest()
}
}

101
src/test/java/NameTest.java Normal file
View File

@ -0,0 +1,101 @@
import org.junit.jupiter.api.Test;
import org.r0r5chach.Name;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class NameTest {
@Test
public void nameTestFNameLName() {
Name n = new Name("Joshua", "Perry");
assertEquals("Joshua", n.getFirstName());
assertEquals("", n.getMiddleName());
assertEquals("Perry", n.getLastName());
}
@Test
public void nameTestFNameMNameLName() {
Name n = new Name("Joshua", "Luke", "Perry");
assertEquals("Joshua", n.getFirstName());
assertEquals("Luke", n.getMiddleName());
assertEquals("Perry", n.getLastName());
}
@Test
public void nameTestFullName() {
Name n = new Name("Joshua Luke Perry");
assertEquals("Joshua", n.getFirstName());
assertEquals("Luke", n.getMiddleName());
assertEquals("Perry", n.getLastName());
n = new Name("Joshua Perry");
assertEquals("Joshua", n.getFirstName());
assertEquals("", n.getMiddleName());
assertEquals("Perry", n.getLastName());
}
@Test
public void nameTestSetFirstName() {
Name n = new Name("Joshua Luke Perry");
n.setFirstName("Bradley");
assertEquals("Bradley", n.getFirstName());
}
@Test
public void nameTestSetLastName() {
Name n = new Name("Joshua Luke Perry");
n.setLastName("Gordon-Taylor");
assertEquals("Gordon-Taylor", n.getLastName());
}
@Test
public void nameTestGetFirstAndLastName() {
Name n = new Name("Joshua Luke Perry");
assertEquals("Joshua Perry", n.getFirstAndLastName());
}
@Test
public void nameTestGetLastCommaFirst() {
Name n = new Name("Joshua Luke Perry");
assertEquals("Perry, Joshua", n.getLastCommaFirst());
}
@Test
public void nameTestGetFullName() {
Name n = new Name("Joshua Luke Perry");
assertEquals("Joshua Luke Perry", n.getFullName());
n.setMiddleName("");
assertEquals("Joshua Perry", n.getFullName());
}
@Test
public void nameTestGetInitials() {
Name n = new Name("Joshua Luke Perry");
assertEquals("JLP", n.getInitials());
n.setMiddleName("");
assertEquals("JP", n.getInitials());
}
@Test
public void nameTestGetFirstName() {
//Already tested in nameTestFNameLName()
}
@Test
public void nameTestGetMiddleName() {
//Already tested in nameTestFNameMNameLName()
}
@Test
public void nameTestGetLastName() {
//Already tested in nameTestFullName()
}
@Test
public void nameTestSetMiddleName() {
//Already tested in nameTestGetFullName()
}
}

View File

@ -0,0 +1,11 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import org.r0r5chach.ValorantAgent;
public class ValorantAgentTest {
@Test
public void valorantAgentTestGetAgent() {
ValorantAgent vA = ValorantAgent.HARBOR;
assertEquals("Harbor", vA.getAgent());
}
}

View File

@ -0,0 +1,113 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import org.r0r5chach.Name;
import org.r0r5chach.ValorantAgent;
import org.r0r5chach.ValorantPlayer;
import org.r0r5chach.ValorantRank;
public class ValorantPlayerTest {
@Test
public void valorantPlayerTest() {
int[] scores = {5,5,5,5,5,5};
ValorantPlayer vP = new ValorantPlayer(2,new Name("Joshua Luke Perry"), ValorantRank.GOLD, ValorantAgent.FADE, scores);
assertEquals(2, vP.getPlayerNumber());
assertEquals("Joshua Luke Perry", vP.getPlayerName().getFullName());
assertEquals("Gold", vP.getPlayerLevel().getRank());
assertEquals("Fade", vP.getFavouriteAgent().getAgent());
assertEquals(5, vP.getOverallScore());
}
@Test
public void valorantPlayerTestSetPlayerNumber() {
int[] scores = {5,5,5,5,5,5};
ValorantPlayer vP = new ValorantPlayer(2,new Name("Joshua Luke Perry"), ValorantRank.GOLD, ValorantAgent.FADE, scores);
vP.setPlayerNumber(5);
assertEquals(5, vP.getPlayerNumber());
}
@Test
public void valorantPlayerTestSetPlayerName() {
int[] scores = {5,5,5,5,5,5};
ValorantPlayer vP = new ValorantPlayer(2,new Name("Joshua Luke Perry"), ValorantRank.GOLD, ValorantAgent.FADE, scores);
vP.setPlayerName(new Name("Bradley Gordon-Taylor"));
assertEquals("Bradley Gordon-Taylor", vP.getPlayerName().getFullName());
}
@Test
public void valorantPlayerTestSetPlayerLevel() {
int[] scores = {5,5,5,5,5,5};
ValorantPlayer vP = new ValorantPlayer(2,new Name("Joshua Luke Perry"), ValorantRank.GOLD, ValorantAgent.FADE, scores);
vP.setPlayerLevel(ValorantRank.BRONZE);
assertEquals("Bronze", vP.getPlayerLevel().getRank());
}
@Test
public void valorantPlayerTestSetFavouriteAgent() {
int[] scores = {5,5,5,5,5,5};
ValorantPlayer vP = new ValorantPlayer(2,new Name("Joshua Luke Perry"), ValorantRank.GOLD, ValorantAgent.FADE, scores);
vP.setFavouriteAgent(ValorantAgent.VIPER);
assertEquals("Viper", vP.getFavouriteAgent().getAgent());
}
@Test
public void valorantPlayerTestSetScores() {
int[] scores = {5,5,5,5,5,5};
ValorantPlayer vP = new ValorantPlayer(2,new Name("Joshua Luke Perry"), ValorantRank.GOLD, ValorantAgent.FADE, scores);
vP.setScores(new int[]{0, 0, 0, 0, 0, 0});
assertEquals(0, vP.getOverallScore());
}
@Test
public void valorantPlayerTestGetOverallScore() {
int[] scores = {5,5,5,5,5,5};
ValorantPlayer vP = new ValorantPlayer(2,new Name("Joshua Luke Perry"), ValorantRank.GOLD, ValorantAgent.FADE, scores);
assertEquals(5, vP.getOverallScore());
}
@Test
public void valorantPlayerTestGetFullDetails() {
int[] scores = {5,5,5,5,5,5};
ValorantPlayer vP = new ValorantPlayer(2,new Name("Joshua Luke Perry"), ValorantRank.GOLD, ValorantAgent.FADE, scores);
assertEquals("""
Player Number: 2
Name: Joshua Luke Perry
Player Level: Gold
Favourite Agent: Fade
Scores: 5, 5, 5, 5, 5, 5
Overall Score: 5.0""", vP.getFullDetails());
}
@Test
public void valorantPlayerTestGetShortDetails() {
int[] scores = {5,5,5,5,5,5};
ValorantPlayer vP = new ValorantPlayer(2,new Name("Joshua Luke Perry"), ValorantRank.GOLD, ValorantAgent.FADE, scores);
assertEquals("CN 2 (JLP) has overall score 5.0", vP.getShortDetails());
}
@Test
public void valorantPlayerTestGetPlayerNumber() {
//Already tested in valorantPlayerTest()
}
@Test
public void valorantPlayerTestGetPlayerName() {
//Already tested in valorantPlayerTest()
}
@Test
public void valorantPlayerTestGetPlayerLevel() {
//Already tested in valorantPlayerTest()
}
@Test
public void valorantPlayerTestGetFavouriteAgent() {
//Already tested in valorantPlayerTest()
}
}

View File

@ -0,0 +1,12 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import org.r0r5chach.ValorantRank;
public class ValorantRankTest {
@Test
public void valorantRankTestGetRank() {
ValorantRank vR = ValorantRank.IRON;
assertEquals("Iron", vR.getRank());
}
}

View File

@ -0,0 +1,16 @@
Competitor Level Agent Scores Overall
101 Caitlin Emily Head Bronze Breach 0, 1, 4, 2, 1, 1 0.0
102 Joshua Luke Perry Iron Sova 5, 5, 5, 5, 5, 5 5.0
103 Bradley Gordon-Taylor Silver Viper 3, 1, 3, 2, 4, 1 2.22
104 Nathan Perry Gold Brimstone 0, 0, 0, 0, 0, 0 0.0
Statistics
The Highest Overall Score: 5.0
Average Score: 2.2083333333333335
Level Distribution:
Iron Bronze Silver Gold
1 1 1 1
Score Distribution:
0 1 2 3 4 5
7 5 2 2 2 6