Search in sources :

Example 1 with ReadNodeAnswer

use of org.neo4j.kernel.impl.store.RecordStoreUtil.ReadNodeAnswer in project neo4j by neo4j.

the class OwningNodeRelationshipChainTest method shouldFindBothChainsThatTheRelationshipRecordShouldBelongTo.

@Test
public void shouldFindBothChainsThatTheRelationshipRecordShouldBelongTo() throws Exception {
    // given
    long node1 = 101, node1Rel = 1001;
    long node2 = 201, node2Rel = 2001;
    long sharedRel = 1000;
    int relType = 0;
    RecordSet<RelationshipRecord> node1RelChain = RecordSet.asSet(new RelationshipRecord(node1Rel, node1, node1 - 1, relType), new RelationshipRecord(sharedRel, node1, node2, relType), new RelationshipRecord(node1Rel + 1, node1 + 1, node1, relType));
    RecordSet<RelationshipRecord> node2RelChain = RecordSet.asSet(new RelationshipRecord(node2Rel, node2 - 1, node2, relType), new RelationshipRecord(sharedRel, node1, node2, relType), new RelationshipRecord(node2Rel + 1, node2, node2 + 1, relType));
    @SuppressWarnings("unchecked") RecordStore<NodeRecord> recordStore = mock(RecordStore.class);
    when(recordStore.getRecord(eq(node1), any(NodeRecord.class), any(RecordLoad.class))).thenAnswer(new ReadNodeAnswer(false, node1Rel, NO_NEXT_PROPERTY.intValue()));
    when(recordStore.getRecord(eq(node2), any(NodeRecord.class), any(RecordLoad.class))).thenAnswer(new ReadNodeAnswer(false, node2Rel, NO_NEXT_PROPERTY.intValue()));
    when(recordStore.newRecord()).thenReturn(new NodeRecord(-1));
    RelationshipChainExplorer relationshipChainExplorer = mock(RelationshipChainExplorer.class);
    when(relationshipChainExplorer.followChainFromNode(node1, node1Rel)).thenReturn(node1RelChain);
    when(relationshipChainExplorer.followChainFromNode(node2, node2Rel)).thenReturn(node2RelChain);
    OwningNodeRelationshipChain owningChainFinder = new OwningNodeRelationshipChain(relationshipChainExplorer, recordStore);
    // when
    RecordSet<RelationshipRecord> recordsInChains = owningChainFinder.findRelationshipChainsThatThisRecordShouldBelongTo(new RelationshipRecord(sharedRel, node1, node2, relType));
    // then
    assertThat(recordsInChains, containsAllRecords(node1RelChain));
    assertThat(recordsInChains, containsAllRecords(node2RelChain));
}
Also used : NodeRecord(org.neo4j.kernel.impl.store.record.NodeRecord) RelationshipRecord(org.neo4j.kernel.impl.store.record.RelationshipRecord) RecordLoad(org.neo4j.kernel.impl.store.record.RecordLoad) ReadNodeAnswer(org.neo4j.kernel.impl.store.RecordStoreUtil.ReadNodeAnswer) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)1 ReadNodeAnswer (org.neo4j.kernel.impl.store.RecordStoreUtil.ReadNodeAnswer)1 NodeRecord (org.neo4j.kernel.impl.store.record.NodeRecord)1 RecordLoad (org.neo4j.kernel.impl.store.record.RecordLoad)1 RelationshipRecord (org.neo4j.kernel.impl.store.record.RelationshipRecord)1