@Test
  public void testDuplicateUnregister() throws Exception {
    _registry.register(FOO);

    _registry.unregister(FOO);
    _registry.unregister(FOO);
  }
  @Test
  public void testUnregister() throws Exception {
    ZooKeeperPersistentEphemeralNode node = mock(ZooKeeperPersistentEphemeralNode.class);
    when(_nodeFactory.create(anyString(), any(byte[].class))).thenReturn(node);

    _registry.register(FOO);

    _registry.unregister(FOO);

    verify(node).close(anyLong(), any(TimeUnit.class));
  }
 @Test(expected = IllegalStateException.class)
 public void testUnregisterAfterClose() throws Exception {
   _registry.close();
   _registry.unregister(FOO);
 }
 @Test(expected = NullPointerException.class)
 public void testUnregisterNullService() throws Exception {
   _registry.unregister(null);
 }
  @Test
  public void testUnregisterWithoutFirstRegistering() throws Exception {
    _registry.unregister(FOO);

    verify(_nodeFactory, never()).create(eq(FOO_PATH), Matchers.<byte[]>any());
  }