/** * Convert primitive set into a plain old java {@link Set}, boxing each long. * * @param set {@link LongSet} set of primitive values. * @return a {@link Set} containing all items. */ public static Set<Long> toSet( LongSet set ) { return toSet( set.longIterator() ); }
@Test void convertPrimitiveSetToJavaSet() { LongSet longSet = newSetWith( 1L, 3L, 5L ); Set<Long> longs = PrimitiveLongCollections.toSet( longSet ); assertThat( longs, containsInAnyOrder(1L, 3L, 5L) ); }
@Test public void iterateOnlyOverAddedElementsWhenSourceIsEmpty() { LongIterator emptySource = ImmutableEmptyLongIterator.INSTANCE; LongSet added = LongHashSet.newSetWith( 1L, 2L ); LongSet removed = LongHashSet.newSetWith( 3L ); LongIterator iterator = DiffApplyingPrimitiveLongIterator.augment( emptySource, added, removed ); Set<Long> resultSet = toSet( iterator ); assertThat( resultSet, containsInAnyOrder(1L, 2L) ); }
@Test public void appendSourceElementsDuringIteration() { LongIterator source = iterator( 4L, 5L ); LongSet added = LongHashSet.newSetWith( 1L, 2L ); LongSet removed = LongHashSet.newSetWith( 3L ); LongIterator iterator = DiffApplyingPrimitiveLongIterator.augment( source, added, removed ); Set<Long> resultSet = toSet( iterator ); assertThat( resultSet, containsInAnyOrder(1L, 2L, 4L, 5L) ); }
@Test public void doNotIterateOverDeletedElement() { LongIterator source = iterator( 3L, 5L ); LongSet added = LongHashSet.newSetWith( 1L ); LongSet removed = LongHashSet.newSetWith( 3L ); LongIterator iterator = DiffApplyingPrimitiveLongIterator.augment( source, added, removed ); Set<Long> resultSet = toSet( iterator ); assertThat( resultSet, containsInAnyOrder(1L, 5L) ); }
@Test public void canChangeExistingData() throws Exception { // GIVEN updateAndCommit( asList( add( nodeId, value ) ) ); // WHEN updateAndCommit( asList( change( nodeId, value, value2 ) ) ); IndexReader reader = accessor.newReader(); // THEN assertEquals( asSet( nodeId ), PrimitiveLongCollections.toSet( reader.query( exact( PROP_ID, value2 ) ) ) ); assertEquals( emptySet(), PrimitiveLongCollections.toSet( reader.query( exact( PROP_ID, value ) ) ) ); reader.close(); }
@Test public void indexReaderShouldHonorRepeatableReads() throws Exception { // GIVEN updateAndCommit( asList( add( nodeId, value ) ) ); IndexReader reader = accessor.newReader(); // WHEN updateAndCommit( asList( remove( nodeId, value ) ) ); // THEN assertEquals( asSet( nodeId ), PrimitiveLongCollections.toSet( reader.query( exact( PROP_ID, value ) ) ) ); reader.close(); }
@Test public void canRemoveExistingData() throws Exception { // GIVEN updateAndCommit( asList( add( nodeId, value ), add( nodeId2, value2 ) ) ); // WHEN updateAndCommit( asList( remove( nodeId, value ) ) ); IndexReader reader = accessor.newReader(); // THEN assertEquals( asSet( nodeId2 ), PrimitiveLongCollections.toSet( reader.query( exact( PROP_ID, value2 ) ) ) ); assertEquals( asSet(), PrimitiveLongCollections.toSet( reader.query( exact( PROP_ID, value ) ) ) ); reader.close(); }
@Test public void indexReaderShouldSupportScan() throws Exception { // GIVEN updateAndCommit( asList( add( nodeId, value ), add( nodeId2, value2 ) ) ); IndexReader reader = accessor.newReader(); // WHEN LongIterator results = reader.query( IndexQuery.exists( PROP_ID ) ); // THEN assertEquals( asSet( nodeId, nodeId2 ), PrimitiveLongCollections.toSet( results ) ); assertEquals( asSet( nodeId ), PrimitiveLongCollections.toSet( reader.query( exact( PROP_ID, value ) ) ) ); reader.close(); }
@Test public void canRemoveExistingData() throws Exception { // GIVEN updateAndCommit( asList( add( nodeId, values ), add( nodeId2, values2 ) ) ); // WHEN updateAndCommit( asList( remove( nodeId, values ) ) ); IndexReader reader = accessor.newReader(); // THEN assertEquals( asSet( nodeId2 ), PrimitiveLongCollections.toSet( reader .query( exact( PROP_ID1, values2[0] ), exact( PROP_ID2, values2[1] ) ) ) ); assertEquals( asSet(), PrimitiveLongCollections.toSet( reader .query( exact( PROP_ID1, values[0] ), exact( PROP_ID2, values[1] ) ) ) ); reader.close(); }
@Test public void canAddNewData() throws Exception { // WHEN updateAndCommit( asList( add( nodeId, value ), add( nodeId2, value2 ) ) ); IndexReader reader = accessor.newReader(); // THEN assertEquals( asSet( nodeId ), PrimitiveLongCollections.toSet( reader.query( exact( PROP_ID, value ) ) ) ); reader.close(); }
@Test public void indexReaderShouldSupportScan() throws Exception { // GIVEN updateAndCommit( asList( add( nodeId, values ), add( nodeId2, values2 ) ) ); IndexReader reader = accessor.newReader(); // WHEN LongIterator results = reader.query( IndexQuery.exists( PROP_ID1 ), IndexQuery.exists( PROP_ID2 ) ); // THEN assertEquals( asSet( nodeId, nodeId2 ), PrimitiveLongCollections.toSet( results ) ); assertEquals( asSet( nodeId ), PrimitiveLongCollections.toSet( reader .query( exact( PROP_ID1, values[0] ), exact( PROP_ID2, values[1] ) ) ) ); reader.close(); }
@Test public void canAddNewData() throws Exception { // WHEN updateAndCommit( asList( add( nodeId, values ), add( nodeId2, values2 ) ) ); IndexReader reader = accessor.newReader(); // THEN assertEquals( asSet( nodeId ), PrimitiveLongCollections.toSet( reader .query( exact( PROP_ID1, values[0] ), exact( PROP_ID2, values[1] ) ) ) ); reader.close(); }
@Test public void shouldReturnAllNodesWithLabel() { // GIVEN Node node1 = createLabeledNode( db, map( "name", "First", "age", 1L ), label1 ); Node node2 = createLabeledNode( db, map( "type", "Node", "count", 10 ), label1, label2 ); int labelId1 = labelId( label1 ); int labelId2 = labelId( label2 ); // WHEN LongIterator nodesForLabel1 = storageReader.nodesGetForLabel( labelId1 ); LongIterator nodesForLabel2 = storageReader.nodesGetForLabel( labelId2 ); // THEN assertEquals( asSet( node1.getId(), node2.getId() ), PrimitiveLongCollections.toSet( nodesForLabel1 ) ); assertEquals( asSet( node2.getId() ), PrimitiveLongCollections.toSet( nodesForLabel2 ) ); } }
@Test public void removeAndAddElementsToDiffSets() { MutableLongDiffSetsImpl diffSets = createDiffSet(); diffSets.remove( 1L ); diffSets.remove( 2L ); diffSets.add( 1L ); diffSets.add( 2L ); diffSets.add( 3L ); diffSets.remove( 4L ); assertFalse( diffSets.isEmpty() ); assertEquals( asSet( 4L ), toSet( diffSets.getRemoved() ) ); assertEquals( asSet( 3L ), toSet( diffSets.getAdded() ) ); }
@Test public void removeElementsInDiffSets() { MutableLongDiffSetsImpl diffSets = createDiffSet(); diffSets.remove( 1L ); diffSets.remove( 2L ); assertFalse( diffSets.isEmpty() ); assertEquals( asSet( 1L, 2L ), toSet( diffSets.getRemoved() ) ); }
@Test public void addAllElements() { MutableLongDiffSetsImpl diffSet = createDiffSet(); diffSet.addAll( newSetWith( 7L, 8L ) ); diffSet.addAll( newSetWith( 9L, 10L ) ); assertEquals( asSet( 7L, 8L, 9L, 10L ), toSet( diffSet.getAdded() ) ); }
@Test public void removeAllElements() { MutableLongDiffSetsImpl diffSet = createDiffSet(); diffSet.removeAll( newSetWith( 7L, 8L ) ); diffSet.removeAll( newSetWith( 9L, 10L ) ); assertEquals( asSet( 7L, 8L, 9L, 10L ), toSet( diffSet.getRemoved() ) ); }
@Test public void augmentDiffSetWithExternalElements() { MutableLongDiffSets diffSet = createDiffSet(); diffSet.addAll( newSetWith( 9L, 10L, 11L ) ); diffSet.removeAll( newSetWith( 1L, 2L ) ); LongIterator augmentedIterator = diffSet.augment( iterator( 5L, 6L ) ); assertEquals( asSet( 5L, 6L, 9L, 10L, 11L ), toSet( augmentedIterator ) ); }
@Test public void addElementsToDiffSets() { MutableLongDiffSetsImpl diffSets = createDiffSet(); diffSets.add( 1L ); diffSets.add( 2L ); assertEquals( asSet( 1L, 2L ), toSet( diffSets.getAdded() ) ); assertTrue( diffSets.getRemoved().isEmpty() ); assertFalse( diffSets.isEmpty() ); }