def test_remove_genre(self, movie): genre1 = Genre("Horror") genre2 = Genre("Anthology") movie.add_genre(genre1) movie.add_genre(genre2) movie.remove_genre(genre1) assert movie.genres == [genre2]
def test_incomplete_attributes(): filename = 'datafiles/Data1000Movies.csv' movie_file_reader = MovieFileCSVReader(filename) movie_file_reader.read_csv_file() movie_name = "Hounds of Love" movie = movie_file_reader.movie_object(movie_name) # normal attributes assert movie.title == "Hounds of Love" assert movie.release_year == 2016 assert movie.description == "A cold-blooded predatory couple while cruising the streets in search of their " \ "next victim, will stumble upon a 17-year-old high school girl, who will be sedated, " \ "abducted and chained in the strangers' guest room." assert movie.director == Director("Ben Young") assert movie.actors == [ Actor("Emma Booth"), Actor("Ashleigh Cummings"), Actor("Stephen Curry"), Actor("Susie Porter") ] assert movie.genres == [Genre("Crime"), Genre("Drama"), Genre("Horror")] assert movie.runtime_minutes == 108 # extra attributes assert movie.rank == 23 assert movie.rating == 6.7 assert movie.revenue is None assert movie.votes == 1115 assert movie.metascore == 72
def test_init(self): genre1 = Genre("Comedy") assert repr(genre1) == "<Genre Comedy>" genre2 = Genre("Horror") assert (genre1 == genre2) == False assert (genre1 < genre2) == True assert hash(genre1) == hash("Comedy")
def test_setters(self): # inherently tests getters too a_movie = Movie("Back To The Future", 1965) director1 = Director("Brad Bird") a_movie.title = " Mission Impossible: Ghost Protocol " assert a_movie.title == "Mission Impossible: Ghost Protocol" a_movie.title = 15 #assert a_movie.title == "Mission Impossible: Ghost Protocol" a_movie.description = " An action movie " assert a_movie.description == "An action movie" a_movie.director = director1 assert a_movie.director == director1 actor1 = Actor("Tom Cruise") actor2 = Actor("Simon Pegg") a_movie.actors = [actor1, actor2] assert a_movie.actors == [actor1, actor2] genre1 = Genre("Action") genre2 = Genre("Comedy") a_movie.genres = [genre1, genre2] assert a_movie.genres == [genre1, genre2] a_movie.runtime_minutes = 100 assert a_movie.runtime_minutes == 100 assert type(a_movie.runtime_minutes) == int with pytest.raises(ValueError): a_movie.runtime_minutes = 0 a_movie.runtime_minutes = -10
def test_init_and_repr(self): genre1 = Genre("Horror") assert repr(genre1) == "<Genre Horror>" genre2 = Genre("") assert genre2.genre_name is None genre3 = Genre(42) assert genre3.genre_name is None
def test_movie_runtime(self): movie = Movie("Moana", 2016) movie.description = " This is a movie " assert movie.description == "This is a movie" movie.director = Director("Ron Clements") assert movie.director.director_full_name is "Ron Clements" assert repr(movie.director) == "<Director Ron Clements>" actors = [ Actor("Auli'i Cravalho"), Actor("Dwayne Johnson"), Actor("Rachel House"), Actor("Temuera Morrison") ] for actor in actors: movie.add_actor(actor) assert repr( movie.actors ) == "[<Actor Auli\'i Cravalho>, <Actor Dwayne Johnson>, <Actor Rachel House>, <Actor Temuera Morrison>]" movie.remove_actor(Actor("Dwayne Johnson")) assert repr( movie.actors ) == "[<Actor Auli\'i Cravalho>, <Actor Rachel House>, <Actor Temuera Morrison>]" genres = [Genre("Animated"), Genre("Comedy")] for genre in genres: movie.add_genre(genre) assert repr(movie.genres) == "[<Genre Animated>, <Genre Comedy>]" movie.remove_genre(Genre("Comedy")) assert repr(movie.genres) == "[<Genre Animated>]" movie.runtime_minutes = 100 assert movie.runtime_minutes is 100
def testGenres(self): print("Genre testing:") movie1 = Movie("Moana", 2016) movie1.add_genre(Genre("Cheesy")) movie1.add_genre(Genre("Action")) movie1.remove_genre(Genre("Cheesy")) print(movie1.genres)
def test_more_methods(self): a_movie = Movie("Back To The Future", 1965) actor1 = Actor("Michael J. Fox") actor2 = Actor("Christopher Lloyd") genre1 = Genre("Horror") genre2 = Genre("Comedy") a_movie.add_actor(actor1) assert a_movie.actors == [actor1] a_movie.add_actor(actor1) assert a_movie.actors == [actor1] # test it doesn't add duplicate actors a_movie.add_actor(actor2) assert a_movie.actors == [actor1, actor2] # tests actors are added (and in order, not that it matters) a_movie.remove_actor(actor1) assert a_movie.actors == [actor2] a_movie.remove_actor(5) # test it doesn't throw an error if not an actor assert a_movie.actors == [actor2] # test it doesn't randomly remove an actor (I don't see how but yeah) a_movie.add_genre(genre1) assert a_movie.genres == [genre1] a_movie.add_genre(genre1) assert a_movie.genres == [genre1] # test it doesn't add duplicate actors a_movie.add_genre(genre2) assert a_movie.genres == [genre1, genre2] # tests actors are added (and in order, not that it matters) a_movie.remove_genre(genre1) assert a_movie.genres == [genre2] a_movie.remove_genre(5) # test it doesn't throw an error if not a genre assert a_movie.genres == [genre2] # test it doesn't randomly remove an genre (I don't see how but yeah)
def test_read_csv_file(self): filename = '../datafiles/Data1000Movies.csv' movie_file_reader = MovieFileCSVReader(filename) movie_file_reader.read_csv_file() # check dataset sizes assert len(movie_file_reader.dataset_of_movies) == 1000 assert len(movie_file_reader.dataset_of_actors) == 1985 assert len(movie_file_reader.dataset_of_directors) == 644 assert len(movie_file_reader.dataset_of_genres) == 20 # check assigning of all attributes from CSV to Movie obj movie = movie_file_reader.dataset_of_movies[0] assert movie.title == "Guardians of the Galaxy" assert movie.genres == [ Genre("Action"), Genre("Adventure"), Genre("Sci-Fi") ] assert movie.description == "A group of intergalactic criminals are forced " \ "to work together to stop a fanatical warrior " \ "from taking control of the universe." assert movie.director == Director("James Gunn") assert movie.actors == [ Actor("Chris Pratt"), Actor("Vin Diesel"), Actor("Bradley Cooper"), Actor("Zoe Saldana") ] assert movie.year == 2014 assert movie.runtime_minutes == 121 assert movie.rating == 8.1 assert movie.votes == 757074 assert movie.revenue == 333.13 assert movie.metascore == 76
def test_init(self): genre1 = Genre("Action") assert repr(genre1) == "<Genre Action>" genre2 = Genre("") assert genre2.genre_name is None genre3 = Genre(42) assert genre3.genre_name is None
def test_completed_attributes(): filename = 'datafiles/Data1000Movies.csv' movie_file_reader = MovieFileCSVReader(filename) movie_file_reader.read_csv_file() movie_name = "Guardians of the Galaxy" movie = movie_file_reader.movie_object(movie_name) # normal attributes assert movie.title == "Guardians of the Galaxy" assert movie.release_year == 2014 assert movie.description == "A group of intergalactic criminals are forced to work together " \ "to stop a fanatical warrior from taking control of the universe." assert movie.director == Director("James Gunn") assert movie.actors == [ Actor("Chris Pratt"), Actor("Vin Diesel"), Actor("Bradley Cooper"), Actor("Zoe Saldana") ] assert movie.genres == [ Genre("Action"), Genre("Adventure"), Genre("Sci-Fi") ] assert movie.runtime_minutes == 121 # extra attributes assert movie.rank == 1 assert movie.rating == 8.1 assert movie.revenue == 333.13 assert movie.votes == 757074 assert movie.metascore == 76
def test_init(): genre1 = Genre("Comedy") assert repr(genre1) == "<Genre Comedy>" genre2 = Genre("") assert genre2.genre_name is None genre3 = Genre(42) assert genre3.genre_name is None
def test_genres(self): # correct input movie1 = Movie("Moana", 2016) movie1.genres = [Genre("Animation"), Genre("Comedy")] assert movie1.genres == [Genre("Animation"), Genre("Comedy")] # incorrect input movie2 = Movie("Frozen", 2014)
def test_eq(self): genre1 = Genre("Horror") genre2 = Genre("") genre3 = Genre("Horror") genre4 = Genre(1) assert genre1.__eq__(genre2) == False assert genre1.__eq__(genre3) == True assert genre2.__eq__(genre4) == False
def test_le(): genre1 = Genre("Comedy") genre2 = Genre("Drama") assert genre1 <= genre2 assert genre2 >= genre1 genre1 = Genre("Comedy") genre2 = Genre("Comedy") assert genre1 <= genre2 assert genre2 >= genre1
def test_genre(): genre1 = Genre("Comedy") assert repr(genre1) == "<Genre Comedy>" genre2 = Genre("") assert genre2.genre_name is None genre3 = Genre(42) assert genre3.genre_name is None genre4 = Genre("Horror") assert genre1 < genre4
def test_remove_people(self, movie): movie.remove_actor(Actor("Sam")) assert movie.actors == [Actor("Cherry")] movie.remove_genre(Genre("Kids")) assert movie.genres == [] movie.remove_genre(Genre("Comedy")) assert movie.genres == [] movie.remove_actor(Actor("Paul")) assert movie.actors == [Actor("Cherry")]
def read_csv_file(self): with open(self.__file_name, mode='r', encoding='utf-8-sig') as csvfile: movie_file_reader = csv.DictReader(csvfile) index = 0 for row in movie_file_reader: title = row["Title"] release_year = int(row["Year"]) movie = Movie(title, release_year) movie.description = row["Description"] director = row["Director"] movie.director = director if Director(director) not in self.__dataset_of_directors: self.__dataset_of_directors.append(Director(director)) actors = row["Actors"].split(",") for actor in actors: movie.add_actor(Actor(actor)) if Actor(actor) not in self.__dataset_of_actors: self.__dataset_of_actors.append(Actor(actor)) genres = row["Genre"].split(",") for genre in genres: movie.add_genre(Genre(genre)) if Genre(genre) not in self.__dataset_of_genres: self.__dataset_of_genres.append(Genre(genre)) movie.runtime_minutes = int(row["Runtime (Minutes)"]) try: movie.external_rating = float(row["Rating"]) except ValueError: pass try: movie.rating_votes = int(row["Votes"]) except ValueError: pass try: movie.revenue_in_millions = float(row["Revenue (Millions)"]) except ValueError: pass try: movie.metascore = int(row["Metascore"]) except ValueError: pass self.__dataset_of_movies.append(movie) # title = row['Title'] # release_year = int(row['Year']) # print(f"Movie {index} with title: {title}, release year {release_year}") index += 1
def test_init(genre): assert genre.genre_name == 'Drama' genre1 = Genre("Comedy") assert repr(genre1) == "<Genre Comedy>" genre2 = Genre("") assert genre2.genre_name is None genre3 = Genre(42) assert genre3.genre_name is None assert repr(genre2) == "<Genre None>" assert repr(genre3) == "<Genre None>"
def test_preference_by_preference(): user = User("Trump", "twitterking") user.add_preference(Genre("Action")) user.add_preference(Genre("Sci-Fi")) assert user.preference.sort()==recommend.get_user_preference(user).sort() indicator = 0 for movie in recommend.get_recommended_watch_list(user): for genre in movie.genres: if genre in recommend.get_user_preference(user): indicator += 1 assert indicator > 0 # all movie is linked to preference indicator = 0
def test_init(self): genre1 = Genre("Taika Waititi") assert repr(genre1) == "<Genre Taika Waititi>" genre2 = Genre("") assert genre2.genre_name is None genre3 = Genre(3) assert genre3.genre_name is None genre1.genre_name = "josie" assert genre1.genre_name == "josie" assert (genre1.genre_name == genre2.genre_name) == False genre1 = Genre("Horror") assert repr(genre1) == "<Genre Horror>"
def test_filter_by_list_of_genres(): filename = 'datafiles/Data1000Movies.csv' movie_file_reader = MovieFileCSVReader(filename) movie_file_reader.read_csv_file() genre = [Genre("Action"), Genre("Crime"), Genre("Mystery")] movie_file_reader.filter_by_genre(genre) assert len(movie_file_reader.movies_filtered_by_genre) == 3 assert movie_file_reader.movies_filtered_by_genre == [ Movie("Salt", 2010), Movie("Jack Reacher", 2012), Movie("Escape Plan", 2013) ]
def test_hash(): genre1 = Genre("Comedy") genre2 = Genre("Comedy") assert hash(genre1) == hash(genre2) genre2 = Genre("Comedz") assert hash(genre1) != hash(genre2) dict1 = dict() dict1[genre1] = genre2 assert dict1[genre1] == genre2 assert repr(dict1[genre1]) == "<Genre Comedz>" genre1 = Genre("") genre2 = Genre(7) dict1[genre1] = genre2 assert dict1[genre1] == genre2 assert repr(dict1[genre1]) == "<Genre None>"
def read_csv_file(self): with open(self.__file_name, mode='r', encoding='utf-8-sig') as csvfile: # Rank,Title,Genre,Description,Director,Actors,Year,Runtime (Minutes),Rating,Votes,Revenue (Millions),Metascore movie_file_reader = csv.DictReader(csvfile) index = 0 for row in movie_file_reader: title = row['Title'] release_year = int(row['Year']) self.__dataset_of_movies.append(Movie(title, release_year)) actors = [ Actor(actor.strip()) for actor in row['Actors'].split(",") ] for actor in actors: if actor not in self.__dataset_of_actors: self.__dataset_of_actors.append(actor) director = Director(row['Director']) if director not in self.__dataset_of_directors: self.__dataset_of_directors.append(director) genres = [ Genre(genre.strip()) for genre in row['Genre'].split(",") ] for genre in genres: if genre not in self.__dataset_of_genres: self.__dataset_of_genres.append(genre) # print(f"Movie {index} with title: {title}, release year {release_year}") index += 1
def read_csv_file(self): with open(self.__file_name, mode='r', encoding='utf-8-sig') as csvfile: movie_file_reader = csv.DictReader(csvfile) for row in movie_file_reader: title = row['Title'] release_year = int(row['Year']) movie = Movie(title, release_year) self.__dataset_of_movies.append(movie) actors = row["Actors"] actors = actors.split(",") for actor in actors: actor = Actor(actor) movie.add_actor(actor) if actor not in self.__dataset_of_actors: self.__dataset_of_actors.append(actor) director = Director(row["Director"]) movie.director = director if director not in self.__dataset_of_directors: self.__dataset_of_directors.append(director) genres = row["Genre"] genres = genres.split(",") for genre in genres: genre = Genre(genre) movie.add_genre(genre) if genre not in self.__dataset_of_genres: self.__dataset_of_genres.append(genre) movie.description = row["Description"] movie.runtime_minutes = row["Runtime (Minutes)"]
def read_csv_file(self): with open(self.__file_name, mode='r', encoding='utf-8-sig') as csvfile: movie_file_reader = csv.DictReader(csvfile) index = 0 for row in movie_file_reader: title = row['Title'] release_year = int(row['Year']) movie = Movie(title, release_year) for actor in row['Actors'].split(","): actor = Actor(actor.strip()) if actor not in self.__actors: self.__actors.add(actor) movie.add_actor(actor) director = Director(row['Director'].strip()) if director not in self.__directors: self.__directors.add(director) movie.director = director for genre in row['Genre'].split(','): genre = Genre(genre.strip()) if genre not in self.__genres: self.__genres.add(genre) movie.add_genre(genre) movie.runtime_minutes = row["Runtime (Minutes)"] movie.description = row["Description"] self.__movies.append(movie) index += 1
def read_csv_file(self): with open(self.__file_name, mode='r', encoding='utf-8-sig') as csvfile: movie_file_reader = csv.DictReader(csvfile) for row in movie_file_reader: movie = Movie(row['Title'], int(row['Year'])) movie.description = row['Description'] movie.runtime_minutes = int(row['Runtime (Minutes)']) director = Director(row['Director']) self.__dataset_of_directors.add(director) movie.director = director parsed_genres = row['Genre'].split(',') for genre_string in parsed_genres: genre = Genre(genre_string) self.__dataset_of_genres.add(genre) movie.add_genre(genre) parsed_actors = row['Actors'].split(',') for actor_string in parsed_actors: actor = Actor(actor_string) self.__dataset_of_actors.add(actor) movie.add_actor(actor) self.__dataset_of_movies.append(movie)
def read_csv_file(self): with open(self.__file_name, mode='r', encoding='utf-8-sig') as csvfile: movie_file_reader = csv.DictReader(csvfile) index = 0 for row in movie_file_reader: title = row['Title'] release_year = int(row['Year']) self.__dataset_of_movies.append(Movie(title, release_year)) print(f"Movie {index} with title: {title}, release year {release_year}") actors = row['Actors'].split(',') temp_director = Director(row['Director']) genres = row['Genre'].split(',') for a in actors: temp_actor = Actor(a.strip()) if temp_actor not in self.__dataset_of_actors: self.__dataset_of_actors.append(temp_actor) if temp_director not in self.__dataset_of_directors: self.__dataset_of_directors.append(temp_director) for g in genres: temp_genre = Genre(g.strip()) if temp_genre not in self.__dataset_of_genres: self.__dataset_of_genres.append(temp_genre) index += 1
def read_csv_file(self): with open(self.__file_name, mode='r', encoding='utf-8-sig') as csvfile: movie_file_reader = csv.DictReader(csvfile) index = 0 for row in movie_file_reader: title = row['Title'] release_year = int(row['Year']) movie = Movie(title, release_year) actors1 = row['Actors'].split(",") actors2 = [] for i in actors1: actors2.append(Actor(i)) director = Director(row['Director']) genres1 = row['Genre'].split(",") genres2 = [] for i in genres1: genres2.append(Genre(i)) self.__dataset_of_movies.add(movie) for actor in actors2: self.__dataset_of_actors.add(actor) self.__dataset_of_directors.add(director) for genre in genres2: self.__dataset_of_genres.add(genre) index += 1
def read_csv_file(self): with open(self.__file_name, mode='r', encoding='utf-8-sig') as csvfile: movie_file_reader = csv.DictReader(csvfile) for row in movie_file_reader: title = row['Title'] release_year = int(row['Year']) movie = Movie(title, release_year) movie.votes = row['Votes'] movie.metascore = row['Metascore'] movie.rating = row['Rating'] movie.description = row['Description'] self.__movies.append(movie) director = Director(row['Director']) if director not in self.__directors: self.__directors.append(director) actors = re.split(", |,", row["Actors"]) for actor_splited in actors: actor = Actor(actor_splited) if actor not in self.__actors: self.__actors.append(actor) genres = row['Genre'].split(",") for genre_splited in genres: genre = Genre(genre_splited) if genre not in self.__genres: self.__genres.append(genre)