Exemple #1
0
def main():
    """
    The main controller for the LMIS.
    Used to create instances of different classes
    Used for integration testing and various implemented methods

    """
    start_time = time.time()
    print(
        "IF YOU FAIL TO PLAN FOR FAILURES, YOU ARE PLANNING TO FAIL AS AN SQA."
    )

    try:
        print("LIBRARY MANAGEMENT INVENTORY SYSTEM")
        print("INTEGRATION TEST PROGRAM")

        print("\nCREATING AND DISPLAYING OF SUBSCRIBERS")
        sub1 = Subscriber('1839456', 'John', 'Doe', 23)
        sub2 = Subscriber('1630236', 'Nicolas', 'Gagnon', 8)
        sub3 = Subscriber('1269348', 'Martin', 'Tremblay', 18)
        print(sub1.info())
        print(sub2.info())
        print(sub3.info())

        print("\nCREATING AND DISPLAYING OF BOOKS")
        book7 = Book("HB514", "Bjh D++", 2010, 9, 3, 4)
        book1 = Book("GA403", "Big C++", 2009, 8, 3, 3)
        book2 = Book("QA203", "Calcul a plusieurs variables partie 1", 2011, 3,
                     2, 2)
        book3 = Book("QA204", "Calcul a plusieurs variables partie 2", 2011, 3,
                     2, 2)
        book4 = Book("AC409", "Le chateau d'Ortrante", 1764, 16, 1, 1)
        book5 = Book("BD302", "Harry Potter et le prisionier d'Azkaban", 1999,
                     3, 1, 1)
        book6 = Book("CE413", "Ibssz Qpuufs et le prisionier c'balbcbo", 2000,
                     4, 2, 2)
        print(book1.info())
        print(book2.info())
        print(book3.info())
        print(book4.info())
        print(book5.info())
        print(book6.info())
        print(book7.info())

        print("\nBORROWING A BOOK BY A SUBSCRIBER")
        borrow1 = Borrow(sub1, book2, 2020)
        borrow2 = Borrow(sub2, book1, 2020)
        print(borrow1.info())
        print(borrow2.info())

        # / ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * /
        # / *BEGINNING OF TESTS * /
        # / *Les modifications restantes sont a la fin de la fonction main. * /
        # / ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * /

        print("\nADDING OF BOOKS AND SUBSCRIBERS TO THE LIBRARY")
        subscribers = []
        books = []
        borrowers = []
        lib = Library(subscribers, 0, books, 0, borrowers, 0)
        lib.add_subscriber_to_library(sub1)
        lib.add_subscriber_to_library(sub2)
        lib.add_subscriber_to_library(sub3)
        lib.add_subscriber_to_library(sub1)
        lib.add_book_to_library(book1)
        lib.add_book_to_library(book2)
        lib.add_book_to_library(book3)
        lib.add_book_to_library(book4)
        lib.add_book_to_library(book5)
        lib.add_book_to_library(book6)
        lib.add_book_to_library(book7)
        lib.add_book_to_library(book3)
        lib.add_book_to_library(book1)

        print("\nSEARCH BY TITLE...: Calcul")
        title = "Calcul"
        lib.search_book_title(title)

        title = random.choice([book_obj.get_title for book_obj in lib.books])
        print("\nSEARCH A RANDOM TITLE ...: {}".format(title))
        # print(title)
        lib.search_book_title(title)

        print("\nSEARCH BY QUOTE...: AC409")

        lib.search_book_quote("AC409")
        lib.search_book_quote("BD302")
        lib.search_book_quote("QA204")
        lib.search_book_quote("QA203")
        lib.search_book_quote("AC209")
        quote = random.choice([book_obj.get_quote for book_obj in lib.books])
        # print(quote)
        print("\nSEARCH A RANDOM QUOTE...: {}".format(quote))
        lib.search_book_quote(quote)

        print("\nTESTS OF BORROWING")
        lib.borrow_book_by_subscriber("1630236", "AC409", 2021)
        lib.borrow_book_by_subscriber("1630236", "BD302", 2021)
        lib.borrow_book_by_subscriber('1839456', "GA403", 2021)
        lib.borrow_book_by_subscriber('1839456', "GA403", 2021)
        lib.borrow_book_by_subscriber("1839456", "BD302", 2022)
        lib.borrow_book_by_subscriber("1630236", "QA204", 2024)
        lib.borrow_book_by_subscriber("1630236", "QA203", 2044)
        lib.borrow_book_by_subscriber("1630236", "CE413", 2024)

        print("\nSUBSCRIBER INFORMATION BEFORE RETURNING A BOOK")
        lib.subscriber_info("1630236")

        id_number = random.choice(
            [sub_obj.get_id_number for sub_obj in lib.subscribers])
        print("\nRANDOM SUBSCRIBER INFORMATION BEFORE RETURNING A BOOK...: {}".
              format(id_number))
        lib.subscriber_info(id_number)

        print("\nTEST ON BOOKS RETURN")
        lib.return_book_by_subscriber("1630236", "QA204")
        lib.return_book_by_subscriber("1839456", "QA203")

        print("\nTEST ON RANDOM RETURN...: {} - {}".format(id_number, quote))
        lib.return_book_by_subscriber(id_number, quote)

        print("\nSUBSCRIBER INFORMATION AFTER RETURNING A BOOK")
        lib.subscriber_info("1630236")

        print("\nRANDOM SUBSCRIBER INFORMATION AFTER RETURNING A BOOK...: {}".
              format(id_number))
        lib.subscriber_info(id_number)

        print("\nREMOVING A RANDOM SUBSCRIBER FROM THE LIBRARY:...{}".format(
            id_number))
        lib.remove_subscriber_from_library(id_number)

        id_number_non_existent = "102030"
        print("\nREMOVING A NON EXISTENT SUBSCRIBER FROM THE LIBRARY:...{}".
              format(id_number_non_existent))
        lib.remove_subscriber_from_library(id_number_non_existent)

    except Exception as exception:
        print(exception)
        raise
    else:
        print("\nEND OF INTEGRATION TEST!!!\n")

    finally:
        stop_time = time.time()
        delta_time = stop_time - start_time
        print("{} - {} = {}".format(stop_time, start_time, delta_time))
        print(
            "If you fail to plan, you are planning to fail! Benjamin Franklin")
        print(
            "To be a dancing master is a special thing. But to be a faceless man, that is something else entirely"
        )
        print("PROGRAM ENDED SUCCESSFULLY")