    @Test(enabled = TESTS_ENABLED)
    public void testCardApplicationDisconnect() {

	System.out.println("cardApplicationDisconnect");
	// test normal case
	// get esign path
	CardApplicationPath cardApplicationPath = new CardApplicationPath();
	CardApplicationPathType cardApplicationPathType = new CardApplicationPathType();
	cardApplicationPathType.setCardApplication(appIdentifier_ESIGN);
	cardApplicationPath.setCardAppPathRequest(cardApplicationPathType);
	CardApplicationPathResponse cardApplicationPathResponse = instance.cardApplicationPath(cardApplicationPath);
	// connect to esign
	CardApplicationConnect cardApplicationConnect = new CardApplicationConnect();
	cardApplicationConnect.setCardApplicationPath(cardApplicationPathResponse.getCardAppPathResultSet().getCardApplicationPathResult().get(0));
	CardApplicationConnectResponse result = instance.cardApplicationConnect(cardApplicationConnect);
	assertEquals(appIdentifier_ESIGN, result.getConnectionHandle().getCardApplication());
	assertEquals(ECardConstants.Major.OK, result.getResult().getResultMajor());
	// disconnect
	CardApplicationDisconnect cardApplicationDisconnect = new CardApplicationDisconnect();
	cardApplicationDisconnect.setConnectionHandle(result.getConnectionHandle());
	instance.cardApplicationDisconnect(cardApplicationDisconnect);
	assertEquals(ECardConstants.Major.OK, result.getResult().getResultMajor());

	// test invalid connectionhandle
	// connect to esign
	cardApplicationConnect = new CardApplicationConnect();
	cardApplicationConnect.setCardApplicationPath(cardApplicationPathResponse.getCardAppPathResultSet().getCardApplicationPathResult().get(0));
	result = instance.cardApplicationConnect(cardApplicationConnect);
	assertEquals(appIdentifier_ESIGN, result.getConnectionHandle().getCardApplication());
	assertEquals(ECardConstants.Major.OK, result.getResult().getResultMajor());
	// disconnect
	cardApplicationDisconnect = new CardApplicationDisconnect();
	cardApplicationDisconnect.setConnectionHandle(result.getConnectionHandle());
	cardApplicationDisconnect.getConnectionHandle().setSlotHandle(new byte[]{0x0, 0x0, 0x0});
	CardApplicationDisconnectResponse cardApplicationDisconnectResponse = instance.cardApplicationDisconnect(cardApplicationDisconnect);
	assertEquals(ECardConstants.Major.ERROR, cardApplicationDisconnectResponse.getResult().getResultMajor());
	assertEquals(ECardConstants.Minor.App.INCORRECT_PARM, cardApplicationDisconnectResponse.getResult().getResultMinor());

	// test nullpointer
	// connect to esign
	cardApplicationConnect = new CardApplicationConnect();
	cardApplicationConnect.setCardApplicationPath(cardApplicationPathResponse.getCardAppPathResultSet().getCardApplicationPathResult().get(0));
	result = instance.cardApplicationConnect(cardApplicationConnect);
	assertEquals(appIdentifier_ESIGN, result.getConnectionHandle().getCardApplication());
	assertEquals(ECardConstants.Major.OK, result.getResult().getResultMajor());
	// disconnect
	cardApplicationDisconnect = new CardApplicationDisconnect();
	cardApplicationDisconnect.setConnectionHandle(null);
	cardApplicationDisconnectResponse = instance.cardApplicationDisconnect(cardApplicationDisconnect);
	assertEquals(ECardConstants.Major.ERROR, cardApplicationDisconnectResponse.getResult().getResultMajor());
	assertEquals(ECardConstants.Minor.App.INCORRECT_PARM, cardApplicationDisconnectResponse.getResult().getResultMinor());
    }