### Question:
BytesValues { public static BytesValue trimLeadingZeros(BytesValue value) { int toTrim = leadingZeros(value); return value.slice(toTrim); } private  BytesValues(); static int countZeros(BytesValue value); static BytesValue trimLeadingZeros(BytesValue value); static BytesValue toMinimalBytes(long l); static BytesValue ofUnsignedByte(int v); static BytesValue ofUnsignedShort(int v); static BytesValue ofUnsignedInt(long v); static BytesValue ofUnsignedIntLittleEndian(long v); static int extractInt(BytesValue value); static int extractIntLittleEndian(BytesValue value); static long extractLong(BytesValue value); static BytesValue concatenate(BytesValue... values); static BigInteger asUnsignedBigInteger(BytesValue bytes); static String asString(BytesValue bytes); static BigInteger asSignedBigInteger(BytesValue bytes); static BytesValue and(BytesValue b1, BytesValue b2); static BytesValue or(BytesValue b1, BytesValue b2);  }### Answer:
@Test public void shouldTrimLeadingZeroes() { assertEquals(h("0x"), trimLeadingZeros(h("0x"))); assertEquals(h("0x"), trimLeadingZeros(h("0x00"))); assertEquals(h("0x"), trimLeadingZeros(h("0x00000000"))); assertEquals(h("0x01"), trimLeadingZeros(h("0x01"))); assertEquals(h("0x01"), trimLeadingZeros(h("0x00000001"))); assertEquals(h("0x3010"), trimLeadingZeros(h("0x3010"))); assertEquals(h("0x3010"), trimLeadingZeros(h("0x00003010"))); assertEquals(h("0xFFFFFFFF"), trimLeadingZeros(h("0xFFFFFFFF"))); assertEquals(h("0xFFFFFFFF"), trimLeadingZeros(h("0x000000000000FFFFFFFF"))); }