public LabelScanDocument( NodeLabelRange nodeLabelRange ) { super( nodeLabelRange.id() ); this.nodeLabelRange = nodeLabelRange; setInUse( true ); }
private static void assertRanges( AllEntriesLabelScanReader reader, Labels[] data ) { Iterator<NodeLabelRange> iterator = reader.iterator(); long highestRangeId = highestRangeId( data ); for ( long rangeId = 0; rangeId <= highestRangeId; rangeId++ ) { SortedMap<Long/*nodeId*/,List<Long>/*labelIds*/> expected = rangeOf( data, rangeId ); if ( expected != null ) { assertTrue( "Was expecting range " + expected, iterator.hasNext() ); NodeLabelRange range = iterator.next(); assertEquals( rangeId, range.id() ); for ( Map.Entry<Long,List<Long>> expectedEntry : expected.entrySet() ) { long[] labels = range.labels( expectedEntry.getKey() ); assertArrayEquals( asArray( expectedEntry.getValue().iterator() ), labels ); } } // else there was nothing in this range } assertFalse( iterator.hasNext() ); }
private static void assertRanges( Iterator<NodeLabelRange> iterator, int[] expectedRanges ) { for ( int expectedRangeId = 0; expectedRangeId < expectedRanges.length; expectedRangeId++ ) { assertTrue( iterator.hasNext() ); NodeLabelRange actualRange = iterator.next(); assertEquals( expectedRangeId, actualRange.id() ); int expectedRange = expectedRanges[expectedRangeId]; long baseNodeId = expectedRangeId * RANGE_SIZE; for ( int i = 0; i < RANGE_SIZE; i++ ) { long nodeId = baseNodeId + i; long[] expectedLabelIds = (expectedRange & (1 << i)) == 0 ? EMPTY_LONG_ARRAY : LABEL_IDS; assertArrayEquals( expectedLabelIds, actualRange.labels( nodeId ) ); assertEquals( nodeId, actualRange.nodes()[i] ); } } assertFalse( iterator.hasNext() ); }
@Test public void shouldRebaseOnRangeId() { // given long[][] labelsPerNode = new long[][] { {1}, {1, 3}, {3, 5, 7}, {}, {1, 5, 7}, {}, {}, {1, 2, 3, 4} }; // when NodeLabelRange range = new NodeLabelRange( 10, labelsPerNode ); // then long baseNodeId = range.id() * labelsPerNode.length; long[] expectedNodeIds = new long[labelsPerNode.length]; for ( int i = 0; i < expectedNodeIds.length; i++ ) { expectedNodeIds[i] = baseNodeId + i; } assertArrayEquals( expectedNodeIds, range.nodes() ); } }