Exemplo n.º 1
0
  public void testHelperMethods() throws Exception {
    keyedObjectPoolMock.returnObject(DirContextType.READ_ONLY, contextMock);
    keyedObjectPoolControl.setVoidCallable(1);

    replay();

    // Wrap the Context once
    final DelegatingContext delegatingContext =
        new DelegatingContext(keyedObjectPoolMock, contextMock, DirContextType.READ_ONLY);

    final Context delegateContext = delegatingContext.getDelegateContext();
    assertEquals(contextMock, delegateContext);

    final Context innerDelegateContext = delegatingContext.getInnermostDelegateContext();
    assertEquals(contextMock, innerDelegateContext);

    delegatingContext.assertOpen();

    // Wrap the wrapper
    MockControl secondKeyedObjectPoolControl = MockControl.createControl(KeyedObjectPool.class);
    KeyedObjectPool secondKeyedObjectPoolMock =
        (KeyedObjectPool) secondKeyedObjectPoolControl.getMock();
    secondKeyedObjectPoolMock.returnObject(DirContextType.READ_ONLY, delegatingContext);
    secondKeyedObjectPoolControl.setVoidCallable(1);
    secondKeyedObjectPoolControl.replay();

    final DelegatingContext delegatingContext2 =
        new DelegatingContext(
            secondKeyedObjectPoolMock, delegatingContext, DirContextType.READ_ONLY);

    final Context delegateContext2 = delegatingContext2.getDelegateContext();
    assertEquals(delegatingContext, delegateContext2);

    final Context innerDelegateContext2 = delegatingContext2.getInnermostDelegateContext();
    assertEquals(contextMock, innerDelegateContext2);

    delegatingContext2.assertOpen();

    // Close the outer wrapper
    delegatingContext2.close();

    final Context delegateContext2closed = delegatingContext2.getDelegateContext();
    assertNull(delegateContext2closed);

    final Context innerDelegateContext2closed = delegatingContext2.getInnermostDelegateContext();
    assertNull(innerDelegateContext2closed);

    try {
      delegatingContext2.assertOpen();
      fail("delegatingContext2.assertOpen() should have thrown a NamingException");
    } catch (NamingException ne) {
      // Expected
    }

    // Close the outer wrapper
    delegatingContext.close();

    final Context delegateContextclosed = delegatingContext.getDelegateContext();
    assertNull(delegateContextclosed);

    final Context innerDelegateContextclosed = delegatingContext.getInnermostDelegateContext();
    assertNull(innerDelegateContextclosed);

    try {
      delegatingContext.assertOpen();
      fail("delegatingContext.assertOpen() should have thrown a NamingException");
    } catch (NamingException ne) {
      // Expected
    }

    verify();
    secondKeyedObjectPoolControl.verify();
  }