@Test
  public void testSearchByName() {
    Person p = new Person();
    p.setFirstname("Thomas");
    p.setSurname("Qvarnstrom");
    String uid = manager.put(p);
    assertNotNull(uid);
    assertTrue(uid.length() > 0);

    p = null;

    List<Person> r = manager.searchByName("Tho*");
    assertNotNull(r);
    assertTrue(r.size() == 1);
    p = r.get(0);
    assertTrue("Thomas".equals(p.getFirstname()));
    assertTrue("Qvarnstrom".equals(p.getSurname()));

    p = null;
    r = null;

    r = manager.searchByName("Qva*");
    assertNotNull(r);
    assertTrue(r.size() == 1);
    p = r.get(0);
    assertTrue("Thomas".equals(p.getFirstname()));
    assertTrue("Qvarnstrom".equals(p.getSurname()));

    manager.removeAll();
    assertTrue(manager.getAll().size() == 0);
  }
 public void populateWithGenerateEntries() {
   Random r = new Random();
   String[] firstNames =
       new String[] {
         "Keira",
         "Sandee",
         "Roslyn",
         "Leland",
         "Joella",
         "Anneliese",
         "Janita",
         "Marcella",
         "Adella",
         "Iraida",
         "Laquanda",
         "Jonie",
         "Juliean",
         "Paige",
         "Berta",
         "Denver",
         "Francis",
         "Ardella",
         "Alfonzo",
         "Velvet"
       };
   String[] lastNames =
       new String[] {
         "Ladwig",
         "Rains",
         "Kappel",
         "Kulikowski",
         "Fink",
         "Morein",
         "Griffieth",
         "Hannahs",
         "Peacock",
         "Motter",
         "Pfaff",
         "Zieman",
         "Nutt",
         "Hart",
         "Seiden",
         "Weeks",
         "Richert",
         "Rivero",
         "Zale",
         "Ecklund"
       };
   String[] emailDomains = new String[] {"google.com", "redhat.com", "hotmail.com"};
   for (int i = 0; i < PHONEBOOK_SIZE; i++) {
     Person p = new Person();
     while (true) {
       p.setFirstname(firstNames[r.nextInt(20)]);
       p.setSurname(lastNames[r.nextInt(20)]);
       if (!manager.isDuplicate(p)) {
         break;
       } else {
         log.info(
             String.format(
                 "%s %s is a duplicate, generating new name", p.getFirstname(), p.getSurname()));
       }
     }
     PhoneNumber pn1 = new PhoneNumber();
     pn1.setNumber("555-" + Integer.toString(r.nextInt(10000)));
     pn1.setType(PhoneType.HOME);
     PhoneNumber pn2 = new PhoneNumber();
     pn2.setNumber("555-" + Integer.toString(r.nextInt(10000)));
     pn2.setType(PhoneType.MOBILE);
     PhoneNumber pn3 = new PhoneNumber();
     pn3.setNumber("555-" + Integer.toString(r.nextInt(10000)));
     pn3.setType(PhoneType.WORK);
     p.setPhones(Arrays.asList(pn1, pn2, pn3));
     p.setEmail(
         p.getFirstname().toLowerCase()
             + "."
             + p.getSurname().toLowerCase()
             + "@"
             + emailDomains[r.nextInt(3)]);
     manager.put(p);
   }
 }