public void testNormalizedKeysEquals(boolean halfLength) { try { TypeComparator<T> comparator = getComparator(true); T[] data = getSortedData(); int normKeyLen = getNormKeyLen(halfLength, data, comparator); MemorySegment memSeg1 = setupNormalizedKeysMemSegment(data, normKeyLen, comparator); MemorySegment memSeg2 = setupNormalizedKeysMemSegment(data, normKeyLen, comparator); for (int i = 0; i < data.length; i++) { assertTrue(memSeg1.compare(memSeg2, i * normKeyLen, i * normKeyLen, normKeyLen) == 0); } } catch (Exception e) { System.err.println(e.getMessage()); e.printStackTrace(); fail("Exception in test: " + e.getMessage()); } }
private void testCompare(MemorySegment seg1, MemorySegment seg2) { int[] offsetsToTest = { 0, 1, -1, seg1.size(), -seg1.size(), Integer.MAX_VALUE, Integer.MIN_VALUE }; int[] lengthsToTest = { 1, seg1.size(), Integer.MAX_VALUE }; for (int off1 : offsetsToTest) { for (int off2 : offsetsToTest) { for (int len : lengthsToTest) { try { seg1.compare(seg2, off1, off2, len); fail("Should fail with an exception"); } catch (IllegalStateException | IndexOutOfBoundsException | NullPointerException ignored) {} } } } }
random.nextInt(pageSize / 50)); int cmp = seg1.compare(seg2, pos1, pos2, len);
private void testCompare(MemorySegment seg1, MemorySegment seg2, Random random) { assertEquals(pageSize, seg1.size()); assertEquals(pageSize, seg2.size()); final byte[] bytes1 = new byte[pageSize]; final byte[] bytes2 = new byte[pageSize]; final int stride = pageSize / 255; final int shift = 16666; for (int i = 0; i < pageSize; i++) { byte val = (byte) ((i / stride) & 0xff); bytes1[i] = val; if (i + shift < bytes2.length) { bytes2[i + shift] = val; } } seg1.put(0, bytes1); seg2.put(0, bytes2); for (int i = 0; i < 1000; i++) { int pos1 = random.nextInt(bytes1.length); int pos2 = random.nextInt(bytes2.length); int len = Math.min(Math.min(bytes1.length - pos1, bytes2.length - pos2), random.nextInt(pageSize / 50)); int cmp = seg1.compare(seg2, pos1, pos2, len); if (pos1 < pos2 - shift) { assertTrue(cmp <= 0); } else { assertTrue(cmp >= 0); } } }
private static void check(BufferOrEvent expected, BufferOrEvent present) { assertNotNull(expected); assertNotNull(present); assertEquals(expected.isBuffer(), present.isBuffer()); if (expected.isBuffer()) { assertEquals(expected.getBuffer().getMaxCapacity(), present.getBuffer().getMaxCapacity()); assertEquals(expected.getBuffer().getSize(), present.getBuffer().getSize()); MemorySegment expectedMem = expected.getBuffer().getMemorySegment(); MemorySegment presentMem = present.getBuffer().getMemorySegment(); assertTrue("memory contents differs", expectedMem.compare(presentMem, 0, 0, PAGE_SIZE) == 0); } else { assertEquals(expected.getEvent(), present.getEvent()); } }
private static void check(BufferOrEvent expected, BufferOrEvent present, int pageSize) { assertNotNull(expected); assertNotNull(present); assertEquals(expected.isBuffer(), present.isBuffer()); if (expected.isBuffer()) { assertEquals(expected.getBuffer().getMaxCapacity(), present.getBuffer().getMaxCapacity()); assertEquals(expected.getBuffer().getSize(), present.getBuffer().getSize()); MemorySegment expectedMem = expected.getBuffer().getMemorySegment(); MemorySegment presentMem = present.getBuffer().getMemorySegment(); assertTrue("memory contents differs", expectedMem.compare(presentMem, 0, 0, pageSize) == 0); } else { assertEquals(expected.getEvent(), present.getEvent()); } }
@Override public int compare(int segmentNumberI, int segmentOffsetI, int segmentNumberJ, int segmentOffsetJ) { final MemorySegment segI = this.sortBuffer.get(segmentNumberI); final MemorySegment segJ = this.sortBuffer.get(segmentNumberJ); int val = segI.compare(segJ, segmentOffsetI, segmentOffsetJ, this.numKeyBytes); return this.useNormKeyUninverted ? val : -val; }
@Override public int compare(int segmentNumberI, int segmentOffsetI, int segmentNumberJ, int segmentOffsetJ) { final MemorySegment segI = this.sortBuffer.get(segmentNumberI); final MemorySegment segJ = this.sortBuffer.get(segmentNumberJ); int val = segI.compare(segJ, segmentOffsetI, segmentOffsetJ, this.numKeyBytes); return this.useNormKeyUninverted ? val : -val; }
@Override public int compare(int segmentNumberI, int segmentOffsetI, int segmentNumberJ, int segmentOffsetJ) { final MemorySegment segI = this.sortBuffer.get(segmentNumberI); final MemorySegment segJ = this.sortBuffer.get(segmentNumberJ); int val = segI.compare(segJ, segmentOffsetI, segmentOffsetJ, this.numKeyBytes); return this.useNormKeyUninverted ? val : -val; }
@Override public int compare(int segmentNumberI, int segmentOffsetI, int segmentNumberJ, int segmentOffsetJ) { final MemorySegment segI = this.sortBuffer.get(segmentNumberI); final MemorySegment segJ = this.sortBuffer.get(segmentNumberJ); int val = segI.compare(segJ, segmentOffsetI, segmentOffsetJ, this.numKeyBytes); return this.useNormKeyUninverted ? val : -val; }
@Override public int compare(int segmentNumberI, int segmentOffsetI, int segmentNumberJ, int segmentOffsetJ) { final MemorySegment segI = this.sortIndex.get(segmentNumberI); final MemorySegment segJ = this.sortIndex.get(segmentNumberJ); int val = segI.compare(segJ, segmentOffsetI + OFFSET_LEN, segmentOffsetJ + OFFSET_LEN, this.numKeyBytes); if (val != 0 || this.normalizedKeyFullyDetermines) { return this.useNormKeyUninverted ? val : -val; } final long pointerI = segI.getLong(segmentOffsetI) & POINTER_MASK; final long pointerJ = segJ.getLong(segmentOffsetJ) & POINTER_MASK; return compareRecords(pointerI, pointerJ); }
@Override public int compare(int segmentNumberI, int segmentOffsetI, int segmentNumberJ, int segmentOffsetJ) { final MemorySegment segI = this.sortIndex.get(segmentNumberI); final MemorySegment segJ = this.sortIndex.get(segmentNumberJ); int val = segI.compare(segJ, segmentOffsetI + OFFSET_LEN, segmentOffsetJ + OFFSET_LEN, this.numKeyBytes); if (val != 0 || this.normalizedKeyFullyDetermines) { return this.useNormKeyUninverted ? val : -val; } final long pointerI = segI.getLong(segmentOffsetI) & POINTER_MASK; final long pointerJ = segJ.getLong(segmentOffsetJ) & POINTER_MASK; return compareRecords(pointerI, pointerJ); }
@Override public int compare(int segmentNumberI, int segmentOffsetI, int segmentNumberJ, int segmentOffsetJ) { final MemorySegment segI = this.sortIndex.get(segmentNumberI); final MemorySegment segJ = this.sortIndex.get(segmentNumberJ); int val = segI.compare(segJ, segmentOffsetI + OFFSET_LEN, segmentOffsetJ + OFFSET_LEN, this.numKeyBytes); if (val != 0 || this.normalizedKeyFullyDetermines) { return this.useNormKeyUninverted ? val : -val; } final long pointerI = segI.getLong(segmentOffsetI) & POINTER_MASK; final long pointerJ = segJ.getLong(segmentOffsetJ) & POINTER_MASK; return compareRecords(pointerI, pointerJ); }
@Override public int compare(int segmentNumberI, int segmentOffsetI, int segmentNumberJ, int segmentOffsetJ) { final MemorySegment segI = this.sortIndex.get(segmentNumberI); final MemorySegment segJ = this.sortIndex.get(segmentNumberJ); int val = segI.compare(segJ, segmentOffsetI + OFFSET_LEN, segmentOffsetJ + OFFSET_LEN, this.numKeyBytes); if (val != 0 || this.normalizedKeyFullyDetermines) { return this.useNormKeyUninverted ? val : -val; } final long pointerI = segI.getLong(segmentOffsetI) & POINTER_MASK; final long pointerJ = segJ.getLong(segmentOffsetJ) & POINTER_MASK; return compareRecords(pointerI, pointerJ); }