示例#1
0
 def test_init_and_repr(self):
     actor1 = Actor("Tom Cruise")
     assert repr(actor1) == "<Actor Tom Cruise>"
     actor2 = Actor("")
     assert actor2.actor_full_name is None
     actor3 = Actor(42)
     assert actor3.actor_full_name is None
示例#2
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
示例#3
0
 def test_init(self):
     actor1 = Actor("Angelina Jolie")
     assert repr(actor1) == "<Actor Angelina Jolie>"
     actor2 = Actor("")
     assert actor2.actor_full_name is None
     actor3 = Actor(42)
     assert actor3.actor_full_name is None
示例#4
0
def test_add_colleague(actor):
    result = actor.add_actor_colleague("")
    assert result == -1
    assert actor.actor_colleague_list == []
    actor1 = Actor("Joe Jonas")
    result = actor.add_actor_colleague(actor1)
    assert result == 1
    assert actor.actor_colleague_list == [actor1]
    actor2 = 'Henry Bagel'
    result = actor.add_actor_colleague(actor2)
    assert result == -1
    assert actor.actor_colleague_list == [actor1]
    actor3 = Actor("Jane Doe")
    result = actor.add_actor_colleague(actor3)
    assert result == 1
    assert actor.actor_colleague_list == [actor1, actor3]
    result = actor.add_actor_colleague(actor1)
    list1 = [actor1]
    assert result == 0
    assert actor.actor_colleague_list == [actor1, actor3]
    actor4 = Actor("")
    actor5 = Actor(45)
    result = actor.add_actor_colleague(actor4)
    assert result == 0
    result = actor.add_actor_colleague(actor5)
    assert result == 0
    assert len(actor.actor_colleague_list) == 2
    assert actor.actor_colleague_list == [actor1, actor3]
示例#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
示例#6
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
示例#7
0
 def test_remove_actor(self):
     movie1 = Movie("Moana", 2016)
     movie1.add_actor(Actor("Some Actor"))
     assert len(movie1.actors) == 1
     movie1.remove_actor(Actor("Some Actor"))
     assert len(movie1.actors) == 0
     movie1.remove_actor(Actor("Some Actor"))
示例#8
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)
示例#9
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
示例#10
0
    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 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
示例#12
0
    def test_eq(self):
        actor1 = Actor("Tom Cruise")
        actor2 = Actor("Dwayne Johnson")
        actor3 = Actor("Tom Cruise")

        assert (actor1 == actor3) == True
        assert (actor1 == actor2) == False # Yes, I know I could do !=
示例#13
0
 def test_check_if_this_actor_worked_with(self):
     actor1 = Actor("Angelina Jolie")
     actor2 = Actor("Brad Pitt")
     actor3 = Actor("Not an Actor")
     actor1.add_actor_colleague(actor2)
     assert actor1.check_if_this_actor_worked_with(actor2) == True
     assert actor2.check_if_this_actor_worked_with(actor1) == True
     assert actor1.check_if_this_actor_worked_with(actor3) == False
示例#14
0
 def test_actor_init(self):
     actor1 = Actor("Angelina Jolie")
     assert actor1.genre_name is "Angelina Jolie"
     assert repr(actor1) == "<Actor Angelina Jolie>"
     actor2 = Actor("")
     assert actor2.genre_name is None
     actor3 = Actor(42)
     assert actor3.genre_name is None
示例#15
0
 def movie(self):
     movie = Movie("Lady Bug and Bee", 2017)
     movie.runtime_minutes = 100
     movie.director = Director("Dave")
     movie.add_actor(Actor("Sam"))
     movie.add_actor(Actor("Cherry"))
     movie.add_genre(Genre("Kids"))
     return movie
示例#16
0
def test_compare():
    actor1 = Actor("Brad Pitt")
    actor2 = Actor("Brad Pitt")
    assert actor1 == actor2
    actor2 = 4
    assert actor1 != actor2
    actor1 = Actor("")
    actor2 = Actor(45)
    assert actor1 == actor2
示例#17
0
    def test_equal(self):
        actor1 = Actor("Angelina Jolie")
        actor2 = Actor("")
        actor3 = Actor("Angelina Jolie")
        actor4 = Actor(5)

        assert actor1.__eq__(actor2) == False
        assert actor3.__eq__(actor1) == True
        assert actor2.__eq__(actor4) == False
示例#18
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")]
示例#19
0
 def test_set_people(self, movie):
     assert movie.actors == [Actor("Sam"), Actor("Cherry")]
     assert movie.director == Director("Dave")
     assert movie.runtime_minutes == 100
     movie.runtime_minutes = "pam"
     assert movie.runtime_minutes == 100
     assert movie.genres == [Genre("Kids")]
     movie1 = Movie("Same", 120)
     assert repr(movie1) == "<Movie Same, None>"
示例#20
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
示例#21
0
def test_init(actor):
    assert actor.actor_full_name == 'Brad Pitt'
    actor1 = Actor("Brad Pitt")
    assert repr(actor1) == "<Actor Brad Pitt>"
    actor2 = Actor("")
    assert actor2.actor_full_name is None
    actor3 = Actor(42)
    assert actor3.actor_full_name is None
    assert repr(actor2) == "<Actor None>"
    assert repr(actor3) == "<Actor None>"
示例#22
0
 def test_init(self):
     actor1 = Actor("Taika Waititi")
     assert repr(actor1) == "<Actor Taika Waititi>"
     actor2 = Actor("")
     assert actor2.actor_full_name is None
     actor3 = Actor(3)
     assert actor3.actor_full_name is None
     actor1.actor_full_name = "josie"
     assert actor1.actor_full_name == "josie"
     assert (actor1 == actor3) == False
示例#23
0
    def test_actors(self):
        # correct input
        movie1 = Movie("Moana", 2016)
        movie1.actors = [Actor("Dwayne Johnson"), Actor("Rachel House")]
        assert movie1.actors == [
            Actor("Dwayne Johnson"),
            Actor("Rachel House")
        ]

        # incorrect input
        movie2 = Movie("Frozen", 2014)
示例#24
0
def test_actors():
    movie1 = Movie("Moana", 2016)
    actors = [
        Actor("Auli'i Cravalho"),
        Actor("Dwayne Johnson"),
        Actor("Rachel House"),
        Actor("Temuera Morrison")
    ]
    for actor in actors:
        movie1.add_actor(actor)
    assert movie1.actors == actors
示例#25
0
 def test_init(self):
     actor1 = Actor("Angelina Jolie")
     assert actor1.__repr__() == "<Actor Angelina Jolie>"
     actor2 = Actor("")
     assert actor2.__repr__() == "<Actor None>"
     actor3 = Actor(27)
     assert actor3.__repr__() == "<Actor None>"
     assert actor1
示例#26
0
 def test___eq__(self):
     actor1 = Actor("Angelina Jolie")
     actor2 = Actor("Angelina Jolie")
     assert actor1.__eq__(actor2) == True
     actor1 = Actor("Angelina Jolie")
     actor2 = Actor("Brad Pitt")
     assert actor1.__eq__(actor2) == False
示例#27
0
    def test_init(self):
        movie = Movie("Moana", 2016)
        movie1 = Movie("Joana", 2016)
        assert repr(movie) == "<Movie Moana, 2016>"
        director = Director("Ron Clements")
        movie.director = director
        assert movie.director == "<Director Ron Clements>"
        assert movie.__eq__(movie1) is False
        director_list = [Director("James Cameron"), Director("Johnny Big")]
        movie.director = director_list
        assert movie.director == "<Director James Cameron>"

        actors = [
            Actor("Auli'i Cravalho"),
            Actor("Dwayne Johnson"),
            Actor("Rachel House"),
            Actor("Temuera Morrison")
        ]
        for actor in actors:
            movie.add_actor(actor)
        print(movie.actors)
        assert movie.actors == [
            Actor("Auli'i Cravalho"),
            Actor("Dwayne Johnson"),
            Actor("Rachel House"),
            Actor("Temuera Morrison")
        ]
        assert movie.runtime_minutes is None
        movie.runtime_minutes = 107
        assert movie.runtime_minutes == 107
示例#28
0
def test_movies():
    movie_file_reader = MovieFileCSVReader('test.csv')
    movie_file_reader.read_csv_file()
    movie1 = Movie("Guardians of the Galaxy", 2014)
    movie1.description = "A group of intergalactic criminals are forced to work together to stop a fanatical warrior from taking control of the universe."
    movie1.runtime_minutes = 121
    movie1.votes = 757074
    movie1.rating = 8.1
    movie1.add_genre(Genre("Action"))
    movie1.add_genre(Genre("Adventure"))
    movie1.add_genre(Genre("Sci-Fi"))
    movie1.add_actor(Actor("Chris Pratt"))
    movie1.add_actor(Actor("Vin Diesel"))
    movie1.add_actor(Actor("Bradley Cooper"))
    movie1.add_actor(Actor("Zoe Saldana"))
    movie1.director = Director("James Gunn")
    assert movie_file_reader.dataset_of_movies[0] == movie1
    assert movie_file_reader.dataset_of_movies[0].runtime_minutes == movie1.runtime_minutes
    assert movie_file_reader.dataset_of_movies[0].description == movie1.description
    assert movie_file_reader.dataset_of_movies[0].votes == movie1.votes
    assert movie_file_reader.dataset_of_movies[0].rating == movie1.rating
    assert movie_file_reader.dataset_of_movies[0].actors == movie1.actors
    assert movie_file_reader.dataset_of_movies[0].genres == movie1.genres
    assert movie_file_reader.dataset_of_movies[0].director == movie1.director
    assert movie_file_reader.dataset_of_actors[0] == Actor("Chris Pratt")
    assert movie_file_reader.dataset_of_actors[1] == Actor("Vin Diesel")
    assert movie_file_reader.dataset_of_actors[2] == Actor("Bradley Cooper")
    assert movie_file_reader.dataset_of_actors[3] == Actor("Zoe Saldana")
    assert repr(movie_file_reader.dataset_of_actors[0].actor_colleague_list) == "[<Actor Vin Diesel>, <Actor Bradley Cooper>, <Actor Zoe Saldana>, <Actor Jennifer Lawrence>, <Actor Michael Sheen>, <Actor Laurence Fishburne>, <Actor Denzel Washington>, <Actor Ethan Hawke>, <Actor Vincent D'Onofrio>, <Actor Bryce Dallas Howard>, <Actor Ty Simpkins>, <Actor Judy Greer>, <Actor Will Ferrell>, <Actor Elizabeth Banks>, <Actor Will Arnett>, <Actor Jessica Chastain>, <Actor Joel Edgerton>, <Actor Mark Strong>, <Actor Channing Tatum>, <Actor Rosario Dawson>, <Actor Jenna Dewan Tatum>]"
    assert movie_file_reader.dataset_of_directors[0] == Director("James Gunn")
    assert movie_file_reader.dataset_of_genres[0] == Genre("Action")
    assert movie_file_reader.dataset_of_genres[1] == Genre("Adventure")
    assert movie_file_reader.dataset_of_genres[2] == Genre("Sci-Fi")
示例#29
0
def test_code_runner():
    movie = Movie("Moana", 2016)
    assert movie.title == "Moana"
    assert movie.release_year == 2016
    director = Director("Ron Clements")
    movie.director = director
    assert 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 movie.actors == [
        Actor("Auli'i Cravalho"),
        Actor("Dwayne Johnson"),
        Actor("Rachel House"),
        Actor("Temuera Morrison")
    ]

    movie.runtime_minutes = 107
    assert movie.runtime_minutes == 107
示例#30
0
def test_actors():
    aa = Movie("Emu Wars", 2000)

    actor1 = Actor("Rick Astley")
    actor2 = Actor("Voldemort")
    actor3 = Actor("Winnie the Pooh")
    aa.add_actor(actor1)
    aa.add_actor(actor2)
    aa.add_actor(actor2)

    assert aa.actors == [actor1, actor2]

    aa.remove_actor(actor1)
    aa.remove_actor(actor3)
    assert aa.actors == [actor2]