@Test
 public void testGetDaysDifferenceBetweenDOB() {
   assertEquals(
       "There is 2862 days between Bill and Paul",
       2862,
       operation.getDaysDifferenceBetweenDOB(addressBooks.get(0), addressBooks.get(1)));
 }
 @Test
 public void testGetOldestPerson() {
   assertEquals(
       "Wes jackson is the olderst Person in AddressBook",
       "Wes Jackson",
       operation.getOldestPerson(addressBooks));
 }
  /**
   * main
   *
   * @param args
   */
  public static void main(String[] args) {

    boolean runAppAgain = true;
    printMainMenu();

    do {
      System.out.println("Select operation:\n[Enter 8 for help]\n");
      int mainMenuChoice = Integer.parseInt(scanner.next());

      switch (mainMenuChoice) {
        case 1:
          addressBook = AddressBookOperation.createAddressBook();
          operateAddressBook(null);

          break;

        case 2:
          String path = AddressBookPersist.getPath();
          String fileName = AddressBookPersist.getFileName();
          addressBook = AddressBookOperation.loadAddressBook(path + "/" + fileName);
          if (addressBook != null) operateAddressBook(path + "/" + fileName);
          break;

        case 3:
          runAppAgain = false;
          break;

        case 8:
          printMainMenu();
          break;

        default:
          System.out.println("Invalid Choice!");
      }

    } while (runAppAgain != false);
  }
  /**
   * operations on address the book
   *
   * @param absoluteFilePath
   */
  public static void operateAddressBook(String absoluteFilePath) {

    printOperations();

    boolean continueOperation = true;
    String name = null;

    do {
      System.out.println("Select operation:\n[Enter 8 for help]\n");

      int operation = scanner.nextInt();
      scanner.nextLine();
      switch (operation) {
        case 1:
          System.out.println("$Add Contact$");
          AddressBookOperation.addContact(addressBook);

          break;

        case 2:
          System.out.println("$Search Contact$");
          name = getContactName();
          Person person = AddressBookOperation.searchContact(addressBook, name);
          if (person != null) AddressBookOperation.printContact(person);
          else System.out.println("Error: Could not find the contact! Try again");
          break;

        case 3:
          System.out.println("$Edit Contact$");
          name = getContactName();
          AddressBookOperation.editContact(addressBook, name);
          break;

        case 4:
          System.out.println("$Remove Contact$");
          name = getContactName();
          if (AddressBookOperation.removeContact(addressBook, name))
            System.out.println("Contact removed successfully!");

          break;

        case 5:
          System.out.println("$Save Address book$");
          if (absoluteFilePath == null) {
            AddressBookOperation.saveNewAddressBook(addressBook);
          } else {
            AddressBookOperation.saveAddressBook(addressBook, absoluteFilePath);
          }
          break;

        case 6:
          System.out.println("$All contacts$");
          AddressBookOperation.printAddressBook(addressBook);
          break;

        case 7:
          System.out.println("$Exit$");
          continueOperation = false;
          break;

        case 8:
          System.out.println("$Help$");
          printOperations();
          break;

        default:
          System.out.println("Invalid Choice!");
      }

    } while (continueOperation != false);
  }
 @Test
 public void testGetNoOfMales() throws IOException {
   assertEquals("There are 3 males in AddressBook", 3, operation.getNoOfMales(addressBooks));
 }
  @Test
  public void getAddressBook() {
    final List<AddressBook> addressBooks = operation.getAddressBook(filePath);

    assertEquals("There are 5 records in AddressBook", 5, addressBooks.size());
  }
 @Before
 public void setUp() throws Exception {
   filePath = "src/test/resources/AddressBook";
   operation = new AddressBookOperation();
   addressBooks = operation.getAddressBook(filePath);
 }