public void writeSignedNumDecreasing(long val) { writeSignedNumIncreasing(~val); }
private void writeNumber(OrderedCode orderedCode, KeyPart part, long v) { if (part.isDesc()) { orderedCode.writeSignedNumDecreasing(v); } else { orderedCode.writeSignedNumIncreasing(v); } }
/** * Assert that encoding the specified long via {@link OrderedCode#writeSignedNumIncreasing(long)} * results in the bytes represented by the specified string of hex digits. E.g. * assertSignedNumIncreasingEncodingEquals("3fbf", -65) asserts that -65 is encoded as { (byte) * 0x3f, (byte) 0xbf }. */ private static void assertSignedNumIncreasingEncodingEquals( String expectedHexEncoding, long num) { OrderedCode orderedCode = new OrderedCode(); orderedCode.writeSignedNumIncreasing(num); assertEquals( "Unexpected encoding for " + num, expectedHexEncoding, bytesToHexString(orderedCode.getEncodedBytes())); }
/** * Assert that encoding (via {@link OrderedCode#writeSignedNumIncreasing(long)}) the specified * long value and then decoding (via {@link OrderedCode#readSignedNumIncreasing()}) results in the * original value. */ private static void assertSignedNumIncreasingWriteAndReadIsLossless(long num) { OrderedCode orderedCode = new OrderedCode(); orderedCode.writeSignedNumIncreasing(num); assertEquals( "Unexpected result when decoding writeSignedNumIncreasing(" + num + ")", num, orderedCode.readSignedNumIncreasing()); assertFalse( "Unexpected remaining encoded bytes after decoding " + num, orderedCode.hasRemainingEncodedBytes()); }
@Test public void testOrderingInfinity() { OrderedCode inf = new OrderedCode(); inf.writeInfinity(); OrderedCode negInf = new OrderedCode(); negInf.writeInfinityDecreasing(); OrderedCode longValue = new OrderedCode(); longValue.writeSignedNumIncreasing(1); assertTrue(compare(inf.getEncodedBytes(), negInf.getEncodedBytes()) > 0); assertTrue(compare(longValue.getEncodedBytes(), negInf.getEncodedBytes()) > 0); assertTrue(compare(inf.getEncodedBytes(), longValue.getEncodedBytes()) > 0); }
orderedCode.writeNumIncreasing(Long.MIN_VALUE); orderedCode.writeNumIncreasing(Long.MAX_VALUE); orderedCode.writeSignedNumIncreasing(0); orderedCode.writeSignedNumIncreasing(1); orderedCode.writeSignedNumIncreasing(Long.MIN_VALUE); orderedCode.writeSignedNumIncreasing(Long.MAX_VALUE); orderedCode.writeTrailingBytes(escapeChars); byte[] allEncoded = orderedCode.getEncodedBytes();
assertFalse(orderedCode.hasRemainingEncodedBytes()); orderedCode.writeSignedNumIncreasing(number); assertTrue(orderedCode.hasRemainingEncodedBytes()); assertEquals(orderedCode.readSignedNumIncreasing(), number);