@@ -389,6 +389,57 @@ public void testDiffRemoveAllNodes() {
389389 Assert .assertSame (diff .getAddedNodes (), NodeIterable .EMPTY );
390390 }
391391
392+ @ Test
393+ public void testDiffRemovedNodeNotReportedTwice () {
394+ GraphStore store = GraphGenerator .generateSmallGraphStore ();
395+ GraphObserverImpl graphObserver = store .createGraphObserver (store , true );
396+ graphObserver .hasGraphChanged ();
397+
398+ Node removed = store .getNodes ().toArray ()[0 ];
399+ store .removeNode (removed );
400+
401+ // First diff: removal is reported
402+ graphObserver .hasGraphChanged ();
403+ GraphDiff diff1 = graphObserver .getDiff ();
404+ Assert .assertEquals (diff1 .getRemovedNodes ().toArray ().length , 1 );
405+
406+ // Make an unrelated change so a second diff is triggered
407+ store .addNode (store .factory .newNode ("extra" ));
408+
409+ // Second diff: the already-reported removal must NOT appear again
410+ graphObserver .hasGraphChanged ();
411+ GraphDiff diff2 = graphObserver .getDiff ();
412+ for (Node n : diff2 .getRemovedNodes ()) {
413+ Assert .assertNotSame (n , removed );
414+ }
415+ }
416+
417+ @ Test
418+ public void testDiffRemovedEdgeNotReportedTwice () {
419+ GraphStore store = GraphGenerator .generateSmallGraphStore ();
420+ GraphObserverImpl graphObserver = store .createGraphObserver (store , true );
421+ graphObserver .hasGraphChanged ();
422+
423+ Edge removed = store .getEdges ().toArray ()[0 ];
424+ store .removeEdge (removed );
425+
426+ // First diff: removal is reported
427+ graphObserver .hasGraphChanged ();
428+ GraphDiff diff1 = graphObserver .getDiff ();
429+ Assert .assertEquals (diff1 .getRemovedEdges ().toArray ().length , 1 );
430+
431+ // Make an unrelated change so a second diff is triggered
432+ Node [] ns = store .getNodes ().toArray ();
433+ store .addEdge (store .factory .newEdge ("extra" , ns [0 ], ns [1 ], 0 , 1.0 , true ));
434+
435+ // Second diff: the already-reported removal must NOT appear again
436+ graphObserver .hasGraphChanged ();
437+ GraphDiff diff2 = graphObserver .getDiff ();
438+ for (Edge e : diff2 .getRemovedEdges ()) {
439+ Assert .assertNotSame (e , removed );
440+ }
441+ }
442+
392443 @ Test
393444 public void testDiffReplaceNode () {
394445 GraphStore store = GraphGenerator .generateSmallGraphStore ();
0 commit comments