def test_watched_movies(self): user1 = User('user1', 'pw12345') movie1 = Movie("Star War", 19879) movie1.runtime_minutes = 120 user1.watch_movie(movie1) assert user1.watched_movies == [movie1] assert user1.time_spent_watching_movies_minutes == 120
def stats(): movie = Movie('Up', 2009) movie.add_actor(Actor("Will Smith")) movie.add_actor(Actor("Daniel Radcliff")) movie.add_genre(Genre("Comedy")) movie.add_genre(Genre("Drama")) director = Director("Peter Jackson") movie.director = director movie1 = Movie('Down', 2013) movie1.add_actor(Actor("Tom Cruise")) movie1.add_actor(Actor("Selena Gomez")) movie1.add_genre(Genre("Comedy")) movie1.add_genre(Genre("Romance")) director = Director("Peter Jackson") movie1.director = director movie2 = Movie('Boom', 1999) movie2.add_actor(Actor("Will Smith")) movie2.add_actor(Actor("Tom Cruise")) movie2.add_genre(Genre("Comedy")) movie2.add_genre(Genre("Action")) director = Director("Taika Waititi") movie2.director = director user = User("aram", "one1") user.watch_movie(movie) user.watch_movie(movie1) user.watch_movie(movie2) stats = Stats(user) return stats
def test_duplicate_movie(): movie = Movie("The Bee Movie but its 20000x faster", 2010) user1 = User('me', 'pwd') user1.watch_movie(movie) assert user1.watched_movies == [movie] user1.watch_movie(movie) assert user1.watched_movies == [movie]
def test_user(): movie1 = Movie("Moana", 2016) movie1.runtime_minutes = 107 movie2 = Movie("The Lion King", 1994) movie2.runtime_minutes = 99 review_text = "This movie was very enjoyable." rating = 8 review = Review(movie1, review_text, rating) user = User("John", "Str0ngP4ssw0rd") user.watch_movie(movie1) user.watch_movie(movie2) user.watch_movie(movie1) user.add_review(review) user2 = User("John", "c0pyc4t") user3 = User("Andrew", "yep") assert user == user2 assert user3 < user2 assert user3.user_name == "andrew" assert user.time_spent_watching_movies_minutes == 313 assert len(user.watched_movies) == 2 assert len(user.reviews) == 1
def test_normal_user(): user1 = User('Martin', 'pw12345') assert repr(user1) == "<User martin>" movie1 = Movie("Moana", 2016) movie1.runtime_minutes = 107 user1.watch_movie(movie1) assert user1._watched_movies == [Movie("Moana", 2016)] assert user1.time_spent_watching_movies_minutes == 107
def test_preference_adding_correctly(): user = User("Trump", "twitterking") movie=Movie("ooo",9999) movie.add_genre(Genre("onmygod")) user.add_preference(Genre("Action")) user.add_preference(Genre("Sci-Fi")) user.watch_movie(movie) ls=[Genre("onmygod"),Genre("Action"),Genre("Sci-Fi")] assert ls.sort()==recommend.get_user_preference(user).sort()
def test_add_review(self): user1 = User('user1', 'pw12345') movie1 = Movie("Star War", 19879) movie1.runtime_minutes = 120 user1.watch_movie(movie1) review = Review(movie1, "This is a great movie!", 9) user1.add_review(review) assert user1.reviews == [review]
def test_preference_by_watching(): user = User("Trump", "twitterking") user.watch_movie(movie_list[0]) 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 simulate( self, num_users: int = _DEFAULT_USER_COUNT, min_num_movies: int = _DEFAULT_MIN_MOVIES_PER_USER, max_num_movies: int = _DEFAULT_MAX_MOVIES_PER_USER) -> 'State': self._validate_params(num_users, min_num_movies, max_num_movies) users = [] reviews = [] num_movies = len(self._movies) upper_bound = min(max_num_movies or num_movies, num_movies) population = list(range(0, num_movies)) now = datetime.utcnow().timestamp() for i in range(num_users): username = _rand_string(4) password = _rand_string() user = User(username, password) # Pick n distinct movies movies = [ self._movies[idx] for idx in sample( population, randint(min_num_movies, upper_bound)) ] # Add those movies to the user's watchlist for movie in movies: user.add_to_watchlist(movie) # Watch a random number of movies on the user's watchlist for j in range(randint(0, user.watchlist_size())): user.watch_movie(movies[j]) # Review a random number of the movies the user watched for j in range(randint(0, len(user.watched_movies))): movie = movies[j] review_text = _rand_string() rating = randint(0, 10) release_date = datetime(movie.release_date, 1, 1).timestamp() delta = randint( 0, int(now - release_date) ) # float -> int will be lossy but not a big deal here delta += random() # Add a random number of milliseconds timestamp = datetime.fromtimestamp(now - delta) review = Review(movie, review_text, rating, timestamp) user.add_review(review) reviews.append(review) users.append(user) return self.State(users, reviews)
def record_user_and_review(self, user: User, review_text: str, rating: int): if type(user) is not User or type(review_text) is not str or type( rating) is not int: raise TypeError() else: self._users.append(user) review = Review(self._movie_watched_together, review_text, rating) self._reviews.append(review) user.watch_movie(self._movie_watched_together) user.add_review(review)
def create_and_add_review_movie_and_user_to_group_and_individual_list( self, user: User, review_text: str, rating: int): if type(user) is not User or type(review_text) is not str or type( rating) is not int: raise TypeError() else: self._users.append(user) review = Review(self._movie_watched_together, review_text, rating) self._reviews.append(review) user.watch_movie(self._movie_watched_together) user.add_review(review)
def test_add_watched_movies(): user = User('mike', 'nope') movie = Movie("Moana", 2016) movie.runtime_minutes = 88 movie2 = Movie("Total Recall", 1989) movie2.runtime_minutes = 90 total_time = movie2.runtime_minutes + movie.runtime_minutes user.watch_movie(movie) user.watch_movie(movie2) assert user.time_spent_watching_movies_minutes == total_time assert user.watched_movies == [movie, movie2]
def test_add_movie(): movie = Movie("Shrek but every time he takes a STEP it gets 5% faster", 2010) movie.runtime_minutes = 9 movie2 = Movie("The Bee Movie but its 20000x faster", 2010) movie2.runtime_minutes = 3 user1 = User('Me', 'pw12345') user1.watch_movie(movie) assert user1.time_spent_watching_movies_minutes == 9 user1.watch_movie(movie2) assert user1.time_spent_watching_movies_minutes == 12 assert user1.watched_movies == [movie, movie2]
def test_multiple_way(): user = User("Trump", "twitterking") pref=[Genre("Crime")] for i in movie_list: user.watch_movie(i) for genre in i.genres: if genre not in pref: pref.append(genre) user.add_preference(Genre("Crime"))# not a genre of first 10 movie indicator = 0 indicator2 = 0 for movie in recommend.get_recommended_watch_list(user,10): #get 10 movie for genre in movie.genres: if genre in pref: indicator += 1 if genre == Genre("Crime"): indicator2 +=1 assert indicator > 0 # all movie is linked to preference assert indicator2 != 0 # def special(): # user = User("Trump", "twitterking") # pref = [Genre("Crime")] # for i in movie_list: # user.watch_movie(i) # for genre in i.genres: # if genre not in pref: # pref.append(genre) # user.add_preference(Genre("Crime")) # not a genre of first 10 movie # indicator = 0 # indicator2 = 0 # for movie in recommend.get_recommended_watch_list(user, 10): # get 10 movie # for genre in movie.genres: # if genre in pref: # indicator += 1 # if genre == Genre("Crime"): # indicator2 += 1 # return indicator2 != 0 # # f=0 # n=10000 # for i in range(n): # if special() == False: # f+=1 # print("{}%".format(f/n))
def test_add_movies_and_length(): user = User("Jack Huang", "123124") movie1 = Movie("Your Name", 2000) movie2 = Movie("Spirited Away", 1995) movie3 = Movie("Avengers 4", 1899) movie1.runtime_minutes = 100 movie2.runtime_minutes = 150 movie3.runtime_minutes = 300 assert user.watched_movies == [] user.watch_movie(movie1) user.watch_movie(movie2) user.watch_movie(movie3) assert user.watched_movies == [ Movie("Your Name", 2000), Movie("Spirited Away", 1995), Movie("Avengers 4", None) ] assert user.time_spent_watching_movies_minutes == 550
def test_user(self): movie = Movie("Moana", 2016) movie.runtime_minutes = 50 review_text = "This movie was very enjoyable." rating = 8 review = Review(movie, review_text, rating) user1 = User('Martin', 'pw12345') user2 = User('Ian', 'pw67890') user3 = User('Daniel', 'pw87465') print(user3.time_spent_watching_movies_minutes) user3.watch_movie(movie) user3.add_review(review) print(user3.time_spent_watching_movies_minutes) print(user3.watched_movies) print(user3.reviews) print(user1 == user2) print(user1) print(user2) print(user3)
def test_all(self): user1 = User("nathanl127", "passwordgoeshere") user2 = User("boomer127", "passwordgoeshere") review = Review(Movie("Star Wars", 1999), "Great Movie", 10) a_movie = Movie("Back To The Future", 1965) a_movie.runtime_minutes = 10 assert user1.user_name == "nathanl127" assert user1.password == "passwordgoeshere" assert user1.reviews == [] assert user1.time_spent_watching_movies_minutes == 0 assert len(user1.watched_movies) == 0 user1.watch_movie(a_movie) assert len(user1.watched_movies) == 1 assert user1.time_spent_watching_movies_minutes == 10 user1.add_review(review) assert len(user1.reviews) == 1 assert repr(user1) == "<User nathanl127>" assert user2 < user1 assert hash(user1) != hash(user2)
def test_user(self): # add movie user1 = User(' Martin ', 'pw12345') print(user1.user_name) user1 = User('Martin', 'pw12345') user2 = User('Ian', 'pw67890') user3 = User('Daniel', 'pw87465') print(user1) print(user2) print(user3) movie1 = Movie("Up", 2009) movie1.runtime_minutes = 150 user1.watch_movie(movie1) user1.watch_movie(movie1) print("Watched Movies:", user1.watched_movies) print("Watching Time:", user1.time_spent_watching_movies_minutes) review1 = Review(movie1, "test", 5) user1.add_review(review1) user1.add_review(review1) print(user1.reviews)
def invite_member(self, user: User): if user not in self.__members: self.__members.append(user) user.watch_movie(self.__movie)
movie1 = Movie("Moana", 2016) movie2 = Movie("Ice Age", 2002) movie3 = Movie("John Cena", 1999) movie4 = Movie("Bravo", 2000) movie5 = Movie("Charlie", 1987) movie6 = Movie("Alpha", 2010) movie1.runtime_minutes = 120 movie2.runtime_minutes = 120 movie3.runtime_minutes = 114 movie4.runtime_minutes = 180 movie5.runtime_minutes = 86 movie6.runtime_minutes = 12 user1.watch_movie(movie1) user1.watch_movie(movie2) user1.watch_movie(movie2) user1.watch_movie(movie2) user1.watch_movie(movie2) user1.watch_movie(movie2) user2.watch_movie(movie2) user2.watch_movie(movie3) user3.watch_movie(movie3) movie_lst = [movie1, movie2, movie3, movie4, movie5, movie6] movie_comparison = movie_compare(movie_lst) movie_comparison.longest_movie()
def test_init(self): # initialise the different movies movies = [ Movie("Moana", 2016), Movie("Guardians of the Galaxy", 2014), Movie("Ice Age", 2002), Movie("Transformers", 2007) ] movies[0].runtime_minutes = 107 movies[1].runtime_minutes = 121 movies[2].runtime_minutes = 103 movies[3].runtime_minutes = 144 movie = Movie("Us", 2019) movie.runtime_minutes = 121 random_movie1 = Movie("Black Panther", 2018) random_movie1.runtime_minutes = 135 random_movie2 = Movie("Night School", 2018) random_movie2.runtime_minutes = 112 # user 1 user1 = User("Martin", "pw12345") for mov in movies: user1.watch_movie(mov) user1.watchlist.add_movie(movie) user1.watchlist.add_movie(random_movie1) assert user1.time_spent_watching_movies_minutes == 475 assert repr( user1.watched_movies ) == "[<Movie Moana, 2016>, <Movie Guardians of the Galaxy, 2014>, <Movie Ice Age, 2002>, <Movie Transformers, 2007>]" assert user1.watchlist.size == 2 # user 2 user2 = User("Alfie", "pw23456") user2.watch_movie(movies[0]) user2.watchlist.add_movie(random_movie1) user2.watchlist.add_movie(random_movie2) assert user2.time_spent_watching_movies_minutes == 107 assert repr(user2.watched_movies) == "[<Movie Moana, 2016>]" assert user2.watchlist.size == 2 # user 3 will be added in after the movie is watchingsimulation user3 = User("Yara", "pw34567") user3.watch_movie(movies[0]) user3.watch_movie(movies[2]) user3.watch_movie(movies[3]) user3.watchlist.add_movie(movie) assert user3.time_spent_watching_movies_minutes == 354 assert repr( user3.watched_movies ) == "[<Movie Moana, 2016>, <Movie Ice Age, 2002>, <Movie Transformers, 2007>]" assert user3.watchlist.size == 1 # user 4 user4 = User("Danny", "pw45678") user4.watch_movie(movies[0]) user4.watch_movie(movies[2]) user4.watch_movie(movie) user4.watchlist.add_movie(random_movie2) assert user4.time_spent_watching_movies_minutes == 331 assert repr( user4.watched_movies ) == "[<Movie Moana, 2016>, <Movie Ice Age, 2002>, <Movie Us, 2019>]" assert user4.watchlist.size == 1 user_list = [user1, user2, user4] simulation = MovieWatchingSimulation(movie, user_list) assert repr(simulation.movie) == "<Movie Us, 2019>" assert repr(simulation.user_list ) == "[<User martin>, <User alfie>, <User danny>]"
def test_add_review(self): # initialise the different movies movies = [ Movie("Moana", 2016), Movie("Guardians of the Galaxy", 2014), Movie("Ice Age", 2002), Movie("Transformers", 2007) ] movies[0].runtime_minutes = 107 movies[1].runtime_minutes = 121 movies[2].runtime_minutes = 103 movies[3].runtime_minutes = 144 movie = Movie("Us", 2019) movie.runtime_minutes = 121 random_movie1 = Movie("Black Panther", 2018) random_movie1.runtime_minutes = 135 random_movie2 = Movie("Night School", 2018) random_movie2.runtime_minutes = 112 # user 1 user1 = User("Martin", "pw12345") for mov in movies: user1.watch_movie(mov) user1.watchlist.add_movie(movie) user1.watchlist.add_movie(random_movie1) # user 2 user2 = User("Alfie", "pw23456") user2.watch_movie(movies[0]) user2.watchlist.add_movie(random_movie1) user2.watchlist.add_movie(random_movie2) # user 3 will be added in after the movie is watchingsimulation user3 = User("Yara", "pw34567") user3.watch_movie(movies[0]) user3.watch_movie(movies[2]) user3.watch_movie(movies[3]) user3.watchlist.add_movie(movie) # user 4 user4 = User("Danny", "pw45678") user4.watch_movie(movies[0]) user4.watch_movie(movies[2]) user4.watch_movie(movie) user4.watchlist.add_movie(random_movie2) user_list = [user1, user2, user4] simulation = MovieWatchingSimulation(movie, user_list) user1.add_review(Review(movies[0], "Daughter loved it", 8)) user1.add_review(Review(movies[1], "Good laugh", 9)) user1.add_review(Review(movies[2], "Good for the kids", 9)) user1.add_review(Review(movies[3], "Great action sequences", 7)) user2.add_review(Review(movies[0], "It was awesome!!", 10)) user3.add_review( Review(movies[0], "Little siblings absolutely enjoyed it.", 9)) user3.add_review( Review(movies[2], "Brings back all the good memories", 10)) user3.add_review(Review(movies[3], "I'm a fan of giant robots now", 9)) user4.add_review(Review(movies[0], "Watched it too many times now", 6)) user4.add_review(Review(movies[2], "Take me back", 7)) user4.add_review(Review(movie, "Greatly thrilling", 9)) assert len(user1.reviews) == 4 assert len(user2.reviews) == 1 assert len(user3.reviews) == 3 assert len(user4.reviews) == 3 simulation.add_user(user3) simulation.add_review(user1, "Very entertaining and suspenseful", 9) simulation.add_review(user2, "Definitely not for kids my age", 4) simulation.add_review(user3, "Oh that was scary", 9) simulation.add_review(user4, "Full of wonderful twists and turns", 10) assert len(user1.reviews) == 5 assert len(user2.reviews) == 2 assert len(user3.reviews) == 4 assert len(user4.reviews) == 4
def test_least_watched(self): user1 = User("John", "abc123") user2 = User("Mike", "abcd123") user3 = User("Sam", "bebebebe") movie1 = Movie("Moana", 2016) movie2 = Movie("Ice Age", 2002) movie3 = Movie("John Cena", 1999) movie4 = Movie("Bravo", 2000) movie5 = Movie("Charlie", 1987) user1.watch_movie(movie1) user1.watch_movie(movie2) user1.watch_movie(movie2) user1.watch_movie(movie2) user1.watch_movie(movie2) user1.watch_movie(movie2) user2.watch_movie(movie2) user2.watch_movie(movie3) user3.watch_movie(movie3) lst = [movie1, movie2, movie3, movie4, movie5] film_comparison = movie_compare(lst) film_comparison.least_watched() assert film_comparison.movies_lst == [ movie4, movie5, movie1, movie3, movie2 ]
def watch_movie(self, user: User, index: int): """ Lets a user watch a movie from the watchlist, then removes the movie from the watchlist. """ if 0 <= index < len(self.movies): movie = self.movies[index] user.watch_movie(movie) del self.movies[index]