Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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]
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
    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]
Ejemplo n.º 8
0
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)
Ejemplo n.º 10
0
 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)
Ejemplo n.º 12
0
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]
Ejemplo n.º 13
0
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]
Ejemplo n.º 14
0
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))
Ejemplo n.º 15
0
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
Ejemplo n.º 16
0
 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)
Ejemplo n.º 17
0
    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)
Ejemplo n.º 18
0
    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)
Ejemplo n.º 19
0
 def invite_member(self, user: User):
     if user not in self.__members:
         self.__members.append(user)
         user.watch_movie(self.__movie)
Ejemplo n.º 20
0
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()
Ejemplo n.º 21
0
    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>]"
Ejemplo n.º 22
0
    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
Ejemplo n.º 23
0
    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
        ]
Ejemplo n.º 24
0
 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]