ca.uhn.hl7v2.llp.tests.MinLowerLayerProtocolTest.java Source code

Java tutorial

Introduction

Here is the source code for ca.uhn.hl7v2.llp.tests.MinLowerLayerProtocolTest.java

Source

/**
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * (the "License"); you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at http://www.mozilla.org/MPL/
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the
 * specific language governing rights and limitations under the License.
 *
 * The Original Code is "MinLowerLayerProtocolTest.java".  Description:
 * "Unit test class for ca.uhn.hl7v2.llp.tests.MinLowerLayerProtocol"
 *
 * The Initial Developer of the Original Code is Leslie Mann. Copyright (C)
 * 2002.  All Rights Reserved.
 *
 * Contributor(s): ______________________________________.
 *
 * Alternatively, the contents of this file may be used under the terms of the
 * GNU General Public License (the  GPL), in which case the provisions of the GPL are
 * applicable instead of those above.  If you wish to allow use of your version of this
 * file only under the terms of the GPL and not to allow others to use your version
 * of this file under the MPL, indicate your decision by deleting  the provisions above
 * and replace  them with the notice and other provisions required by the GPL License.
 * If you do not delete the provisions above, a recipient may use your version of
 * this file under either the MPL or the GPL.
 *
 */
package ca.uhn.hl7v2.llp.tests;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.ops4j.pax.exam.CoreOptions.equinox;
import static org.ops4j.pax.exam.CoreOptions.felix;
import static org.ops4j.pax.exam.CoreOptions.frameworks;
import static org.ops4j.pax.exam.CoreOptions.knopflerfish;
import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
import static org.ops4j.pax.exam.CoreOptions.options;
import static org.ops4j.pax.exam.CoreOptions.systemProperty;
import static org.ops4j.pax.exam.CoreOptions.wrappedBundle;
import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.logProfile;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;

import junit.framework.TestCase;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Inject;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
import org.osgi.framework.BundleContext;

import ca.uhn.hl7v2.llp.HL7Reader;
import ca.uhn.hl7v2.llp.HL7Writer;
import ca.uhn.hl7v2.llp.LLPException;
import ca.uhn.hl7v2.llp.LowerLayerProtocol;
import ca.uhn.hl7v2.llp.MinLowerLayerProtocol;

/**
 * Unit test class for ca.uhn.hl7v2.llp.tests.MinLowerLayerProtocol
 * 
 * @author Leslie Mann
 * @author Niranjan Sharma niranjan.sharma@med.ge.com This testcase has been
 *         extended for OSGI environment using Junit4 and PAX-Exam.
 */

@RunWith(JUnit4TestRunner.class)
public class MinLowerLayerProtocolTest {

    // you get that because you "installed" a log profile in configuration.
    public Log logger = LogFactory.getLog(MinLowerLayerProtocolTest.class);

    // NB: Per the minimal lower layer protocol.
    // character indicating the termination of an HL7 message
    private static final char END_MESSAGE = '\u001c';
    // character indicating the start of an HL7 message
    private static final char START_MESSAGE = '\u000b';
    // the final character of a message: a carriage return
    private static final char LAST_CHARACTER = 13;

    private static MinLowerLayerProtocol minLowerLayerProtocol;
    private static ByteArrayInputStream inputStream;
    private static ByteArrayOutputStream outputStream;
    private static String message;
    private static byte[] llpEncodedMessage;

    @Inject
    BundleContext bundleContext;

    @Configuration
    public static Option[] configure() {
        return options(frameworks(equinox(), felix(), knopflerfish()), logProfile(),
                systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
                mavenBundle().groupId("org.ops4j.pax.url").artifactId("pax-url-mvn").version("0.4.0"),
                wrappedBundle(
                        mavenBundle().groupId("org.ops4j.base").artifactId("ops4j-base-util").version("0.5.3")),
                mavenBundle().groupId("ca.uhn.hapi").artifactId("hapi-osgi-base").version("1.0-beta1")
        //      , vmOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006" )

        );
    }

    /**
     * @see TestCase#setUp()
     */

    @Before
    public void BeforeTheTest() throws Exception {
        logger.info("*****************************BeforeTheTest******************************************");
        System.setProperty("ca.uhn.hl7v2.llp.tests.logBytesRead", "FALSE");
        System.setProperty("ca.uhn.hl7v2.util.tests.tests.status.out", "");
        minLowerLayerProtocol = new MinLowerLayerProtocol();
        message = "This is a test HL7 message";
        llpEncodedMessage = (START_MESSAGE + message + END_MESSAGE + LAST_CHARACTER).getBytes();
        inputStream = new ByteArrayInputStream(llpEncodedMessage);
        outputStream = new ByteArrayOutputStream();
    }

    /**
     * @see TestCase#tearDown()
     */

    @After
    public void AfterTheTest() throws Exception {
        logger.info("*****************************AfterTheTest******************************************");
        minLowerLayerProtocol = null;
        message = null;
        llpEncodedMessage = null;
        inputStream = null;
        outputStream = null;
    }

    /*
     * ********************************************************* Test Cases
     * *********************************************************
     */

    @Test
    public void TestCtx() {
        System.out.println(
                "*****************************BundleContext is Good******************************************");
        assertNotNull("Bundle Context is Null", bundleContext);
    }

    /**
     * Testing default constructor
     */
    @Test
    public void testConstructor() {
        assertNotNull("Should have a MinLowerLayerProtocol object", minLowerLayerProtocol);
    }

    /**
     * Testing getReader
     */
    @Test
    public void testGetReader() throws LLPException {
        HL7Reader reader = minLowerLayerProtocol.getReader(inputStream);
        assertNotNull("Should have a valid HL7Reader object", reader);
    }

    /**
     * Testing getWriter
     */
    @Test
    public void testGetWriter() throws LLPException {
        HL7Writer writer = minLowerLayerProtocol.getWriter(outputStream);
        assertNotNull("Should have a valid HL7Writer object", writer);
    }

    /**
     * Testing subclass MakeLLP() method
     */
    @Test
    public void testMakeLLP() {
        LowerLayerProtocol lowerLayerProtocol = MinLowerLayerProtocol.makeLLP();
        assertNotNull("Should have a valid LowerLayerProtocol object", lowerLayerProtocol);
    }

    /**
     * Testing subclass LogCharacterReceived() method
     */
    public void testLogCharacterReceived() {
        int c = 'A';

        // Set properties to generate a status message
        System.setProperty("ca.uhn.hl7v2.llp.tests.logBytesRead", "TRUE");
        System.setProperty("ca.uhn.hl7v2.util.tests.tests.status.out", "");

        minLowerLayerProtocol = new MinLowerLayerProtocol();

        // redirect System.out
        ByteArrayOutputStream statusMsgStream = new ByteArrayOutputStream();
        PrintStream ps = new PrintStream(statusMsgStream);
        PrintStream oldOut = System.out;
        System.setOut(ps);

        MinLowerLayerProtocol.logCharacterReceived(c);

        // reset System.out
        System.setOut(oldOut);
        // trim to remove \n at end of logging message
        String statusMessage = statusMsgStream.toString().trim();

        assertEquals("Should have character logging message", "Char received: " + c + " (" + (char) c + ")",
                statusMessage);
    }
}