@Test
 public void testSearchLimit() {
   engine.add(new TestRecord("a"));
   engine.add(new TestRecord("a"));
   engine.add(new TestRecord("a"));
   assertEquals(2, engine.search("a", 2).size());
 }
 @Test
 public void testRemove() {
   TestRecord record = new TestRecord("a");
   engine.add(record);
   assertTrue(engine.remove(record));
   assertFalse(engine.remove(record));
 }
 @Test
 public void testSearch() {
   engine.add(new TestRecord("a", "b"));
   engine.add(new TestRecord("a", "c"));
   engine.add(new TestRecord("a", "d"));
   assertEquals(3, engine.search("a").size());
   assertEquals(1, engine.search("b").size());
   assertEquals(1, engine.search("c").size());
   assertEquals(1, engine.search("d").size());
 }
 @Test
 public void testSearchNullQuery() {
   exceptionRule.expect(NullPointerException.class);
   engine.search(null);
 }
 @Test
 public void testRemoveAllNull() {
   exceptionRule.expect(NullPointerException.class);
   engine.removeAll(null);
 }
 @Test
 public void testAddNull() {
   exceptionRule.expect(NullPointerException.class);
   engine.add(null);
 }