diff --git a/pom.xml b/pom.xml
index 7e90305..99f7154 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,19 +7,10 @@
1.0LibrarySystemhttp://maven.apache.org
-
1.1.3-2
-
-
-
- junit
- junit
- 3.8.1
- test
- org.jsonorg.json
@@ -41,6 +32,17 @@
forms_rt7.0.3
+
+ org.junit.jupiter
+ junit-jupiter-api
+ RELEASE
+
+
+ junit
+ junit
+ 4.12
+ test
+
@@ -55,7 +57,6 @@
-
truetrue
@@ -122,6 +123,7 @@
+
diff --git a/src/test/java/libsys/BookTest.java b/src/test/java/libsys/BookTest.java
deleted file mode 100644
index 64deb3b..0000000
--- a/src/test/java/libsys/BookTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package libsys;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Test Book related operations
- */
-public class BookTest extends TestCase
-{
- private Book book1;
- private Book book2;
-
- /**
- * Test Book related operations
- * @param testName name of the test case
- */
- public BookTest(String testName)
- {
- super(testName);
- }
-
- /**
- * @return suite of tests being tested
- */
- public static Test suite()
- {
- return new TestSuite(BookTest.class);
- }
-
- /**
- * Run all tests
- */
- public void testApp()
- {
- valueTest();
- rentTest();
- returnTest();
- setTitlesTest();
- constructorTest();
- }
-
- /**
- * Set up before testing
- * @throws Exception Exception
- */
- public void setUp() throws Exception
- {
- super.setUp();
- book1 = new Book("Book1", 10, "AVAILABLE");
- book2 = new Book("Book2", 12, "NOT AVAILABLE");
- }
-
- /**
- * Test if the values are accurate
- */
- private void valueTest()
- {
- assertEquals("Title is \"Book1\"", book1.getTitle(), "Book1");
- assertEquals("Status is \"AVAILABLE\"", book1.getStatus(), "AVAILABLE");
- assertEquals("Book id is 10", book1.getId(), 10);
- assertEquals("Title is \"Book2\"", book2.getTitle(), "Book2");
- assertEquals("Status is \"NOT AVAILABLE\"", book2.getStatus(), "NOT AVAILABLE");
- assertEquals("Book id is 12", book2.getId(), 12);
- }
-
- /**
- * Test the rent(int[]) function functionality
- */
- private void rentTest()
- {
- int[] date = new int[]{2018, 10, 5};
- assertTrue("Rent should be successful", book1.rent(date));
- assertEquals("Book status is \"RENTED\"", book1.getStatus(), "RENTED");
- assertEquals("Book due date is 2018/10/5",book1.getDueDate(), date);
- assertFalse("Book2 is not rent-able", book2.rent(date));
- }
-
- /**
- * Test the returned() function functionality
- */
- private void returnTest()
- {
- book1.returned();
- assertTrue("Book1 is \"AVAILABLE\"", book1.getStatus().equals("AVAILABLE"));
- }
-
- /**
- * Test the setTitles(String) functionality
- */
- private void setTitlesTest()
- {
- String newBook1Title = "New Book 1";
- book1.setTitle(newBook1Title);
- assertEquals("Title is \"New Book 1\"", book1.getTitle(), newBook1Title);
- String newBook2Title = "New Book 2";
- book2.setTitle(newBook2Title);
- assertEquals("Title is \"New Book 2\"", book2.getTitle(), newBook2Title);
- }
-
- /**
- * Test the functionality for all different types of constructor
- */
- private void constructorTest()
- {
- Book testBook1 = new Book(10);
- Book testBook2 = new Book("Test Title", 20, "RESERVED");
- Book testBook3 = new Book(15, "Test Title 2", "RENTED", (new int[]{2019, 3, 23}));
-
- assertEquals("Book name is \"UNDEFINED\"", testBook1.getTitle(), "UNDEFINED");
- assertEquals("Book1 id is 10", testBook1.getId(), 10);
- assertEquals("Book1 status is \"NOT AVAILABLE\"", testBook1.getStatus(), "NOT AVAILABLE");
-
- assertEquals("Book2 title is \"Test Title\"", testBook2.getTitle(), "Test Title");
- assertEquals("Book2 id is 20", testBook2.getId(), 20);
- assertEquals("Book2 status is \"RESERVED\"", testBook2.getStatus(), "RESERVED");
-
- assertEquals("Book3 title is \"Test Title 2\"", testBook3.getTitle(), "Test Title 2");
- assertEquals("Book3 id is 15", testBook3.getId(), 15);
- assertEquals("Book3 status is \"RENTED\"", testBook3.getStatus(), "RENTED");
- int[] dueDate = testBook3.getDueDate();
- assertEquals("Book3 due date year is 2019", dueDate[0], 2019);
- assertEquals("Book3 due date month is 3", dueDate[1], 3);
- assertEquals("Book3 due date day is 23", dueDate[2], 23);
- }
-}
diff --git a/src/test/java/libsys/UserTest.java b/src/test/java/libsys/UserTest.java
deleted file mode 100644
index e992fa0..0000000
--- a/src/test/java/libsys/UserTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package libsys;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import java.util.ArrayList;
-
-/**
- * Test User related operations
- */
-public class UserTest extends TestCase
-{
- private User user1;
- private User user2;
-
- /**
- * Test User related operations
- * @param testName name of the test case
- */
- public UserTest(String testName)
- {
- super(testName);
- }
-
- /**
- * @return suite of the tests being tested
- */
- public static Test suite()
- {
- return new TestSuite(UserTest.class);
- }
-
- /**
- * Run all tests
- */
- public void testApp()
- {
- valueTest();
- setterTest();
- bookInteractionTest();
- }
-
- /**
- * Set up before testing
- * @throws Exception Exception
- */
- public void setUp() throws Exception
- {
- super.setUp();
- user1 = new User("User1", 0, 10, new ArrayList());
- ArrayList user2List = new ArrayList();
- user2List.add(0);
- user2 = new User("User2", 2, 8, user2List);
- }
-
- /**
- * Test if the values are accurate
- */
- private void valueTest()
- {
- assertEquals("Name is \"User1\"", user1.getName(), "User1");
- assertEquals("id is 0", user1.getId(), 0);
- assertEquals("Limit is 10", user1.getLimit(), 10);
- int[] bookIds = user1.bookStatus();
- assertEquals("Book list is empty", bookIds.length, 0);
-
- assertEquals("Name is \"User2\"", user2.getName(), "User2");
- assertEquals("id is 2", user2.getId(), 2);
- assertEquals("Limit is 8", user2.getLimit(), 8);
- bookIds = user2.bookStatus();
- assertEquals("Book list is empty", bookIds.length, 1);
- assertEquals("Book id is 0", bookIds[0], 0);
- }
-
- /**
- * Test the setter functions
- */
- private void setterTest()
- {
- String newName = "New User 1";
- user1.setName(newName);
- assertEquals("New name for User1 is \"New User 1\"", user1.getName(), newName);
- user1.setLimit(1);
- assertEquals("New limit for User1 is 8", user1.getLimit(), 1);
-
- newName = "New User 2";
- user2.setName(newName);
- assertEquals("New name for User2 is \"New User 2\"", user2.getName(), newName);
- user2.setLimit(3);
- assertEquals("New limit for User2 is 3", user2.getLimit(), 3);
- }
-
- /**
- * Test all functions related to Book
- */
- private void bookInteractionTest()
- {
- assertTrue(user1.borrowNewBook(3));
- int[] bookIds = user1.bookStatus();
- assertEquals("User1 is now borrowing Book3", bookIds[0], 3);
- assertFalse("User1 reached the limit", user1.status());
- assertFalse("User1 fail to borrow another book", user1.borrowNewBook(5));
- assertFalse("User1 failed to return Book2 that was not borrowed", user1.returnBook(2));
- assertTrue("User1 return Book3", user1.returnBook(3));
- assertTrue("User1 can now borrow book", user1.status());
- assertEquals("User1 is not borrowing anything", user1.bookStatus().length, 0);
- }
-}
diff --git a/src/test/kotlin/libsys/BookTest.kt b/src/test/kotlin/libsys/BookTest.kt
new file mode 100644
index 0000000..1a9bed6
--- /dev/null
+++ b/src/test/kotlin/libsys/BookTest.kt
@@ -0,0 +1,71 @@
+package libsys
+
+import org.junit.*
+
+/**
+ * Test Book related operations
+ */
+class BookTest
+{
+ private var book1: Book? = null
+ private var book2: Book? = null
+
+ /**
+ * Set up before testing
+ */
+ @Before fun prepareTest()
+ {
+ book1 = Book("Book1", 10, "AVAILABLE")
+ book2 = Book("Book2", 12, "NOT AVAILABLE")
+ }
+
+ /**
+ * Test Book related operations
+ */
+ @Test fun bookTest()
+ {
+ Assert.assertEquals("Title is \"Book1\"", book1!!.title, "Book1")
+ Assert.assertEquals("Status is \"AVAILABLE\"", book1!!.status, "AVAILABLE")
+ Assert.assertEquals("Book id is 10", book1!!.id, 10)
+ Assert.assertEquals("Title is \"Book2\"", book2!!.title, "Book2")
+ Assert.assertEquals("Status is \"NOT AVAILABLE\"", book2!!.status, "NOT AVAILABLE")
+ Assert.assertEquals("Book id is 12", book2!!.id, 12)
+
+ val date = intArrayOf(2018, 10, 5)
+ Assert.assertTrue("Rent should be successful", book1!!.rent(date))
+ Assert.assertEquals("Book status is \"RENTED\"", book1!!.status, "RENTED")
+ Assert.assertEquals("Book due date is 2018/10/5", book1!!.dueDate, date)
+ Assert.assertFalse("Book2 is not rent-able", book2!!.rent(date))
+
+ book1!!.returned()
+ Assert.assertTrue("Book1 is \"AVAILABLE\"", book1!!.status == "AVAILABLE")
+
+ val newBook1Title = "New Book 1"
+ book1!!.title = newBook1Title
+ Assert.assertEquals("Title is \"New Book 1\"", book1!!.title, newBook1Title)
+ val newBook2Title = "New Book 2"
+ book2!!.title = newBook2Title
+ Assert.assertEquals("Title is \"New Book 2\"", book2!!.title, newBook2Title)
+
+ val testBook1 = Book(10)
+ val testBook2 = Book("Test Title", 20, "RESERVED")
+ val testBook3 = Book(15, "Test Title 2", "RENTED", intArrayOf(2019, 3, 23))
+
+ Assert.assertEquals("Book name is \"UNDEFINED\"", testBook1.title, "UNDEFINED")
+ Assert.assertEquals("Book1 id is 10", testBook1.id, 10)
+ Assert.assertEquals("Book1 status is \"NOT AVAILABLE\"", testBook1.status, "NOT AVAILABLE")
+
+ Assert.assertEquals("Book2 title is \"Test Title\"", testBook2.title, "Test Title")
+ Assert.assertEquals("Book2 id is 20", testBook2.id, 20)
+ Assert.assertEquals("Book2 status is \"RESERVED\"", testBook2.status, "RESERVED")
+
+ Assert.assertEquals("Book3 title is \"Test Title 2\"", testBook3.title, "Test Title 2")
+ Assert.assertEquals("Book3 id is 15", testBook3.id, 15)
+ Assert.assertEquals("Book3 status is \"RENTED\"", testBook3.status, "RENTED")
+ val dueDate = testBook3.dueDate
+ Assert.assertEquals("Book3 due date year is 2019", dueDate[0], 2019)
+ Assert.assertEquals("Book3 due date month is 3", dueDate[1], 3)
+ Assert.assertEquals("Book3 due date day is 23", dueDate[2], 23)
+ }
+
+}
diff --git a/src/test/kotlin/libsys/UserTest.kt b/src/test/kotlin/libsys/UserTest.kt
new file mode 100644
index 0000000..d34f84b
--- /dev/null
+++ b/src/test/kotlin/libsys/UserTest.kt
@@ -0,0 +1,62 @@
+package libsys
+
+import org.junit.*
+import java.util.ArrayList
+
+/**
+ * Test User related operations
+ */
+class UserTest
+{
+ private var user1: User? = null
+ private var user2: User? = null
+
+ @Before fun prepareTest()
+ {
+ user1 = User("User1", 0, 10, ArrayList())
+ val user2List = ArrayList()
+ user2List.add(0)
+ user2 = User("User2", 2, 8, user2List)
+ }
+
+ /**
+ * Test User related operations
+ */
+ @Test fun userTest()
+ {
+ Assert.assertEquals("Name is \"User1\"", user1!!.name, "User1")
+ Assert.assertEquals("id is 0", user1!!.id, 0)
+ Assert.assertEquals("Limit is 10", user1!!.limit, 10)
+ var bookIds: IntArray = user1!!.bookStatus()
+ Assert.assertEquals("Book list is empty", bookIds.size, 0)
+
+ Assert.assertEquals("Name is \"User2\"", user2!!.name, "User2")
+ Assert.assertEquals("id is 2", user2!!.id, 2)
+ Assert.assertEquals("Limit is 8", user2!!.limit, 8)
+ bookIds = user2!!.bookStatus()
+ Assert.assertEquals("Book list is empty", bookIds.size, 1)
+ Assert.assertEquals("Book id is 0", bookIds[0], 0)
+
+ var newName = "New User 1"
+ user1!!.name = newName
+ Assert.assertEquals("New name for User1 is \"New User 1\"", user1!!.name, newName)
+ user1!!.limit = 1
+ Assert.assertEquals("New limit for User1 is 8", user1!!.limit, 1)
+
+ newName = "New User 2"
+ user2!!.name = newName
+ Assert.assertEquals("New name for User2 is \"New User 2\"", user2!!.name, newName)
+ user2!!.limit = 3
+ Assert.assertEquals("New limit for User2 is 3", user2!!.limit, 3)
+
+ Assert.assertTrue(user1!!.borrowNewBook(3))
+ bookIds = user1!!.bookStatus()
+ Assert.assertEquals("User1 is now borrowing Book3", bookIds[0], 3)
+ Assert.assertFalse("User1 reached the limit", user1!!.status())
+ Assert.assertFalse("User1 fail to borrow another book", user1!!.borrowNewBook(5))
+ Assert.assertFalse("User1 failed to return Book2 that was not borrowed", user1!!.returnBook(2))
+ Assert.assertTrue("User1 return Book3", user1!!.returnBook(3))
+ Assert.assertTrue("User1 can now borrow book", user1!!.status())
+ Assert.assertEquals("User1 is not borrowing anything", user1!!.bookStatus().size, 0)
+ }
+}
\ No newline at end of file