@Test
  public void testSendMessageAndRespectCloseHeaderInResponse() throws Exception {

    String message = // -
        "MSH|^~\\&|||||200803051508||ADT^A31|2|P|2.5\r"
            + // -
            "EVN||200803051509\r"
            + // -
            "PID|||ZZZZZZ83M64Z148R^^^SSN^SSN^^20070103\r"; // -

    HohRawClientSimple client = new HohRawClientSimple("localhost", myPort, "/theUri");

    client.setAuthorizationCallback(new SingleCredentialClientCallback("hello", "hapiworld"));

    myServerSocketThread.setCloseNormallyWithHeaderAfterEachMessage();

    /*
     * Send one message
     */
    ourLog.info("*** Send message #1");

    IReceivable<String> response = client.sendAndReceive(new RawSendable(message));
    assertEquals(message, myServerSocketThread.getMessage());
    assertEquals(myServerSocketThread.getReply().encode(), response.getMessage());

    assertEquals(EncodingStyle.ER7.getContentType(), myServerSocketThread.getContentType());
    assertEquals(EncodingStyle.ER7, myServerSocketThread.getEncoding());
    assertEquals(1, myServerSocketThread.getConnectionCount());

    /*
     * Send a second message
     */
    ourLog.info("*** Send message #2");

    response = client.sendAndReceive(new RawSendable(message));
    assertEquals(message, myServerSocketThread.getMessage());
    assertEquals(myServerSocketThread.getReply().encode(), response.getMessage());

    assertEquals(EncodingStyle.ER7.getContentType(), myServerSocketThread.getContentType());
    assertEquals(EncodingStyle.ER7, myServerSocketThread.getEncoding());
    assertEquals(2, myServerSocketThread.getConnectionCount());

    Thread.sleep(1000);

    /*
     * Send a third message
     */
    ourLog.info("*** Send message #3");

    response = client.sendAndReceive(new RawSendable(message));
    assertEquals(message, myServerSocketThread.getMessage());
    assertEquals(myServerSocketThread.getReply().encode(), response.getMessage());

    assertEquals(EncodingStyle.ER7.getContentType(), myServerSocketThread.getContentType());
    assertEquals(EncodingStyle.ER7, myServerSocketThread.getEncoding());
    assertEquals(3, myServerSocketThread.getConnectionCount());
  }