package org.mwg.structure.tree;

import org.junit.Assert;
import org.junit.Test;
import org.mwg.*;
import org.mwg.struct.EGraph;
import org.mwg.struct.ENode;
import org.mwg.structure.StructurePlugin;
import org.mwg.structure.util.VolatileResult;

import java.util.Random;


public class TestSort {

    @Test
    public void testsort(){
        final Graph graph = new GraphBuilder()
                .withPlugin(new StructurePlugin())
                .withMemorySize(10000)
                .build();
        graph.connect(new Callback<Boolean>() {
            @Override
            public void on(Boolean result) {
                int max = 20;
                int maxinsert=200;
                Random random = new Random(1234);


                for (int i = 0; i < max; i++) {
                    int capacity = i+50;
                    Node kmf = graph.newNode(0, 0);
                    EGraph egraph = (EGraph) kmf.getOrCreate("test", Type.EGRAPH);
                    ENode root = egraph.newNode();
                    egraph.setRoot(root);
                    VolatileResult vr = new VolatileResult(root, capacity, -1);

                    for(int k=0;k<maxinsert;k++){
                        vr.insert(new double[]{k},k,random.nextDouble());
                    }
                    vr.sort(true);

                    for(int k=0;k<vr.size()-1;k++){
                        Assert.assertTrue(vr.distance(k)<vr.distance(k+1));
                    }

                    vr.sort(false);
                    for(int k=0;k<vr.size()-1;k++){
                        Assert.assertTrue(vr.distance(k)>vr.distance(k+1));
                    }
                    kmf.free();
                    graph.save(null);
                }

            }
        });



    }
}

@@ -328,16 +328,17 @@
 stsort()
+ 
 %7B%0A      
@@ -668,17 +668,19 @@
 axinsert
-=
+ = 
 200;%0A   
@@ -719,16 +719,50 @@
  Random(
+);%0A                random.setSeed(
 1234);%0A%0A
@@ -846,17 +846,19 @@
 city = i
-+
+ + 
 50;%0A    
@@ -1185,27 +1185,33 @@
      for
+ 
 (int k
-=0;k%3C
+ = 0; k %3C 
 maxinser
@@ -1212,20 +1212,22 @@
 xinsert;
+ 
 k++)
+ 
 %7B%0A      
@@ -1274,10 +1274,12 @@
 %7Bk%7D,
+ 
 k,
+ 
 rand
@@ -1373,35 +1373,41 @@
          for
+ 
 (int k
-=0;k%3C
+ = 0; k %3C 
 vr.size()-1;
@@ -1395,39 +1395,43 @@
 0; k %3C vr.size()
--
+ - 
 1;
+ 
 k++)
+ 
 %7B%0A              
@@ -1440,33 +1440,23 @@
         
-Assert.
 assert
-True
+ 
 (vr.dist
@@ -1462,17 +1462,19 @@
 tance(k)
-%3C
+ %3C 
 vr.dista
@@ -1470,33 +1470,35 @@
  %3C vr.distance(k
-+
+ + 
 1));%0A           
@@ -1572,19 +1572,25 @@
  for
+ 
 (int k
-=0;k%3C
+ = 0; k %3C 
 vr.s
@@ -1598,15 +1598,19 @@
 ze()
--
+ - 
 1;
+ 
 k++)
+ 
 %7B%0A  
@@ -1635,25 +1635,15 @@
     
-Assert.
 assert
-True
+ 
 (vr.
@@ -1653,17 +1653,19 @@
 tance(k)
-%3E
+ %3E 
 vr.dista
@@ -1669,17 +1669,19 @@
 stance(k
-+
+ + 
 1));%0A   
@@ -1816,17 +1816,16 @@
   %7D);%0A%0A%0A
-%0A
     %7D%0A%7D%0A

fix compile