@Test
 public void testEncodedLength() {
   PositionedByteRange buff = new SimplePositionedMutableByteRange(20);
   for (DataType<byte[]> type :
       new OrderedBlobVar[] {OrderedBlobVar.ASCENDING, OrderedBlobVar.DESCENDING}) {
     for (byte[] val : VALUES) {
       buff.setPosition(0);
       type.encode(buff, val);
       assertEquals(
           "encodedLength does not match actual, " + Bytes.toStringBinary(val),
           buff.getPosition(),
           type.encodedLength(val));
     }
   }
 }
Beispiel #2
0
 @Test
 public void testEncodedLength() {
   PositionedByteRange buff = new SimplePositionedMutableByteRange(20);
   for (DataType<String> type :
       new OrderedString[] {OrderedString.ASCENDING, OrderedString.DESCENDING}) {
     for (String val : VALUES) {
       buff.setPosition(0);
       type.encode(buff, val);
       assertEquals(
           "encodedLength does not match actual, " + val,
           buff.getPosition(),
           type.encodedLength(val));
     }
   }
 }
Beispiel #3
0
 @Override
 public int encode(PositionedByteRange dst, T val) {
   if (dst.getRemaining() < length) {
     throw new IllegalArgumentException(
         "Not enough buffer remaining. dst.offset: "
             + dst.getOffset()
             + " dst.length: "
             + dst.getLength()
             + " dst.position: "
             + dst.getPosition()
             + " max length: "
             + length);
   }
   int written = base.encode(dst, val);
   if (written > length) {
     throw new IllegalArgumentException(
         "Length of encoded value (" + written + ") exceeds max length (" + length + ").");
   }
   // TODO: is the zero-padding appropriate?
   for (; written < length; written++) {
     dst.put((byte) 0x00);
   }
   return written;
 }