Coverage Summary for Class: TestColumnNameTranslation (org.umlg.sqlg.test.gremlincompile)
  | Class | Class, % | Method, % | Branch, % | Line, % | 
  | TestColumnNameTranslation | 100%
  
  
    (1/1) | 100%
  
  
    (8/8) | 50%
  
  
    (3/6) | 100%
  
  
    (197/197) | 
 package org.umlg.sqlg.test.gremlincompile;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.umlg.sqlg.structure.SqlgGraph;
 import org.umlg.sqlg.test.BaseTest;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
 import static org.junit.Assert.assertEquals;
 
 /**
  * Date: 2015/08/17
  * Time: 5:10 PM
  */
 public class TestColumnNameTranslation extends BaseTest {
 
     @BeforeClass
     public static void beforeClass() {
         BaseTest.beforeClass();
         if (isPostgres()) {
             configuration.addProperty("distributed", true);
         }
     }
 
     @Test
     public void testInOutInOut2() throws InterruptedException {
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name", "a");
         Vertex b1 = this.sqlgGraph.addVertex(T.label, "B", "name", "b1");
         Vertex b2 = this.sqlgGraph.addVertex(T.label, "B", "name", "b2");
         Vertex b3 = this.sqlgGraph.addVertex(T.label, "B", "name", "b3");
 
         a1.addEdge("a_outB", b1);
         a1.addEdge("a_outB", b2);
         a1.addEdge("a_outB", b3);
 
         this.sqlgGraph.tx().commit();
 
         assertEquals(9, vertexTraversal(this.sqlgGraph, a1).out().in().out().count().next().intValue());
         if (this.sqlgGraph1 != null) {
             Thread.sleep(SLEEP_TIME);
             assertEquals(9, vertexTraversal(this.sqlgGraph1, a1).out().in().out().count().next().intValue());
         }
     }
 
     @Test
     public void testNameWithMultipleSameLabel() throws InterruptedException {
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name", "a1");
         Vertex a2 = this.sqlgGraph.addVertex(T.label, "A", "name", "a2");
         Vertex a3 = this.sqlgGraph.addVertex(T.label, "A", "name", "a3");
         Vertex b1 = this.sqlgGraph.addVertex(T.label, "B", "name", "b1");
         Vertex b2 = this.sqlgGraph.addVertex(T.label, "B", "name", "b2");
         Vertex b3 = this.sqlgGraph.addVertex(T.label, "B", "name", "b3");
         a1.addEdge("ab", b1);
         a2.addEdge("ab", b2);
         a3.addEdge("ab", b3);
         this.sqlgGraph.tx().commit();
 
         testNameWithMultipleSameLabel_assert(this.sqlgGraph, a1, a2, a3);
         if (this.sqlgGraph1 != null) {
             Thread.sleep(SLEEP_TIME);
             testNameWithMultipleSameLabel_assert(this.sqlgGraph1, a1, a2, a3);
         }
 
     }
 
     private void testNameWithMultipleSameLabel_assert(SqlgGraph sqlgGraph, Vertex a1, Vertex a2, Vertex a3) {
         List<Map<String, Object>> result = sqlgGraph.traversal()
                 .V().as("a")
                 .out().as("b")
                 .in().as("c")
                 .select(Pop.all, "a", "a", "a")
                 .toList();
         assertEquals(3, result.size());
         Object o1 = result.get(0).get("a");
         Assert.assertTrue(o1 instanceof List);
         @SuppressWarnings("unchecked") List<Vertex> ass = (List) o1;
         assertEquals(a1, ass.get(0));
         assertEquals("a1", ass.get(0).value("name"));
 
         Object o2 = result.get(1).get("a");
         Assert.assertTrue(o2 instanceof List);
         ass = (List) o2;
         assertEquals(a2, ass.get(0));
         assertEquals("a2", ass.get(0).value("name"));
 
 
         Object o3 = result.get(2).get("a");
         Assert.assertTrue(o3 instanceof List);
         ass = (List) o3;
         assertEquals(a3, ass.get(0));
         assertEquals("a3", ass.get(0).value("name"));
     }
 
     @Test
     public void testShortName() {
         Graph g = this.sqlgGraph;
         Vertex a1 = g.addVertex(T.label, "A", "name", "a1");
         Vertex b1 = g.addVertex(T.label, "B", "name", "b1");
         Vertex b2 = g.addVertex(T.label, "B", "name", "b2");
         Edge e1 = a1.addEdge("a_b", b1);
         a1.addEdge("a_b", b2);
         Vertex c1 = g.addVertex(T.label, "C", "name", "c1");
         Vertex c2 = g.addVertex(T.label, "C", "name", "c2");
         Vertex c3 = g.addVertex(T.label, "C", "name", "c3");
         Edge bc1 = b1.addEdge("b_c", c1);
         Edge bc2 = b1.addEdge("b_c", c2);
         Edge bc3 = b1.addEdge("b_c", c3);
 
         Vertex d1 = g.addVertex(T.label, "D", "name", "d1");
         Vertex d2 = g.addVertex(T.label, "D", "name", "d2");
         Vertex d3 = g.addVertex(T.label, "D", "name", "d3");
 
         Edge bd1 = b1.addEdge("b_d", d1);
         Edge bd2 = b1.addEdge("b_d", d2);
         Edge bd3 = b1.addEdge("b_d", d3);
 
         this.sqlgGraph.tx().commit();
 
         testShortName_assert(g, a1, b1, e1, c1, c2, c3, bc1, bc2, bc3, d1, d2, d3, bd1, bd2, bd3);
     }
 
     @SuppressWarnings("SuspiciousMethodCalls")
     private void testShortName_assert(Graph g, Vertex a1, Vertex b1, Edge e1, Vertex c1, Vertex c2, Vertex c3, Edge bc1, Edge bc2, Edge bc3, Vertex d1, Vertex d2, Vertex d3, Edge bd1, Edge bd2, Edge bd3) {
         List<Map<String, Object>> result = g.traversal().V(a1)
                 .outE("a_b").as("ab")
                 .inV().as("B")
                 .outE().as("bcd")
                 .inV().as("CD")
                 .inE().as("dcb")
                 .inV().as("CD2")
                 .select("ab", "B", "bcd", "CD", "dcb", "CD2").toList();
         Assert.assertFalse(result.isEmpty());
         Assert.assertEquals(6, result.size());
 
         Assert.assertEquals(e1, result.get(0).get("ab"));
         Assert.assertEquals(e1, result.get(1).get("ab"));
         Assert.assertEquals(e1, result.get(2).get("ab"));
         Assert.assertEquals(e1, result.get(3).get("ab"));
         Assert.assertEquals(e1, result.get(4).get("ab"));
         Assert.assertEquals(e1, result.get(5).get("ab"));
 
         Assert.assertEquals(b1, result.get(0).get("B"));
         Assert.assertEquals("b1", ((Vertex) result.get(0).get("B")).value("name"));
         Assert.assertEquals(b1, result.get(1).get("B"));
         Assert.assertEquals("b1", ((Vertex) result.get(1).get("B")).value("name"));
         Assert.assertEquals(b1, result.get(2).get("B"));
         Assert.assertEquals("b1", ((Vertex) result.get(2).get("B")).value("name"));
         Assert.assertEquals(b1, result.get(3).get("B"));
         Assert.assertEquals("b1", ((Vertex) result.get(3).get("B")).value("name"));
         Assert.assertEquals(b1, result.get(4).get("B"));
         Assert.assertEquals("b1", ((Vertex) result.get(4).get("B")).value("name"));
         Assert.assertEquals(b1, result.get(5).get("B"));
         Assert.assertEquals("b1", ((Vertex) result.get(5).get("B")).value("name"));
 
         List<Edge> bcds = new ArrayList<>(Arrays.asList(bc1, bc2, bc3, bd1, bd2, bd3));
         Assert.assertTrue(bcds.contains(result.get(0).get("bcd")));
         bcds.remove(result.get(0).get("bcd"));
         Assert.assertTrue(bcds.contains(result.get(1).get("bcd")));
         bcds.remove(result.get(1).get("bcd"));
         Assert.assertTrue(bcds.contains(result.get(2).get("bcd")));
         bcds.remove(result.get(2).get("bcd"));
         Assert.assertTrue(bcds.contains(result.get(3).get("bcd")));
         bcds.remove(result.get(3).get("bcd"));
         Assert.assertTrue(bcds.contains(result.get(4).get("bcd")));
         bcds.remove(result.get(4).get("bcd"));
         Assert.assertTrue(bcds.contains(result.get(5).get("bcd")));
         bcds.remove(result.get(5).get("bcd"));
         Assert.assertTrue(bcds.isEmpty());
 
         List<Vertex> cds = new ArrayList<>(Arrays.asList(c1, c2, c3, d1, d2, d3));
         List<String> cdsNames = new ArrayList<>(Arrays.asList("c1", "c2", "c3", "d1", "d2", "d3"));
         Assert.assertTrue(cds.contains(result.get(0).get("CD")));
         cds.remove(result.get(0).get("CD"));
         Assert.assertTrue(cdsNames.contains(((Vertex) result.get(0).get("CD")).value("name")));
         cdsNames.remove(((Vertex) result.get(0).get("CD")).value("name"));
 
         Assert.assertTrue(cds.contains(result.get(1).get("CD")));
         cds.remove(result.get(1).get("CD"));
         Assert.assertTrue(cdsNames.contains(((Vertex) result.get(1).get("CD")).value("name")));
         cdsNames.remove(((Vertex) result.get(1).get("CD")).value("name"));
 
         Assert.assertTrue(cds.contains(result.get(2).get("CD")));
         cds.remove(result.get(2).get("CD"));
         Assert.assertTrue(cdsNames.contains(((Vertex) result.get(2).get("CD")).value("name")));
         cdsNames.remove(((Vertex) result.get(2).get("CD")).value("name"));
 
         Assert.assertTrue(cds.contains(result.get(3).get("CD")));
         cds.remove(result.get(3).get("CD"));
         Assert.assertTrue(cdsNames.contains(((Vertex) result.get(3).get("CD")).value("name")));
         cdsNames.remove(((Vertex) result.get(3).get("CD")).value("name"));
 
         Assert.assertTrue(cds.contains(result.get(4).get("CD")));
         cds.remove(result.get(4).get("CD"));
         Assert.assertTrue(cdsNames.contains(((Vertex) result.get(4).get("CD")).value("name")));
         cdsNames.remove(((Vertex) result.get(4).get("CD")).value("name"));
 
         Assert.assertTrue(cds.contains(result.get(5).get("CD")));
         cds.remove(result.get(5).get("CD"));
         Assert.assertTrue(cdsNames.contains(((Vertex) result.get(5).get("CD")).value("name")));
         cdsNames.remove(((Vertex) result.get(5).get("CD")).value("name"));
         Assert.assertTrue(cds.isEmpty());
         Assert.assertTrue(cdsNames.isEmpty());
 
         bcds = new ArrayList<>(Arrays.asList(bc1, bc2, bc3, bd1, bd2, bd3));
         Assert.assertTrue(bcds.contains(result.get(0).get("dcb")));
         bcds.remove(result.get(0).get("dcb"));
         Assert.assertTrue(bcds.contains(result.get(1).get("dcb")));
         bcds.remove(result.get(1).get("dcb"));
         Assert.assertTrue(bcds.contains(result.get(2).get("dcb")));
         bcds.remove(result.get(2).get("dcb"));
         Assert.assertTrue(bcds.contains(result.get(3).get("dcb")));
         bcds.remove(result.get(3).get("dcb"));
         Assert.assertTrue(bcds.contains(result.get(4).get("dcb")));
         bcds.remove(result.get(4).get("dcb"));
         Assert.assertTrue(bcds.contains(result.get(5).get("dcb")));
         bcds.remove(result.get(5).get("dcb"));
         Assert.assertTrue(bcds.isEmpty());
 
         cds = new ArrayList<>(Arrays.asList(c1, c2, c3, d1, d2, d3));
         Assert.assertTrue(cds.contains(result.get(0).get("CD2")));
         cds.remove(result.get(0).get("CD2"));
         Assert.assertTrue(cds.contains(result.get(1).get("CD2")));
         cds.remove(result.get(1).get("CD2"));
         Assert.assertTrue(cds.contains(result.get(2).get("CD2")));
         cds.remove(result.get(2).get("CD2"));
         Assert.assertTrue(cds.contains(result.get(3).get("CD2")));
         cds.remove(result.get(3).get("CD2"));
         Assert.assertTrue(cds.contains(result.get(4).get("CD2")));
         cds.remove(result.get(4).get("CD2"));
         Assert.assertTrue(cds.contains(result.get(5).get("CD2")));
         cds.remove(result.get(5).get("CD2"));
         Assert.assertTrue(cds.isEmpty());
     }
 
     @Test
     public void testLongName() {
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "AAAAAAAAAAAAAAAAAAAAAAAAA");
         Vertex b1 = this.sqlgGraph.addVertex(T.label, "BBBBBBBBBBBBBBBBBBBBBBBBB");
         Vertex b2 = this.sqlgGraph.addVertex(T.label, "BBBBBBBBBBBBBBBBBBBBBBBBB");
         Edge e1 = a1.addEdge("aaaaaaaaaaaaaaaaaaaaaa_bbbbbbbbbbbbbbbbbbbb", b1);
         a1.addEdge("aaaaaaaaaaaaaaaaaaaaaa_bbbbbbbbbbbbbbbbbbbb", b2);
         Vertex c1 = this.sqlgGraph.addVertex(T.label, "CCCCCCCCCCCCCCCCCCCCCCCCC");
         Vertex c2 = this.sqlgGraph.addVertex(T.label, "CCCCCCCCCCCCCCCCCCCCCCCCC");
         Vertex c3 = this.sqlgGraph.addVertex(T.label, "CCCCCCCCCCCCCCCCCCCCCCCCC");
         b1.addEdge("bbbbbbbbbbbbbbbbbbbbbb_cccccccccccccccc", c1);
         b1.addEdge("bbbbbbbbbbbbbbbbbbbbbb_cccccccccccccccc", c2);
         b1.addEdge("bbbbbbbbbbbbbbbbbbbbbb_cccccccccccccccc", c3);
 
         Vertex d1 = this.sqlgGraph.addVertex(T.label, "DDDDDDDDDDDDDDDDDDDDDDDDD");
         Vertex d2 = this.sqlgGraph.addVertex(T.label, "DDDDDDDDDDDDDDDDDDDDDDDDD");
         Vertex d3 = this.sqlgGraph.addVertex(T.label, "DDDDDDDDDDDDDDDDDDDDDDDDD");
 
         b1.addEdge("bbbbbbbbbbbbbbbbbbbbbb_dddddddddddddddd", d1);
         b1.addEdge("bbbbbbbbbbbbbbbbbbbbbb_dddddddddddddddd", d2);
         b1.addEdge("bbbbbbbbbbbbbbbbbbbbbb_dddddddddddddddd", d3);
 
         this.sqlgGraph.tx().commit();
         List<Map<String, Object>> gt = this.sqlgGraph.traversal().V(a1)
                 .outE("aaaaaaaaaaaaaaaaaaaaaa_bbbbbbbbbbbbbbbbbbbb").as("ab")
                 .inV().as("B")
                 .outE().as("bcd")
                 .inV().as("CD")
                 .inE().as("INE")
                 .inV().as("CD2")
                 .select("ab", "B", "bcd", "CD", "INE", "CD2").toList();
         Assert.assertFalse(gt.isEmpty());
     }
 }