Lesson 12 – Create checkOut, checkIn Methods
- Create test for checkOut, checkIn methods
- Write checkout method
- Introduce if / then / else syntax
- Introduce boolean method
- Write checkIn method
1. testCheckOut Method
Test both the checkOut and checkIn methods
- Check Out a book
- Check Out second book
- Check in a book
- Check in second book
- assert statements after each method call
2. checkOut Method Design
- Enter Person object into person field of Book
- Use setPerson(Person) method
- What if book is already checked out? Will not allow this.
- Need to test for this in checkOut method
- Method might succeed or fial, depending on situation.
- Should we tell the calling method whether it succeeded of failed ? yes.
3. checkOut Method Pseudo Code
- Check that this book is not already checked out.
- If it is not checked out, set the person field in the book to this person and let calling method know it worked.
- Otherwise, Let calling method know it didn’t work.
4. checkOut Method Signature
- Will return a boolean (true or false) to indicate success.
- In pseudo code, we had this book and this person – which book and person?
- Book and Person will be method parameters – checkOut (Book b, Person P)
- public boolean checkOut(Book b, Person p)
1 package org.totalbeginner.tutorial;
2
3 import java.util.ArrayList;
4
5 import org.omg.CORBA.PUBLIC_MEMBER;
6 import org.totoalbeginner.tutorial.Person;
7
8 import junit.framework.TestCase;
9
10 public class MyLibraryTest extends TestCase {
11 private Book b1;
12 private Book b2;
13 private Person p1;
14 private Person p2;
15 private MyLibrary ml;
16
17 public void testMyLibrary() {
18 MyLibrary ml = new MyLibrary("Test");
19
20 assertEquals("Test", ml.name);
21
22 assertTrue(ml.books instanceof ArrayList);
23 assertTrue(ml.people instanceof ArrayList);
24
25
26 }
27
28 public void setup(){
29 b1 = new Book("Book1");
30 b2 = new Book("Book2");
31
32 p1 = new Person();
33 p2 = new Person();
34 p1.setName("Fred");
35 p2.setName("Sue");
36
37 ml = new MyLibrary("Test");
38 }
39
40 public void testAddBook(){
41 //create test objects
42 setup();
43
44 //test initial size is 0
45 assertEquals(0,ml.getBooks().size());
46
47 ml.addBook(b1);
48 ml.addBook(b2);
49
50 assertEquals(2, ml.getBooks().size());
51 assertEquals(0, ml.getBooks().indexOf(b1));
52 assertEquals(1,ml.getBooks().indexOf(b2));
53
54 ml.removeBook(b1);
55 assertEquals(1, ml.getBooks().size());
56 assertEquals(0, ml.getBooks().indexOf(b2));
57
58 ml.removeBook(b2);
59 assertEquals(0, ml.getBooks().size());
60
61 public void testCheckOut() {
62 // set up objects
63 setup();
64
65 ml.addBook(b1);
66 ml.addBook(b2);
67 ml.addPerson(p1);
68 ml.addPerson(p2);
69
70 assertTrun("Book did not check out correctly",
71 ml.checkOut(b1,p1));
72
73 assertEquals("Fred",b1.getPerson().getName());
74
75 assertFalse("Book was already checked out",
76 ml.checkOut(b1,p2));
77
78 assertTrue("Book check in failed", ml.checkIn(b1));
79
80 assertFalse("Book was already checked in", ml.checkIn(b1));
81
82 assertFalse("Book was never checked out", ml.checkIn(b2));
83
84
85
86
87 }
88 }
89
90 }
1 package org.totalbeginner.tutorial;
2
3 import java.util.ArrayList;
4
5 import org.totoalbeginner.tutorial.Person;
6
7 public class MyLibrary {
8
9 String name;
10 public String getName() {
11 return name;
12 }
13
14 public ArrayList<Person> getPeople() {
15 return people;
16 }
17
18 public ArrayList<Book> getBooks() {
19 return books;
20 }
21
22 ArrayList<Person> people;
23 ArrayList<Book> books;
24
25 public MyLibrary(String name) {
26 this.name = name;
27 books = new ArrayList<Book>();
28 people = new ArrayList<Person>();
29
30 }
31
32 public void addBook(Book b1) {
33 this.books.add(b1);
34
35 }
36
37 public void removeBook(Book b1) {
38 this.books.remove(b1);
39
40 }
41
42 public void addPerson(Person p1){
43 this.people.add(p1);
44 }
45
46 public void removePerson(Person p1){
47 this.people.remove(p1);
48 }
49
50 public boolean checkOut(Book b1, Person p2) {
51 if (b1.getPerson() == null) {
52 b1.setPerson(p1);
53 return true;
54 }
55 else {
56 return false;
57 }
58 }
59
60 public boolean checkIn(Book b1) {
61 if (bl.getPerson() != null) {
62 b1.setPerson(null);
63 return true;
64 }
65 else {
66 return false;
67 }
68 }
69 }