package dk.hansen; import java.util.Collection; import junit.framework.TestCase; public class BookTest extends TestCase { private BookManagerIF manager; protected void setUp() throws Exception { // Create a factory class String managerName = "dk.hansen.JdbcBookManagerFactory"; BookManagerFactoryIF factory; factory = (BookManagerFactoryIF)Class.forName(managerName).newInstance(); // Create a BookManager manager = factory.createBookManager(); String id1 = "ID30"; try { manager.deleteBook(id1); } catch (Exception e) {} manager.createBook("ID30", "The Tempest", "William Shakespeare", 1611); String id2 = "ID31"; try { manager.deleteBook(id2); } catch (Exception e) {} manager.createBook("ID31", "A Midsummer Night's Dream", "William Shakespeare", 1595); } public void testfind() throws DAOException { String id; Book book; id = "ID30"; book = manager.getBook(id); assertEquals("Test for 'ID30'", id, book.getId()); assertEquals("Test for 'The Tempest' - title", "The Tempest", book.getTitle()); assertEquals("Test for 'William Shakespeare' - author", "William Shakespeare", book.getAuthor()); assertEquals("Test for '1611' - year", 1611, book.getYear()); id = "ID31"; book = manager.getBook(id); assertEquals("Test for 'ID31'", id, book.getId()); assertEquals("Test for 'A Midsummer Night's Dream' - title", "A Midsummer Night's Dream", book.getTitle()); assertEquals("Test for 'William Shakespeare' - author", "William Shakespeare", book.getAuthor()); assertEquals("Test for '1595' - year", 1595, book.getYear()); id = "xyz"; book = manager.getBook(id); assertNull("Test for non-existent", book); } public void testupdate() throws DAOException { String id; Book book; manager.updateBook("ID30", "new The Tempest", "new William Shakespeare", -1611); manager.updateBook("ID31", "new A Midsummer Night's Dream", "new William Shakespeare", -1595); book = manager.getBook("ID30"); assertEquals("Test for 'new The Tempest' - title", "new The Tempest", book.getTitle()); assertEquals("Test for 'new William Shakespeare' - author", "new William Shakespeare", book.getAuthor()); assertEquals("Test for '-1611' - year", -1611, book.getYear()); book = manager.getBook("ID31"); assertEquals("Test for 'new A Midsummer Night's Dream' - title", "new A Midsummer Night's Dream", book.getTitle()); assertEquals("Test for 'new William Shakespeare' - author", "new William Shakespeare", book.getAuthor()); assertEquals("Test for '-1595' - year", -1595, book.getYear()); } public void testcreate() throws DAOException { String id; Book book; String id1 = "ID30"; try { manager.deleteBook(id1); } catch (Exception e) {} manager.createBook("ID30", "The Tempest", "William Shakespeare", 1611); String id2 = "ID31"; try { manager.deleteBook(id2); } catch (Exception e) {} manager.createBook("ID31", "A Midsummer Night's Dream", "William Shakespeare", 1595); id = "ID30"; book = manager.getBook(id); assertEquals("Test for 'ID30'", id, book.getId()); assertEquals("Test for 'The Tempest' - title", "The Tempest", book.getTitle()); assertEquals("Test for 'William Shakespeare' - author", "William Shakespeare", book.getAuthor()); assertEquals("Test for '1611' - year", 1611, book.getYear()); id = "ID31"; book = manager.getBook(id); assertEquals("Test for 'ID31'", id, book.getId()); assertEquals("Test for 'A Midsummer Night's Dream' - title", "A Midsummer Night's Dream", book.getTitle()); assertEquals("Test for 'William Shakespeare' - author", "William Shakespeare", book.getAuthor()); assertEquals("Test for '1595' - year", 1595, book.getYear()); id = "xyz"; book = manager.getBook(id); assertNull("Test for non-existent", book); } public void testdelete() throws DAOException { String id; Book book; id = "ID30"; book = manager.getBook("ID30"); assertEquals("Test for 'ID30'", id, book.getId()); manager.deleteBook(id); book = manager.getBook("ID30"); assertNull("Test for deleted 'ID30'", book); id = "ID31"; book = manager.getBook("ID31"); assertEquals("Test for 'ID31'", id, book.getId()); manager.deleteBook(id); book = manager.getBook("ID31"); assertNull("Test for deleted 'ID31'", book); } public void testall() throws DAOException { String id; Book book; Collection c; c = manager.getAll(); assertTrue("Number of Books", c.size() >= 2); } public void testfindtitle() throws DAOException { String id; Book book; Collection c; c = manager.findBookTitle("The Tempest"); assertEquals("search for 'The Tempest'", 1, c.size()); assertEquals("title 'The Tempest'", "The Tempest", ((Book)c.iterator().next()).getTitle()); c = manager.findBookTitle("A Midsummer Night's Dream"); assertEquals("search for 'A Midsummer Night's Dream'", 1, c.size()); assertEquals("title 'A Midsummer Night's Dream'", "A Midsummer Night's Dream", ((Book)c.iterator().next()).getTitle()); c = manager.findBookTitle("xyz"); assertEquals("search for non-existent", 0, c.size()); } public void testfindauthor() throws DAOException { String id; Book book; Collection c; c = manager.findBookAuthor("William Shakespeare"); assertEquals("search for 'William Shakespeare'", 1, c.size()); assertEquals("author 'William Shakespeare'", "William Shakespeare", ((Book)c.iterator().next()).getAuthor()); c = manager.findBookAuthor("William Shakespeare"); assertEquals("search for 'William Shakespeare'", 1, c.size()); assertEquals("author 'William Shakespeare'", "William Shakespeare", ((Book)c.iterator().next()).getAuthor()); c = manager.findBookAuthor("xyz"); assertEquals("search for non-existent", 0, c.size()); } public void testfindyear() throws DAOException { String id; Book book; Collection c; c = manager.findBookYear(1611); assertEquals("search for '1611'", 1, c.size()); assertEquals("year '1611'", 1611, ((Book)c.iterator().next()).getYear()); c = manager.findBookYear(1595); assertEquals("search for '1595'", 1, c.size()); assertEquals("year '1595'", 1595, ((Book)c.iterator().next()).getYear()); c = manager.findBookYear(-1); assertEquals("search for non-existent", 0, c.size()); } public static void main(String[] args) { junit.textui.TestRunner.run(BookTest.class); } }