@Test public void hexEncode() { String input = "haha,i am a very long message"; String result = EncodeUtil.encodeHex(input.getBytes()); assertThat(new String(EncodeUtil.decodeHex(result), Charsets.UTF_8)).isEqualTo(input); byte[] bytes = new byte[] { 1, 2, 15, 17 }; result = EncodeUtil.encodeHex(bytes); assertThat(result).isEqualTo("01020F11"); input = "01020F11"; assertThat(EncodeUtil.decodeHex(input)).hasSize(4).containsSequence((byte) 1, (byte) 2, (byte) 15, (byte) 17); try { input = "01020G11"; EncodeUtil.decodeHex(input); fail("should throw exception before"); } catch (Throwable t) { assertThat(t).isInstanceOf(IllegalArgumentException.class); } }
@Test public void toBytes() { byte[] bytes = NumberUtil.toBytes(1); assertThat(bytes).hasSize(4).containsSequence((byte) 0, (byte) 0, (byte) 0, (byte) 1); bytes = NumberUtil.toBytes(257); assertThat(bytes).containsSequence((byte) 0, (byte) 0, (byte) 1, (byte) 1); assertThat(NumberUtil.toInt(bytes)).isEqualTo(257); // long byte[] bytes2 = NumberUtil.toBytes(1L); assertThat(bytes2).hasSize(8); bytes2 = NumberUtil.toBytes(257L); assertThat(bytes2).containsSequence((byte) 0, (byte) 0, (byte) 1, (byte) 1); assertThat(NumberUtil.toLong(bytes2)).isEqualTo(257L); // dobule byte[] bytes3 = NumberUtil.toBytes(1.123d); assertThat(NumberUtil.toDouble(bytes3)).isEqualTo(1.123d); // toInt32 assertThat(NumberUtil.toInt32(123l)).isEqualTo(123); try { NumberUtil.toInt32(Long.valueOf(Integer.MAX_VALUE + 1l)); fail("should fail here"); } catch (Exception e) { assertThat(e).isInstanceOf(IllegalArgumentException.class); } }
static Object serializeAndDeserialize(Geometry geometry) throws IOException, ClassNotFoundException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(baos); out.writeObject(geometry); byte[] bytes = baos.toByteArray(); if (!(geometry instanceof Distance)) { byte[] wkb = Bytes.getArray(geometry.asWellKnownBinary()); assertThat(bytes).containsSequence(wkb); } ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes)); return in.readObject(); } }