@Test(groups = {"functional.xml.serialize", "isup"})
  public void testXMLSerialize() throws Exception {

    OriginalCalledNumberCapImpl original =
        new OriginalCalledNumberCapImpl(
            new OriginalCalledNumberImpl(
                OriginalCalledNumber._NAI_NATIONAL_SN,
                "12345",
                OriginalCalledNumber._NPI_TELEX,
                OriginalCalledNumber._APRI_RESTRICTED));

    // Writes the area to a file.
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    XMLObjectWriter writer = XMLObjectWriter.newInstance(baos);
    // writer.setBinding(binding); // Optional.
    writer.setIndentation("\t"); // Optional (use tabulation for indentation).
    writer.write(original, "originalCalledNumberCap", OriginalCalledNumberCapImpl.class);
    writer.close();

    byte[] rawData = baos.toByteArray();
    String serializedEvent = new String(rawData);

    System.out.println(serializedEvent);

    ByteArrayInputStream bais = new ByteArrayInputStream(rawData);
    XMLObjectReader reader = XMLObjectReader.newInstance(bais);
    OriginalCalledNumberCapImpl copy =
        reader.read("originalCalledNumberCap", OriginalCalledNumberCapImpl.class);

    assertEquals(
        copy.getOriginalCalledNumber().getNatureOfAddressIndicator(),
        original.getOriginalCalledNumber().getNatureOfAddressIndicator());
    assertEquals(
        copy.getOriginalCalledNumber().getAddress(),
        original.getOriginalCalledNumber().getAddress());
    assertEquals(
        copy.getOriginalCalledNumber().getNumberingPlanIndicator(),
        original.getOriginalCalledNumber().getNumberingPlanIndicator());
    assertEquals(
        copy.getOriginalCalledNumber().getAddressRepresentationRestrictedIndicator(),
        original.getOriginalCalledNumber().getAddressRepresentationRestrictedIndicator());
  }
  @Test(groups = {"functional.decode", "isup"})
  public void testDecode() throws Exception {

    byte[] data = this.getData();
    AsnInputStream ais = new AsnInputStream(data);
    OriginalCalledNumberCapImpl elem = new OriginalCalledNumberCapImpl();
    int tag = ais.readTag();
    elem.decodeAll(ais);
    OriginalCalledNumber ocn = elem.getOriginalCalledNumber();
    assertTrue(Arrays.equals(elem.getData(), this.getIntData()));
    assertEquals(ocn.getNatureOfAddressIndicator(), 3);
    assertTrue(ocn.getAddress().equals("7010900"));
    assertEquals(ocn.getNumberingPlanIndicator(), 1);
    assertEquals(ocn.getAddressRepresentationRestrictedIndicator(), 1);

    data = this.getData2();
    ais = new AsnInputStream(data);
    elem = new OriginalCalledNumberCapImpl();
    tag = ais.readTag();
    elem.decodeAll(ais);
    ocn = elem.getOriginalCalledNumber();
    assertEquals(ocn.getNumberingPlanIndicator(), 1);
    assertEquals(ocn.getAddressRepresentationRestrictedIndicator(), 0);
    assertEquals(ocn.getNatureOfAddressIndicator(), 4);
    assertEquals(ocn.getAddress(), "c48980491770922937");
  }
  @Test(groups = {"functional.encode", "isup"})
  public void testEncode() throws Exception {

    OriginalCalledNumberCapImpl elem = new OriginalCalledNumberCapImpl(this.getIntData());
    AsnOutputStream aos = new AsnOutputStream();
    elem.encodeAll(aos, Tag.CLASS_CONTEXT_SPECIFIC, 12);
    assertTrue(Arrays.equals(aos.toByteArray(), this.getData()));

    OriginalCalledNumber cpn = new OriginalCalledNumberImpl(3, "7010900", 1, 1);
    elem = new OriginalCalledNumberCapImpl(cpn);
    aos = new AsnOutputStream();
    elem.encodeAll(aos, Tag.CLASS_CONTEXT_SPECIFIC, 12);
    assertTrue(Arrays.equals(aos.toByteArray(), this.getData()));

    cpn = new OriginalCalledNumberImpl(4, "c48980491770922937", 1, 0);
    elem = new OriginalCalledNumberCapImpl(cpn);
    aos = new AsnOutputStream();
    elem.encodeAll(aos, Tag.CLASS_CONTEXT_SPECIFIC, 12);
    assertTrue(Arrays.equals(aos.toByteArray(), this.getData2()));

    // int natureOfAddresIndicator, String address, int numberingPlanIndicator, int
    // addressRepresentationREstrictedIndicator
  }