diff --git a/src/main/java/edu/bristol/IMDBRating.java b/src/main/java/edu/bristol/IMDBRating.java index 6021d63..150d92c 100644 --- a/src/main/java/edu/bristol/IMDBRating.java +++ b/src/main/java/edu/bristol/IMDBRating.java @@ -1,16 +1,18 @@ -package edu.bristol; - -public class IMDBRating -{ - private float currentAverage = 0; - private int ratingCount = 0; - - public float addNewRating(int newRating) - { - int previousTotal = (int) (currentAverage * ratingCount); - int newTotal = previousTotal + newRating; - ratingCount++; - currentAverage = newTotal / ratingCount; - return currentAverage; - } -} +package edu.bristol; + +public class IMDBRating +{ + private float accumulateRate = 0; + private float currentAverage = 0; + private int ratingCount = 0; + + public float addNewRating(int newRating) + { + if(newRating >=1 && newRating<=10) { + accumulateRate += newRating; + ratingCount++; + currentAverage = accumulateRate / ratingCount; + } + return currentAverage; + } +} diff --git a/src/test/java/edu/bristol/IMDBRatingTest.java b/src/test/java/edu/bristol/IMDBRatingTest.java index 76a9e9c..58d1f78 100644 --- a/src/test/java/edu/bristol/IMDBRatingTest.java +++ b/src/test/java/edu/bristol/IMDBRatingTest.java @@ -1,20 +1,154 @@ -package edu.bristol; - -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class IMDBRatingTest -{ - @Test - public void testAverageRating() - { - float averageRating; - IMDBRating rater = new IMDBRating(); - - averageRating = rater.addNewRating(2); - assertTrue(averageRating == 2.0, "Adding 1st rating: average should be 2.0"); - - averageRating = rater.addNewRating(4); - assertTrue(averageRating == 3.0, "Adding 2nd rating: average should be 3.0"); - } -} +package edu.bristol; + +import org.junit.jupiter.api.Test; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; + +import static org.junit.jupiter.api.Assertions.assertEquals; + + +public class IMDBRatingTest +{ + public String findTitle(String string) + { + int idx = string.indexOf("anchor\" id="); + int len = "anchor\" id=".length(); + String rest = string.substring(idx+len); + int i=1; + while(rest.charAt(i)!='"'){ + i++; + } + String finalString = rest.replace('_',' '); + return finalString.substring(0,i+1); + } + + public ArrayList findDifference(ArrayList imdb, ArrayList wiki) + { + ArrayList missingMovie = new ArrayList<>(); + for(String movie:wiki){ + if(!imdb.contains(movie)){ + missingMovie.add(movie); + } + } + return missingMovie; + } + + @Test + public void testAverageRating() + { + float averageRating=0; + IMDBRating rater = new IMDBRating(); + + for(int i=1;i<=10;i++){ + averageRating = rater.addNewRating(i); + } + System.out.println(averageRating); + assertEquals(5.5, averageRating, "average should be 5.5 but it was " + averageRating); + } + + @Test + public void testAverageRating2() + { + float averageRating; + IMDBRating rater = new IMDBRating(); + + for(int i=1;i<=10;i++){ + rater.addNewRating(i); + } + rater.addNewRating(8); + averageRating = rater.addNewRating(8); + System.out.println(averageRating); + assertEquals(averageRating, (float) 71 / (float) 12, "average should be 5.5 but it was " + averageRating); + } + + @Test + public void testOutRange() + { + float averageRating; + IMDBRating rater = new IMDBRating(); + + for(int i=1;i<=10;i++){ + rater.addNewRating(i); + } + averageRating = rater.addNewRating(0); + System.out.println(averageRating); + assertEquals(5.5, averageRating, "average should be 5.5 but it was " + averageRating); + } + + @Test + public void testOutRange2() + { + float averageRating; + IMDBRating rater = new IMDBRating(); + + for(int i=1;i<=10;i++){ + rater.addNewRating(i); + } + averageRating = rater.addNewRating(-1); + System.out.println(averageRating); + assertEquals(5.5, averageRating, "average should be 5.5 but it was " + averageRating); + } + + @Test + public void testOutRange3() + { + float averageRating; + IMDBRating rater = new IMDBRating(); + + for(int i=1;i<=10;i++){ + rater.addNewRating(i); + } + averageRating = rater.addNewRating(12); + System.out.println(averageRating); + assertEquals(5.5, averageRating, "average should be 5.5 but it was " + averageRating); + } + + @Test + public void releaseTestIMDBSearch() throws IOException { + URL url = new URL("https://www.imdb.com/search/title/?locations=bristol&role=nm0263368"); + HttpURLConnection connection =(HttpURLConnection)url.openConnection(); + connection.setDoOutput(true); + connection.setRequestMethod("GET"); + InputStream stream = connection.getInputStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); + String nextLine = reader.readLine(); + ArrayList titleIMDB = new ArrayList<>(); + while(nextLine != null) { + // Check the line to see what it contains + if(nextLine.contains("\"")){ titleWiki = new ArrayList<>(); + while(nextLine != null) { + // Check the line to see what it contains + if(nextLine.contains("