Beispiel #1
0
    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
Beispiel #2
0
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
Beispiel #3
0
 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]
Beispiel #4
0
    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
Beispiel #5
0
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
Beispiel #6
0
    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)
Beispiel #7
0
 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_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
Beispiel #9
0
 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_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
Beispiel #11
0
 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
Beispiel #12
0
 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_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
Beispiel #14
0
    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)
Beispiel #15
0
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
Beispiel #16
0
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
Beispiel #17
0
 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")]
Beispiel #18
0
    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
Beispiel #19
0
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>"
Beispiel #20
0
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
Beispiel #21
0
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)
    ]
Beispiel #22
0
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>"
Beispiel #23
0
 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 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
Beispiel #25
0
    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
Beispiel #26
0
    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)
Beispiel #27
0
    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)
Beispiel #28
0
    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:
            # 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'].split(",")
                for actor_full_name in actors:
                    actor = Actor(actor_full_name)
                    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 = row['Genre'].split(",")
                for genre in genres:
                    genre_type = Genre(genre)
                    if genre_type not in self.__dataset_of_genres:
                        self.__dataset_of_genres.append(genre_type)