Package iso

Source Code of iso.ISOMultiFieldPackagerTest

/*
* Copyright (c) 2005 jPOS.org. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: 1.
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer. 2. Redistributions in
* binary form must reproduce the above copyright notice, this list of
* conditions and the following disclaimer in the documentation and/or other
* materials provided with the distribution. 3. The end-user documentation
* included with the redistribution, if any, must include the following
* acknowledgment: "This product includes software developed by the jPOS
* project (http://www.jpos.org/)". Alternately, this acknowledgment may appear
* in the software itself, if and wherever such third-party acknowledgments
* normally appear. 4. The names "jPOS" and "jPOS.org" must not be used to
* endorse or promote products derived from this software without prior written
* permission. For written permission, please contact license@jpos.org. 5.
* Products derived from this software may not be called "jPOS", nor may "jPOS"
* appear in their name, without prior written permission of the jPOS project.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JPOS
* PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the jPOS Project. For more information please see
* <http://www.jpos.org/> .
*/

package iso;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.Vector;

import junit.framework.TestCase;

import org.jpos.iso.IFB_LLNUM;
import org.jpos.iso.IFE_LLNUM;
import org.jpos.iso.ISOField;
import org.jpos.iso.ISOFieldPackager;
import org.jpos.iso.packager.ISOMultiFieldPackager;
import iso.TestUtils;

/**
* @author Mark Salter
*/
public class ISOMultiFieldPackagerTest extends TestCase {
 
  public void testPackList() throws Exception {
    Vector list = new Vector();
    list.add(new IFB_LLNUM(10, "Should not be this", true));
    list.add(new IFE_LLNUM(10, "Should be 041234"));
    list.add(new IFB_LLNUM(10, "The one to pack", true));

    ISOMultiFieldPackager packager = new ISOMultiFieldPackager(
        "Should be 041234", list);
   
    packager.hint("The one to pack");

    ISOField field = new ISOField(12, "1234");

    TestUtils.assertEquals(new byte[] { (byte) 0x04, (byte) 0x12,
        (byte) 0x34 }, packager.pack(field));
  }
 
 
  public void testPackArray() throws Exception {

    ISOMultiFieldPackager packager = new ISOMultiFieldPackager(
        "Should be 041234", new ISOFieldPackager[] {
            new IFB_LLNUM(10, "Should not be this", true),
            new IFE_LLNUM(10, "Should be 041234"),
            new IFB_LLNUM(10, "The one to pack", true) });
   
    packager.hint("The one to pack");

    ISOField field = new ISOField(12, "1234");

    TestUtils.assertEquals(new byte[] { (byte) 0x04, (byte) 0x12,
        (byte) 0x34 }, packager.pack(field));
  }

  public void testPackNoHintFail() throws Exception {

    ISOMultiFieldPackager packager = new ISOMultiFieldPackager(
        "Should be 041234", new ISOFieldPackager[] {
            new IFB_LLNUM(10, "Should not be this", true),
            new IFE_LLNUM(10, "Should be 041234"),
            new IFB_LLNUM(10, "The one to pack", true) });
    // packager.hint("The one to pack");

    ISOField field = new ISOField(12, "1234");

    try {
      TestUtils.assertEquals(new byte[] { (byte) 0x04, (byte) 0x12,
          (byte) 0x34 }, packager.pack(field));
      fail("pack without hint should fail with ISOException!");
    } catch (Exception expected) {
      // Expected!
    }
  }

  public void testUnpackList() throws Exception {
    byte[] raw = new byte[] { (byte) 0xF0, (byte) 0xF4, (byte) 0xF1,
        (byte) 0xF2, (byte) 0xF3, (byte) 0xF4 };

    Vector list = new Vector();
    list.add(new IFB_LLNUM(10, "Should not be this", true));
    list.add(new IFB_LLNUM(10, "Should not be this", true));
    list.add(new IFB_LLNUM(10, "Should not be this", true));
    list.add(new IFB_LLNUM(10, "Should not be this", true));
    list.add(new IFB_LLNUM(10, "Should not be this", true));
    list.add(new IFB_LLNUM(10, "Should not be this", true));
    list.add(new IFB_LLNUM(10, "Should not be this", true));
    list.add(new IFB_LLNUM(10, "Should not be this", true));
    list.add(new IFB_LLNUM(10, "Should not be this", true));
    list.add(new IFE_LLNUM(10, "Should be 041234"));
    list.add(new IFB_LLNUM(10, "Should not be this", true));

    ISOMultiFieldPackager packager = new ISOMultiFieldPackager(
        "A List choice", list);

    ISOField field = new ISOField();
    packager.unpack(field, raw, 0);

    assertEquals("1234", (String) field.getValue());
  }

  public void testUnpackArray() throws Exception {
    byte[] raw = new byte[] { (byte) 0xF0, (byte) 0xF4, (byte) 0xF1,
        (byte) 0xF2, (byte) 0xF3, (byte) 0xF4 };

    ISOMultiFieldPackager packager = new ISOMultiFieldPackager(
        "An Array choice", new ISOFieldPackager[] {
            new IFB_LLNUM(10, "Should not be this", true),
            new IFE_LLNUM(10, "Should be 041234"),
            new IFB_LLNUM(10, "Should not be this", true) });

    ISOField field = new ISOField();
    packager.unpack(field, raw, 0);

    assertEquals("1234", (String) field.getValue());

  }
 
  public void testUnpackArrayfromInputStream() throws Exception {
    byte[] raw = new byte[] { (byte) 0xF0, (byte) 0xF4, (byte) 0xF1,
        (byte) 0xF2, (byte) 0xF3, (byte) 0xF4 };
   
    ISOMultiFieldPackager packager = new ISOMultiFieldPackager(
        "An Array choice", new ISOFieldPackager[] {
            new IFB_LLNUM(10, "Should not be this", true),
            new IFE_LLNUM(10, "Should be 041234"),
            new IFB_LLNUM(10, "Should not be this", true) });

    ISOField field = new ISOField();
    packager.unpack(field, (InputStream)new ByteArrayInputStream(raw));

    assertEquals("1234", (String) field.getValue());

  }

  // public void testReversability() throws Exception
  // {
  // String origin = "1234567890";
  // ISOField f = new ISOField(12, origin);
  // IFE_LLNUM packager = new IFE_LLNUM(10, "Should be 1234567890");
  //
  // ISOField unpack = new ISOField(12);
  // packager.unpack(unpack, packager.pack(f), 0);
  // assertEquals(origin, (String) unpack.getValue());
  // }
}
TOP

Related Classes of iso.ISOMultiFieldPackagerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.