From 65248ba65a40e9bee0910e4981b5b5e9b0997715 Mon Sep 17 00:00:00 2001 From: kjknows <160962634+kjknows@users.noreply.github.com> Date: Thu, 21 Mar 2024 20:21:54 -0400 Subject: [PATCH] feat: adds Library class and corresponding tests (#260) * feat - finished test for lesson 10 added answers in terminal * feat: Add Book, Patron, & Library, class and corresponding tests * fix: added Library file * chore: removes misplaced quiz file. --------- Co-authored-by: Anthony D. Mays --- .../lesson9/kevinmason/Book.java | 41 ++++++++++++++++++ .../lesson9/kevinmason/Library.java | 42 +++++++++++++++++++ .../lesson9/kevinmason/Patron.java | 30 +++++++++++++ .../lesson9/kevinmason/BookTest.java | 17 ++++++++ .../lesson9/kevinmason/LibraryTest.java | 29 +++++++++++++ .../lesson9/kevinmason/PatronTest.java | 28 +++++++++++++ 6 files changed, 187 insertions(+) create mode 100644 lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Book.java create mode 100644 lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Library.java create mode 100644 lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Patron.java create mode 100644 lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/BookTest.java create mode 100644 lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/LibraryTest.java create mode 100644 lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/PatronTest.java diff --git a/lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Book.java b/lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Book.java new file mode 100644 index 00000000..c7aca478 --- /dev/null +++ b/lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Book.java @@ -0,0 +1,41 @@ +package com.codedifferently.lesson9.kevinmason; + +public class Book { + private String title; + private String isbn; + private String author; + private int numberOfPages; + private boolean checkedOut; + + public Book(String title, String isbn, String author, int numberOfPages) { + this.title = title; + this.isbn = isbn; + this.author = author; + this.numberOfPages = numberOfPages; + this.checkedOut = false; + } + + public String getTitle() { + return title; + } + + public String getIsbn() { + return isbn; + } + + public String getAuthor() { + return author; + } + + public int getNumberOfPages() { + return numberOfPages; + } + + public boolean isCheckedOut() { + return checkedOut; + } + + public void setCheckedOut(boolean checkedOut) { + this.checkedOut = checkedOut; + } +} diff --git a/lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Library.java b/lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Library.java new file mode 100644 index 00000000..3677474a --- /dev/null +++ b/lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Library.java @@ -0,0 +1,42 @@ +package com.codedifferently.lesson9.kevinmason; + +import java.util.ArrayList; +import java.util.List; + +public class Library { + private List books; + private List patrons; + + public Library() { + this.books = new ArrayList<>(); + this.patrons = new ArrayList<>(); + } + + public void addBook(Book book) { + books.add(book); + } + + public void removeBook(Book book) { + books.remove(book); + } + + public void registerPatron(Patron patron) { + patrons.add(patron); + } + + public void checkOutBook(Book book, Patron patron) { + if (!book.isCheckedOut()) { + book.setCheckedOut(true); + patron.addCheckedOutBook(book); + } + } + + public void returnBook(Book book, Patron patron) { + book.setCheckedOut(false); + patron.removeCheckedOutBook(book); + } + + public List getBooks() { + return books; + } +} diff --git a/lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Patron.java b/lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Patron.java new file mode 100644 index 00000000..9bbc41d5 --- /dev/null +++ b/lesson_09/oop/oop_app/src/main/java/com/codedifferently/lesson9/kevinmason/Patron.java @@ -0,0 +1,30 @@ +package com.codedifferently.lesson9.kevinmason; + +import java.util.ArrayList; +import java.util.List; + +public class Patron { + private String name; + private List checkedOutBooks; + + public Patron(String name) { + this.name = name; + this.checkedOutBooks = new ArrayList<>(); + } + + public String getName() { + return name; + } + + public List getCheckedOutBooks() { + return checkedOutBooks; + } + + public void addCheckedOutBook(Book book) { + checkedOutBooks.add(book); + } + + public void removeCheckedOutBook(Book book) { + checkedOutBooks.remove(book); + } +} diff --git a/lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/BookTest.java b/lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/BookTest.java new file mode 100644 index 00000000..b516f8eb --- /dev/null +++ b/lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/BookTest.java @@ -0,0 +1,17 @@ +package com.codedifferently.lesson9.kevinmason; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +public class BookTest { + + @Test + public void testCheckOut() { + Book book = new Book("Title", "ISBN123", "Author", 200); + assertFalse(book.isCheckedOut()); + + book.setCheckedOut(true); + assertTrue(book.isCheckedOut()); + } +} diff --git a/lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/LibraryTest.java b/lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/LibraryTest.java new file mode 100644 index 00000000..6fe66541 --- /dev/null +++ b/lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/LibraryTest.java @@ -0,0 +1,29 @@ +package com.codedifferently.lesson9.kevinmason; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.List; +import org.junit.jupiter.api.Test; + +public class LibraryTest { + + @Test + public void testAddBook() { + // Create a library + Library library = new Library(); + + // Create a book + Book book = new Book("Test Book", "ISBN123", "Test Author", 200); + + // Add the book to the library + library.addBook(book); + + // Retrieve the list of books from the library + List books = library.getBooks(); + + // Verify that the book was added to the library + assertTrue(books.contains(book)); + } + + // You can add more test methods for other functionalities here... +} diff --git a/lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/PatronTest.java b/lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/PatronTest.java new file mode 100644 index 00000000..8520f28f --- /dev/null +++ b/lesson_09/oop/oop_app/src/test/java/com/codedifferently/lesson9/kevinmason/PatronTest.java @@ -0,0 +1,28 @@ +package com.codedifferently.lesson9.kevinmason; + +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; // Import statically assertTrue method + +import java.util.List; +import org.junit.jupiter.api.Test; + +public class PatronTest { + + @Test + public void testAddCheckedOutBook() { + // Create a patron + Patron patron = new Patron("John Doe"); + + // Create a book + Book book = new Book("Test Book", "ISBN123", "Test Author", 200); + + // Add the book to the patron's checked out books + patron.addCheckedOutBook(book); + + // Retrieve the list of checked out books + List checkedOutBooks = patron.getCheckedOutBooks(); + + // Verify that the book was added to the list of checked out books + assertTrue(checkedOutBooks.contains(book)); + } +}