22
33import org .junit .Rule ;
44import org .junit .Test ;
5- import org .neo4j .graphdb .Direction ;
6- import org .neo4j .graphdb .Relationship ;
7- import org .neo4j .graphdb .RelationshipType ;
85import org .neo4j .graphdb .Transaction ;
96import org .neo4j .kernel .internal .GraphDatabaseAPI ;
107import org .neo4j .logging .NullLog ;
2017import static org .junit .Assert .assertEquals ;
2118import static org .junit .Assert .assertThat ;
2219
23- public class SequentialSimilarityExporterTest {
20+ public class SimilarityExporterTest {
2421 @ Rule
2522 public final ImpermanentDatabaseRule DB = new ImpermanentDatabaseRule ();
2623
27- public static final String RELATIONSHIP_TYPE = "SIMILAR" ;
28- public static final String PROPERTY_NAME = "score" ;
24+ private static final String RELATIONSHIP_TYPE = "SIMILAR" ;
25+ private static final String PROPERTY_NAME = "score" ;
26+
27+ @ Test
28+ public void createNothing () {
29+ GraphDatabaseAPI api = DB .getGraphDatabaseAPI ();
30+ createNodes (api , 2 );
31+
32+ SequentialSimilarityExporter exporter = new SequentialSimilarityExporter (api , NullLog .getInstance (), RELATIONSHIP_TYPE , PROPERTY_NAME );
33+
34+ Stream <SimilarityResult > similarityPairs = Stream .empty ();
35+
36+ int batches = exporter .export (similarityPairs , 1 );
37+ assertEquals (0 , batches );
38+
39+ try (Transaction tx = api .beginTx ()) {
40+ List <SimilarityRelationship > allRelationships = getSimilarityRelationships (api );
41+ assertThat (allRelationships , hasSize (0 ));
42+ }
43+ }
2944
3045 @ Test
3146 public void createOneRelationship () {
@@ -40,9 +55,9 @@ public void createOneRelationship() {
4055 assertEquals (1 , batches );
4156
4257 try (Transaction tx = api .beginTx ()) {
43- Relationship relationship = api . getNodeById ( 0 ). getSingleRelationship ( RelationshipType . withName ( RELATIONSHIP_TYPE ), Direction . OUTGOING );
44- assertEquals ( 1 , relationship . getEndNodeId ( ));
45- assertEquals ( 0.5 , ( Double ) relationship . getProperty ( PROPERTY_NAME ), 0.01 );
58+ List < SimilarityRelationship > allRelationships = getSimilarityRelationships ( api );
59+ assertThat ( allRelationships , hasSize ( 1 ));
60+ assertThat ( allRelationships , hasItems ( new SimilarityRelationship ( 0 , 1 , 0.5 )) );
4661 }
4762 }
4863
@@ -62,16 +77,46 @@ public void multipleBatches() {
6277 assertEquals (2 , batches );
6378
6479 try (Transaction tx = api .beginTx ()) {
65- List <SimilarityRelationship > allRelationships = api .getAllRelationships ().stream ()
66- .map (relationship -> new SimilarityRelationship (relationship .getStartNodeId (), relationship .getEndNodeId (), (double )relationship .getProperty (PROPERTY_NAME )))
67- .collect (Collectors .toList ());
80+ List <SimilarityRelationship > allRelationships = getSimilarityRelationships (api );
6881
6982 assertThat (allRelationships , hasSize (2 ));
7083 assertThat (allRelationships , hasItems (new SimilarityRelationship (0 , 1 , 0.5 )));
7184 assertThat (allRelationships , hasItems (new SimilarityRelationship (2 , 3 , 0.7 )));
7285 }
7386 }
7487
88+ @ Test
89+ public void smallerThanBatchSize () {
90+ GraphDatabaseAPI api = DB .getGraphDatabaseAPI ();
91+ createNodes (api , 5 );
92+
93+ SequentialSimilarityExporter exporter = new SequentialSimilarityExporter (api , NullLog .getInstance (), RELATIONSHIP_TYPE , PROPERTY_NAME );
94+
95+ Stream <SimilarityResult > similarityPairs = Stream .of (
96+ new SimilarityResult (0 , 1 , -1 , -1 , -1 , 0.5 ),
97+ new SimilarityResult (2 , 3 , -1 , -1 , -1 , 0.7 ),
98+ new SimilarityResult (3 , 4 , -1 , -1 , -1 , 0.7 )
99+ );
100+
101+ int batches = exporter .export (similarityPairs , 10 );
102+ assertEquals (1 , batches );
103+
104+ try (Transaction tx = api .beginTx ()) {
105+ List <SimilarityRelationship > allRelationships = getSimilarityRelationships (api );
106+
107+ assertThat (allRelationships , hasSize (3 ));
108+ assertThat (allRelationships , hasItems (new SimilarityRelationship (0 , 1 , 0.5 )));
109+ assertThat (allRelationships , hasItems (new SimilarityRelationship (2 , 3 , 0.7 )));
110+ assertThat (allRelationships , hasItems (new SimilarityRelationship (3 , 4 , 0.7 )));
111+ }
112+ }
113+
114+ private List <SimilarityRelationship > getSimilarityRelationships (GraphDatabaseAPI api ) {
115+ return api .getAllRelationships ().stream ()
116+ .map (relationship -> new SimilarityRelationship (relationship .getStartNodeId (), relationship .getEndNodeId (), (double )relationship .getProperty (PROPERTY_NAME )))
117+ .collect (Collectors .toList ());
118+ }
119+
75120 static class SimilarityRelationship {
76121 private final long startNodeId ;
77122 private final long endNodeId ;
0 commit comments