Menu
CoddyTech

Pengujian dan Integrasi

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Python di Coddy. Pelajaran 60 dari 64.

challenge icon

Tantangan

Sedang

Dalam tantangan ini, kamu akan menerapkan sistem library multi-file dengan cakupan pengujian yang menyeluruh. Kamu akan menggunakan tiga file hanya-baca dan satu file yang dapat diedit, berisi komentar TODO terperinci yang memandu penerapanmu:

  • book.py - Berisi definisi class Book
  • user.py - Berisi class User yang perlu kamu terapkan
  • library.py - Berisi definisi class Library

Coba sendiri

from book import Book
from user import User
from library import Library

# Penangan kasus uji
test_case = input()

if test_case == "create_user":
    user_id = "1"
    name = "Name"
    
    user = User(user_id, name)
    print(user)
    print(f"Books borrowed: {len(user.books_borrowed)}")

elif test_case == "borrow_and_return_all":
    library = Library("Community Library")
    
    # Tambahkan buku dan pengguna
    library.add_book(Book("The Great Gatsby", "F. Scott Fitzgerald", "123456"))
    library.add_book(Book("To Kill a Mockingbird", "Harper Lee", "789012"))
    library.add_book(Book("1984", "George Orwell", "345678"))
    
    user = User("U001", "Alice")
    library.add_user(user)
    
    # Pinjam buku
    library.borrow_book("123456", "U001")
    library.borrow_book("789012", "U001")
    library.borrow_book("345678", "U001")
    
    print(f"Books borrowed before: {len(user.books_borrowed)}")
    
    # Kembalikan semua buku
    num_returned = user.return_all_books(library)
    
    print(f"Books returned: {num_returned}")
    print(f"Books borrowed after: {len(user.books_borrowed)}")
    
    # Periksa apakah semua buku tersedia
    for book in library.books:
        print(f"Book {book.isbn} available: {book.available}")

elif test_case == "return_some_books":
    library = Library("Community Library")
    
    # Tambahkan buku dan pengguna
    book1 = Book("The Great Gatsby", "F. Scott Fitzgerald", "123456")
    book2 = Book("To Kill a Mockingbird", "Harper Lee", "789012")
    library.add_book(book1)
    library.add_book(book2)
    
    user = User("U001", "Alice")
    library.add_user(user)
    
    # Pinjam satu buku saja
    library.borrow_book("123456", "U001")
    
    print(f"Books borrowed before: {len(user.books_borrowed)}")
    
    # Kembalikan semua buku
    num_returned = user.return_all_books(library)
    
    print(f"Books returned: {num_returned}")
    print(f"Books borrowed after: {len(user.books_borrowed)}")

elif test_case == "empty_return":
    library = Library("Community Library")
    
    user = User("U001", "Alice")
    library.add_user(user)
    
    print(f"Books borrowed: {len(user.books_borrowed)}")
    
    # Kembalikan semua buku (seharusnya 0)
    num_returned = user.return_all_books(library)
    
    print(f"Books returned: {num_returned}")

elif test_case == "multiple_users":
    library = Library("Community Library")
    
    # Tambahkan buku
    library.add_book(Book("The Great Gatsby", "F. Scott Fitzgerald", "123456"))
    library.add_book(Book("To Kill a Mockingbird", "Harper Lee", "789012"))
    
    # Tambahkan pengguna
    user1 = User("U001", "Alice")
    user2 = User("U002", "Bob")
    library.add_user(user1)
    library.add_user(user2)
    
    # Pinjam buku
    library.borrow_book("123456", "U001")
    library.borrow_book("789012", "U002")
    
    print(user1)
    print(user2)
    
    # Kembalikan semua buku milik user1
    num_returned = user1.return_all_books(library)
    
    print(f"Books returned by {user1.name}: {num_returned}")
    
    print(user1)
    print(user2)

elif test_case == "error_handling":
    library = Library("Community Library")
    
    # Tambahkan buku dan pengguna
    library.add_book(Book("The Great Gatsby", "F. Scott Fitzgerald", "123456"))
    user = User("U001", "Alice")
    library.add_user(user)
    
    # Coba pinjam buku yang tidak ada
    result = library.borrow_book("999999", "U001")
    print(result)
    
    # Coba pinjam buku untuk pengguna yang tidak ada
    result = library.borrow_book("123456", "U999")
    print(result)
    
    # Pinjam buku yang ada
    result = library.borrow_book("123456", "U001")
    print(result)
    
    # Coba pinjam buku yang sama lagi
    result = library.borrow_book("123456", "U001")
    print(result)
    
    # Coba kembalikan buku yang tidak dipinjam
    result = library.return_book("789012", "U001")
    print(result)

elif test_case == "stress_test":
    library = Library("Community Library")
    
    user = User("U001", "Alice")
    library.add_user(user)
    
    # Tambahkan 100 buku
    for i in range(1, 101):
        isbn = f"{i:03d}"  # Format sebagai 001, 002, dan seterusnya.
        library.add_book(Book(f"Book {i}", f"Author {i}", isbn))
        library.borrow_book(isbn, "U001")
    
    print(f"Books borrowed: {len(user.books_borrowed)}")
    
    # Kembalikan semua buku
    num_returned = user.return_all_books(library)
    
    print(f"Books returned: {num_returned}")
    print(f"Books borrowed after: {len(user.books_borrowed)}")

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Python online