Search in sources :

Example 1 with Cursor

use of org.neo4j.cursor.Cursor in project neo4j by neo4j.

the class NodeLoadingIteratorTest method shouldHandleANonEmptyIteratorWithNotFoundEntities.

@Test
public void shouldHandleANonEmptyIteratorWithNotFoundEntities() throws Exception {
    // given
    Map<Long, Cursor<NodeItem>> map = new HashMap<>(3);
    map.put(1L, mockCursor());
    map.put(2L, null);
    map.put(3L, mockCursor());
    PrimitiveLongIterator inner = PrimitiveLongCollections.iterator(1, 2, 3);
    NodeLoadingIterator iterator = new NodeLoadingIterator(inner, createMapping(map));
    // when - then
    for (long i = 1; i <= 2; i++) {
        assertTrue(iterator.hasNext());
        assertEquals(map.get(i + (i - 1)), iterator.next());
    }
    assertNoMoreElements(iterator);
}
Also used : PrimitiveLongIterator(org.neo4j.collection.primitive.PrimitiveLongIterator) HashMap(java.util.HashMap) Cursor(org.neo4j.cursor.Cursor) Test(org.junit.Test)

Example 2 with Cursor

use of org.neo4j.cursor.Cursor in project neo4j by neo4j.

the class NodeLoadingIteratorTest method shouldHandleANonEmptyIterator.

@Test
public void shouldHandleANonEmptyIterator() throws Exception {
    // given
    Map<Long, Cursor<NodeItem>> map = new HashMap<>(3);
    map.put(1L, mockCursor());
    map.put(2L, mockCursor());
    map.put(3L, mockCursor());
    PrimitiveLongIterator inner = PrimitiveLongCollections.iterator(1, 2, 3);
    NodeLoadingIterator iterator = new NodeLoadingIterator(inner, createMapping(map));
    // when - then
    for (long i = 1; i <= 3; i++) {
        assertTrue(iterator.hasNext());
        assertEquals(map.get(i), iterator.next());
    }
    assertNoMoreElements(iterator);
}
Also used : PrimitiveLongIterator(org.neo4j.collection.primitive.PrimitiveLongIterator) HashMap(java.util.HashMap) Cursor(org.neo4j.cursor.Cursor) Test(org.junit.Test)

Example 3 with Cursor

use of org.neo4j.cursor.Cursor in project neo4j by neo4j.

the class TwoPhaseNodeForRelationshipLockingTest method returnRelationships.

static void returnRelationships(EntityReadOperations ops, KernelStatement state, long nodeId, final boolean skipFirst, final RelationshipData... relIds) throws EntityNotFoundException {
    NodeItem nodeItem = mock(NodeItem.class);
    when(ops.nodeGetRelationships(state, nodeItem, Direction.BOTH)).thenAnswer(new Answer<Cursor<RelationshipItem>>() {

        private boolean first = skipFirst;

        @Override
        public Cursor<RelationshipItem> answer(InvocationOnMock invocation) throws Throwable {
            try {
                return new Cursor<RelationshipItem>() {

                    private int i = first ? 1 : 0;

                    private RelationshipData relationshipData = null;

                    @Override
                    public boolean next() {
                        boolean next = i < relIds.length;
                        relationshipData = next ? relIds[i++] : null;
                        return next;
                    }

                    @Override
                    public RelationshipItem get() {
                        if (relationshipData == null) {
                            throw new NoSuchElementException();
                        }
                        return relationshipData.asRelationshipItem();
                    }

                    @Override
                    public void close() {
                    }
                };
            } finally {
                first = false;
            }
        }
    });
    when(ops.nodeCursorById(state, nodeId)).thenAnswer(invocationOnMock -> {
        Cursor<NodeItem> cursor = new Cursor<NodeItem>() {

            private int i = 0;

            @Override
            public boolean next() {
                return i++ == 0;
            }

            @Override
            public NodeItem get() {
                if (i != 1) {
                    throw new NoSuchElementException();
                }
                return nodeItem;
            }

            @Override
            public void close() {
            }
        };
        if (!cursor.next()) {
            throw new EntityNotFoundException(EntityType.NODE, nodeId);
        }
        return cursor;
    });
}
Also used : EntityNotFoundException(org.neo4j.kernel.api.exceptions.EntityNotFoundException) Cursor(org.neo4j.cursor.Cursor) NodeItem(org.neo4j.storageengine.api.NodeItem) InvocationOnMock(org.mockito.invocation.InvocationOnMock) RelationshipItem(org.neo4j.storageengine.api.RelationshipItem) NoSuchElementException(java.util.NoSuchElementException)

Aggregations

Cursor (org.neo4j.cursor.Cursor)3 HashMap (java.util.HashMap)2 Test (org.junit.Test)2 PrimitiveLongIterator (org.neo4j.collection.primitive.PrimitiveLongIterator)2 NoSuchElementException (java.util.NoSuchElementException)1 InvocationOnMock (org.mockito.invocation.InvocationOnMock)1 EntityNotFoundException (org.neo4j.kernel.api.exceptions.EntityNotFoundException)1 NodeItem (org.neo4j.storageengine.api.NodeItem)1 RelationshipItem (org.neo4j.storageengine.api.RelationshipItem)1