/** Test method for {@link tuwien.auto.calimero.dptxlator.DPTXlator#setData(byte[], int)}. */
  public void testSetDataByteArrayInt() {
    t.setData(dataMin, 0);
    try {
      t.setData(new byte[] {}, 0);
      fail("should throw");
    } catch (final KNXIllegalArgumentException e) {
    }
    assertTrue(Arrays.equals(dataMin, t.getData()));

    t.setData(dataMax, 0);
    assertTrue(Arrays.equals(dataMax, t.getData()));

    t.setData(dataValue2, 2);
    byte[] d = t.getData();
    assertEquals(8, d.length);
    for (int i = 0; i < d.length; i++) {
      assertEquals(d[i], dataValue2[i + 2]);
    }

    final byte[] array = new byte[data.length + 6];
    System.arraycopy(data, 0, array, 3, data.length);
    t.setData(array, 3);
    d = t.getData();
    assertEquals(data.length, d.length);
    assertTrue(Arrays.equals(data, d));
    Helper.assertSimilar(strings, t.getAllValues());
  }
 /**
  * Test method for {@link tuwien.auto.calimero.dptxlator.DPTXlator4ByteSigned#setValue(int)}.
  *
  * @throws KNXFormatException
  */
 public void testSetValueInt() throws KNXFormatException {
   for (int i = 0; i < longs.length; i++) {
     t.setValue(longs[i]);
     assertEquals(longs[i], t.getValueSigned());
     Helper.assertSimilar(strings[i], t.getValue());
   }
 }
 /** Test method for {@link tuwien.auto.calimero.dptxlator.DPTXlator4ByteSigned#getSubTypes()}. */
 public void testGetSubTypes() {
   assertEquals(3, t.getSubTypes().size());
   final Map types = t.getSubTypes();
   System.out.println("\n64 Bit Signed DPTs:");
   final Collection c = types.values();
   for (final Iterator i = c.iterator(); i.hasNext(); ) {
     final DPT dpt = (DPT) i.next();
     System.out.println(dpt.toString());
   }
 }
 /**
  * Test method for {@link tuwien.auto.calimero.dptxlator.DPTXlator4ByteSigned#getValue()}.
  *
  * @throws KNXFormatException
  */
 public void testGetValue() throws KNXFormatException {
   Helper.assertSimilar("0", t.getValue());
   t.setValues(new String[0]);
   Helper.assertSimilar("0", t.getValue());
   t.setValue(longs[0]);
   Helper.assertSimilar(strings[0], t.getValue());
   t.setData(dataValue2, 2);
   Helper.assertSimilar(value2, t.getValue());
   t.setData(data);
   Helper.assertSimilar(max, t.getValue());
 }
  /**
   * Test method for {@link tuwien.auto.calimero.dptxlator.DPTXlator#getData(byte[], int)}.
   *
   * @throws KNXFormatException
   */
  public void testGetDataByteArrayInt() throws KNXFormatException {
    byte[] d = new byte[9];
    Arrays.fill(d, (byte) 0xAA);
    assertEquals(9, t.getData(d, 1).length);
    try {
      // usable range too short
      t.getData(new byte[8], 1);
      fail("usable range too short");
    } catch (final KNXIllegalArgumentException expected) {
    }

    final byte[] empty = new byte[9];
    assertTrue(Arrays.equals(empty, t.getData(new byte[9], 1)));

    t.setData(data);
    d = t.getData(new byte[25], 6);
    for (int i = 0; i < 6; i++) assertEquals(0, d[i]);
    for (int i = 6; i < 22; i++) assertEquals(data[i - 6], d[i]);
    for (int i = 22; i < 25; i++) assertEquals(0, d[i]);

    for (int i = 0; i < longs.length; i++) {
      t.setValue(longs[i]);
      d = t.getData(new byte[8 + i], i);
      for (int j = 0; j < 4; j++) {
        assertEquals(data[8 * i + j], d[i + j]);
      }
    }
  }
  /**
   * Test method for {@link tuwien.auto.calimero.dptxlator.DPTXlator4ByteSigned#getValueSigned()}.
   *
   * @throws KNXFormatException
   */
  public void testGetValueSigned() throws KNXFormatException {
    assertEquals(0, t.getValueSigned());

    for (int i = 0; i < longs.length - 1; i++) {
      t.setData(data, 8 * i);
      assertEquals(longs[i], t.getValueSigned());
    }
    t.setData(dataValue2, 2);
    assertEquals(longs[3], t.getValueSigned());

    for (int i = 0; i < strings.length; i++) {
      t.setValue(strings[i]);
      assertEquals(longs[i], t.getValueSigned());
    }
  }
  /**
   * Test method for {@link tuwien.auto.calimero.dptxlator.DPTXlator#setValue(java.lang.String)}.
   *
   * @throws KNXFormatException
   */
  public void testSetValueString() throws KNXFormatException {
    t.setValue(value2);
    Helper.assertSimilar(value2, t.getValue());
    String s = t.getValue();
    t.setValue(s);
    Helper.assertSimilar(value2, t.getValue());
    assertEquals(s, t.getValue());

    t.setValue(value1);
    Helper.assertSimilar(value1, t.getValue());
    s = t.getValue();
    t.setValue(s);
    Helper.assertSimilar(value1, t.getValue());
    assertEquals(s, t.getValue());

    final long l = 0x1234567890L;
    t.setValue(l);
    Helper.assertSimilar(Long.toString(l), t.getValue());
    s = t.getValue();
    t.setValue(s);
    Helper.assertSimilar(Long.toString(l), t.getValue());
    assertEquals(s, t.getValue());

    t.setValue(-1);
    Helper.assertSimilar("-1", t.getValue());
    s = t.getValue();
    t.setValue(s);
    Helper.assertSimilar("-1", t.getValue());
    assertEquals(s, t.getValue());
  }
  /**
   * Test method for {@link tuwien.auto.calimero.dptxlator.DPTXlator#setValues(java.lang.String[])}.
   *
   * @throws KNXFormatException
   */
  public void testSetValues() throws KNXFormatException {
    t.setValues(strings);
    assertEquals(strings.length, t.getItems());
    Helper.assertSimilar(strings, t.getAllValues());

    t.setValues(new String[0]);
    assertEquals(strings.length, t.getItems());
    Helper.assertSimilar(strings, t.getAllValues());

    final String[] s = {value1};
    t.setValues(s);
    assertEquals(s.length, t.getItems());
    Helper.assertSimilar(s, t.getAllValues());

    t.setValues(new String[] {t.getValue(), t.getValue()});
  }
  /**
   * Test method for {@link tuwien.auto.calimero.dptxlator.DPTXlator4ByteSigned#getAllValues()}.
   *
   * @throws KNXFormatException
   */
  public void testGetAllValues() throws KNXFormatException {
    assertEquals(1, t.getItems());
    Helper.assertSimilar("0", t.getAllValues()[0]);

    t.setData(data);
    assertEquals(data.length / 8, t.getItems());
    assertEquals(t.getItems(), t.getItems());
    Helper.assertSimilar(strings, t.getAllValues());
    // value = 0xCCCCCCCC
    t.setValue(343597383);
    assertEquals(1, t.getItems());
    Helper.assertSimilar("343597383", t.getAllValues()[0]);

    t.setData(dataValue1);
    assertEquals(1, t.getItems());
    Helper.assertSimilar(value1, t.getAllValues()[0]);
  }