Coverage Summary for Class: TestLocalDate (org.umlg.sqlg.test.localdate)

Class Class, % Method, % Branch, % Line, %
TestLocalDate 100% (1/1) 100% (18/18) 27.8% (10/36) 100% (286/286)


 package org.umlg.sqlg.test.localdate;
 
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Assert;
 import org.junit.Test;
 import org.umlg.sqlg.structure.SqlgGraph;
 import org.umlg.sqlg.test.BaseTest;
 
 import java.time.*;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
 
 /**
  * Created by pieter on 2015/09/05.
  */
 public class TestLocalDate extends BaseTest {
 
     @Test
     public void testLocalDateTime() {
         LocalDateTime now = LocalDateTime.now();
         now = now.truncatedTo(ChronoUnit.MILLIS);
         this.sqlgGraph.addVertex(T.label, "A", "dateTime", now);
         this.sqlgGraph.tx().commit();
 
         //Create a new sqlgGraph
         try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
             List<? extends Property<?>> properties = sqlgGraph1.traversal().V().hasLabel("A").properties("dateTime").toList();
             Assert.assertEquals(1, properties.size());
             Assert.assertNotNull(properties.get(0).value());
             Assert.assertEquals(now, properties.get(0).value());
         }
     }
 
     @Test
     public void testLocalDateTimeUpdate() {
         LocalDateTime now = LocalDateTime.now();
         now = now.truncatedTo(ChronoUnit.MILLIS);
         Vertex v = this.sqlgGraph.addVertex(T.label, "A", "dateTime", now);
         this.sqlgGraph.tx().commit();
         v.property("dateTime", now.plusHours(1));
         this.sqlgGraph.tx().commit();
 
         //Create a new sqlgGraph
         try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
             List<? extends Property<?>> properties = sqlgGraph1.traversal().V().hasLabel("A").properties("dateTime").toList();
             Assert.assertEquals(1, properties.size());
             Assert.assertNotNull(properties.get(0).value());
             Assert.assertEquals(now.plusHours(1), properties.get(0).value());
         }
     }
 
     @Test
     public void testLocalDate() {
         LocalDate now = LocalDate.now();
         this.sqlgGraph.addVertex(T.label, "A", "date", now);
         this.sqlgGraph.tx().commit();
 
         //Create a new sqlgGraph
         try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
             List<? extends Property<?>> properties = sqlgGraph1.traversal().V().hasLabel("A").properties("date").toList();
             Assert.assertEquals(1, properties.size());
             Assert.assertNotNull(properties.get(0).value());
             Assert.assertEquals(now, properties.get(0).value());
         }
     }
 
     @Test
     public void testLocalTime() {
         LocalTime now = LocalTime.now();
         this.sqlgGraph.addVertex(T.label, "A", "time", now);
         this.sqlgGraph.tx().commit();
 
         //Create a new sqlgGraph
         try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
             List<? extends Property<LocalTime>> properties = sqlgGraph1.traversal().V().hasLabel("A").<LocalTime>properties("time").toList();
             Assert.assertEquals(1, properties.size());
             Assert.assertNotNull(properties.get(0).value());
             LocalTime value = properties.get(0).value();
             Assert.assertEquals(now.toSecondOfDay(), value.toSecondOfDay());
         }
     }
 
     @Test
     public void testZonedDateTime() {
         ZoneId zoneIdShanghai = ZoneId.of("Asia/Shanghai");
         ZonedDateTime zonedDateTimeAGT = ZonedDateTime.of(LocalDateTime.now(), zoneIdShanghai);
         zonedDateTimeAGT = zonedDateTimeAGT.truncatedTo(ChronoUnit.MILLIS);
         this.sqlgGraph.addVertex(T.label, "A", "zonedDateTime", zonedDateTimeAGT);
         this.sqlgGraph.tx().commit();
 
         //Create a new sqlgGraph
         try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
             List<? extends Property<ZonedDateTime>> properties = sqlgGraph1.traversal().V().hasLabel("A").<ZonedDateTime>properties("zonedDateTime").toList();
             Assert.assertEquals(1, properties.size());
             Assert.assertNotNull(properties.get(0).value());
             ZonedDateTime value = properties.get(0).value();
             Assert.assertEquals(zonedDateTimeAGT, value);
         }
     }
 
     @Test
     public void testDuration() {
         Duration duration = Duration.ofHours(5);
         this.sqlgGraph.addVertex(T.label, "A", "duration", duration);
         this.sqlgGraph.tx().commit();
 
         //Create a new sqlgGraph
         try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
             List<? extends Property<?>> properties = sqlgGraph1.traversal().V().hasLabel("A").properties("duration").toList();
             Assert.assertEquals(1, properties.size());
             Assert.assertNotNull(properties.get(0).value());
             Assert.assertEquals(duration, properties.get(0).value());
         }
     }
 
     @Test
     public void testPeriod() {
         Period period = Period.of(2016, 5, 5);
         this.sqlgGraph.addVertex(T.label, "A", "period", period);
         this.sqlgGraph.tx().commit();
 
         //Create a new sqlgGraph
         try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
             List<? extends Property<?>> properties = sqlgGraph1.traversal().V().hasLabel("A").properties("period").toList();
             Assert.assertEquals(1, properties.size());
             Assert.assertNotNull(properties.get(0).value());
             Assert.assertEquals(period, properties.get(0).value());
         }
     }
 
     @Test
     public void testLocalDateVertex() {
         ZoneId zoneIdShanghai = ZoneId.of("Asia/Shanghai");
         ZonedDateTime zonedDateTimeAGT = ZonedDateTime.of(LocalDateTime.now(), zoneIdShanghai);
         zonedDateTimeAGT = zonedDateTimeAGT.truncatedTo(ChronoUnit.MILLIS);
 
         Vertex a4 = this.sqlgGraph.addVertex(T.label, "A", "andReBornAgain", zonedDateTimeAGT);
         LocalDate now = LocalDate.now();
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "born", now);
         LocalDateTime now1 = LocalDateTime.now();
         now1 = now1.truncatedTo(ChronoUnit.MILLIS);
         Vertex a2 = this.sqlgGraph.addVertex(T.label, "A", "bornAgain", now1);
         ZoneId zoneIdHarare = ZoneId.of("Africa/Harare");
         ZonedDateTime zonedDateTimeAGTHarare = ZonedDateTime.of(LocalDateTime.now(), zoneIdHarare);
         zonedDateTimeAGTHarare = zonedDateTimeAGTHarare.truncatedTo(ChronoUnit.MILLIS);
         Vertex a3 = this.sqlgGraph.addVertex(T.label, "A", "andBornAgain", zonedDateTimeAGTHarare);
         LocalTime now2 = LocalTime.now();
         now2 = now2.truncatedTo(ChronoUnit.MILLIS);
         Vertex a5 = this.sqlgGraph.addVertex(T.label, "A", "time", now2);
         this.sqlgGraph.tx().commit();
 
         LocalDate ld = this.sqlgGraph.traversal().V(a1.id()).next().value("born");
         Assert.assertEquals(now, ld);
         LocalDateTime ldt = this.sqlgGraph.traversal().V(a2.id()).next().value("bornAgain");
         Assert.assertEquals(now1, ldt);
         ZonedDateTime zonedDateTime = this.sqlgGraph.traversal().V(a3.id()).next().value("andBornAgain");
         Assert.assertEquals(zonedDateTimeAGTHarare, zonedDateTime);
         zonedDateTime = this.sqlgGraph.traversal().V(a4.id()).next().value("andReBornAgain");
         Assert.assertEquals(zonedDateTimeAGT, zonedDateTime);
         LocalTime localTime = this.sqlgGraph.traversal().V(a5.id()).next().value("time");
         Assert.assertEquals(now2.toSecondOfDay(), localTime.toSecondOfDay());
     }
 
 
     @Test
     public void testLocalDateManyTimes() {
         ZoneId zoneIdShanghai = ZoneId.of("Asia/Shanghai");
         ZonedDateTime zonedDateTimeAGT = ZonedDateTime.of(LocalDateTime.now(), zoneIdShanghai);
         zonedDateTimeAGT = zonedDateTimeAGT.truncatedTo(ChronoUnit.MILLIS);
         ZoneId zoneIdHarare = ZoneId.of("Africa/Harare");
         ZonedDateTime zonedDateTimeAGTHarare = ZonedDateTime.of(LocalDateTime.now(), zoneIdHarare);
         zonedDateTimeAGTHarare = zonedDateTimeAGTHarare.truncatedTo(ChronoUnit.MILLIS);
         LocalDate now = LocalDate.now();
         LocalDateTime now1 = LocalDateTime.now();
         now1 = now1.truncatedTo(ChronoUnit.MILLIS);
 
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A",
                 "created1", now,
                 "created2", now1,
                 "created3", zonedDateTimeAGT,
                 "created4", zonedDateTimeAGTHarare
         );
         this.sqlgGraph.tx().commit();
         Assert.assertEquals(now, this.sqlgGraph.traversal().V(a1.id()).next().value("created1"));
         Assert.assertEquals(now1, this.sqlgGraph.traversal().V(a1.id()).next().value("created2"));
         Assert.assertEquals(zonedDateTimeAGT, this.sqlgGraph.traversal().V(a1.id()).next().value("created3"));
         Assert.assertEquals(zonedDateTimeAGTHarare, this.sqlgGraph.traversal().V(a1.id()).next().value("created4"));
     }
 
     @Test
     public void testLocalDateEdge() {
         ZoneId zoneIdShanghai = ZoneId.of("Asia/Shanghai");
         ZonedDateTime zonedDateTimeAGT = ZonedDateTime.of(LocalDateTime.now(), zoneIdShanghai);
         zonedDateTimeAGT = zonedDateTimeAGT.truncatedTo(ChronoUnit.MILLIS);
         ZoneId zoneIdHarare = ZoneId.of("Africa/Harare");
         ZonedDateTime zonedDateTimeAGTHarare = ZonedDateTime.of(LocalDateTime.now(), zoneIdHarare);
         zonedDateTimeAGTHarare = zonedDateTimeAGTHarare.truncatedTo(ChronoUnit.MILLIS);
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "name", "a1", "born", LocalDate.now());
         Vertex a2 = this.sqlgGraph.addVertex(T.label, "A", "name", "a2", "born", LocalDate.now());
         LocalDate now = LocalDate.now();
         LocalDateTime now1 = LocalDateTime.now();
         now1 = now1.truncatedTo(ChronoUnit.MILLIS);
         LocalTime time = LocalTime.now();
         Edge e1 = a1.addEdge("halo", a2,
                 "created1", now,
                 "created2", now1,
                 "created3", zonedDateTimeAGT,
                 "created4", zonedDateTimeAGTHarare,
                 "created5", time
         );
         this.sqlgGraph.tx().commit();
         Assert.assertEquals(now, this.sqlgGraph.traversal().E(e1.id()).next().value("created1"));
         Assert.assertEquals(now1, this.sqlgGraph.traversal().E(e1.id()).next().value("created2"));
         Assert.assertEquals(zonedDateTimeAGT, this.sqlgGraph.traversal().E(e1.id()).next().value("created3"));
         Assert.assertEquals(zonedDateTimeAGTHarare, this.sqlgGraph.traversal().E(e1.id()).next().value("created4"));
         Assert.assertEquals(time.toSecondOfDay(), this.sqlgGraph.traversal().E(e1.id()).next().<LocalTime>value("created5").toSecondOfDay());
     }
 
     @Test
     public void testPeriod2() {
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "period", Period.of(1, 1, 1));
         Vertex a2 = this.sqlgGraph.addVertex(T.label, "A", "period", Period.of(11, 11, 11));
         a1.addEdge("test", a2, "period", Period.of(22, 10, 22));
         this.sqlgGraph.tx().commit();
         Assert.assertEquals(Period.of(1, 1, 1), this.sqlgGraph.traversal().V(a1.id()).next().value("period"));
         Assert.assertEquals(Period.of(11, 11, 11), this.sqlgGraph.traversal().V(a2.id()).next().value("period"));
         Assert.assertEquals(Period.of(22, 10, 22), this.sqlgGraph.traversal().V(a1.id()).outE().next().value("period"));
         Assert.assertEquals(Period.of(11, 11, 11), this.sqlgGraph.traversal().V(a1.id()).out().next().value("period"));
     }
 
     @Test
     public void testDuration2() {
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "duration", Duration.ofSeconds(1, 1));
         Vertex a2 = this.sqlgGraph.addVertex(T.label, "A", "duration", Duration.ofSeconds(1, 1));
         a1.addEdge("test", a2, "duration", Duration.ofSeconds(2, 2));
         this.sqlgGraph.tx().commit();
         Assert.assertEquals(Duration.ofSeconds(1, 1), this.sqlgGraph.traversal().V(a1.id()).next().value("duration"));
         Assert.assertEquals(Duration.ofSeconds(1, 1), this.sqlgGraph.traversal().V(a2.id()).next().value("duration"));
         Assert.assertEquals(Duration.ofSeconds(2, 2), this.sqlgGraph.traversal().V(a1.id()).outE().next().value("duration"));
         Assert.assertEquals(Duration.ofSeconds(1, 1), this.sqlgGraph.traversal().V(a1.id()).out().next().value("duration"));
     }
 
     @Test
     public void testLabelledZonedDate() throws InterruptedException {
         ZonedDateTime now = ZonedDateTime.now();
         now = now.truncatedTo(ChronoUnit.MILLIS);
         Thread.sleep(1000);
         ZonedDateTime now1 = ZonedDateTime.now();
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "now", now);
         Vertex b1 = this.sqlgGraph.addVertex(T.label, "B", "now", now);
         Vertex b2 = this.sqlgGraph.addVertex(T.label, "B", "now", now);
         Vertex c1 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         Vertex c2 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         Vertex c3 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         Vertex c4 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         a1.addEdge("ab", b1, "now1", now1);
         a1.addEdge("ab", b2, "now1", now1);
         b1.addEdge("bc", c1, "now1", now1);
         b1.addEdge("bc", c2, "now1", now1);
         b2.addEdge("bc", c3, "now1", now1);
         b2.addEdge("bc", c4, "now1", now1);
         this.sqlgGraph.tx().commit();
 
         List<Map<String, Vertex>> result = this.sqlgGraph.traversal().V().hasLabel("A").as("a").out().as("b").out().as("c").<Vertex>select("a", "b", "c").toList();
         Assert.assertEquals(4, result.size());
 
         //Check all 4 c are found
         List<Vertex> cs = Arrays.asList(result.get(0).get("c"), result.get(1).get("c"), result.get(2).get("c"), result.get(3).get("c"));
         Assert.assertTrue(cs.containsAll(Arrays.asList(c1, c2, c3, c4)));
         Assert.assertEquals(now, result.get(0).get("c").value("now"));
         Assert.assertEquals(now, result.get(1).get("c").value("now"));
         Assert.assertEquals(now, result.get(2).get("c").value("now"));
         Assert.assertEquals(now, result.get(3).get("c").value("now"));
 
         Assert.assertEquals(now, result.get(0).get("b").value("now"));
         Assert.assertEquals(now, result.get(1).get("b").value("now"));
         Assert.assertEquals(now, result.get(2).get("b").value("now"));
         Assert.assertEquals(now, result.get(3).get("b").value("now"));
 
         Assert.assertEquals(now, result.get(0).get("a").value("now"));
         Assert.assertEquals(now, result.get(1).get("a").value("now"));
         Assert.assertEquals(now, result.get(2).get("a").value("now"));
         Assert.assertEquals(now, result.get(3).get("a").value("now"));
     }
 
     @Test
     public void testLabelledZonedDateWithDuplicatedEntitiesInPath() {
         ZonedDateTime now = ZonedDateTime.now();
         now = now.truncatedTo(ChronoUnit.MILLIS);
         Vertex a = this.sqlgGraph.addVertex(T.label, "A", "now", now);
         Vertex b = this.sqlgGraph.addVertex(T.label, "B", "now", now);
         Vertex c = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         a.addEdge("ab", b);
         b.addEdge("bc", c);
         c.addEdge("ca", a);
         this.sqlgGraph.tx().commit();
 
         List<Map<String, Vertex>> result = this.sqlgGraph.traversal().V()
                 .hasLabel("A").as("a")
                 .out().as("b")
                 .out().as("c")
                 .out().as("a_again")
                 .<Vertex>select("a", "b", "c", "a_again").toList();
         Assert.assertEquals(1, result.size());
         Map<String, Vertex> path = result.get(0);
 
         // Check all entities are found
         List<Vertex> entities = Arrays.asList(path.get("a"), path.get("b"), path.get("c"), path.get("a_again"));
         Assert.assertEquals(Arrays.asList(a, b, c, a), entities);
 
         Assert.assertEquals(now, path.get("a").value("now"));
         Assert.assertEquals(now, path.get("b").value("now"));
         Assert.assertEquals(now, path.get("c").value("now"));
         Assert.assertEquals(now, path.get("a_again").value("now"));
     }
 
     @Test
     public void testLabelledZonedDateOnEdge() throws InterruptedException {
         ZonedDateTime now = ZonedDateTime.now();
         Thread.sleep(1000);
         ZonedDateTime now1 = ZonedDateTime.now();
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "now", now);
         Vertex b1 = this.sqlgGraph.addVertex(T.label, "B", "now", now);
         Vertex b2 = this.sqlgGraph.addVertex(T.label, "B", "now", now);
         Vertex c1 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         Vertex c2 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         Vertex c3 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         Vertex c4 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         Edge e1 = a1.addEdge("ab", b1, "now1", now1);
         Edge e2 = a1.addEdge("ab", b2, "now1", now1);
         Edge e3 = b1.addEdge("bc", c1, "now1", now1);
         Edge e4 = b1.addEdge("bc", c2, "now1", now1);
         Edge e5 = b2.addEdge("bc", c3, "now1", now1);
         Edge e6 = b2.addEdge("bc", c4, "now1", now1);
         this.sqlgGraph.tx().commit();
 
         List<Map<String, Object>> result = this.sqlgGraph.traversal().V()
                 .hasLabel("A").as("a")
                 .outE().as("ab")
                 .inV()
                 .outE().as("bc")
                 .inV().as("c").select("a", "ab", "bc", "c").toList();
         Assert.assertEquals(4, result.size());
 
         //Check all 4 c are found
         List<Object> cs = Arrays.asList(result.get(0).get("c"), result.get(1).get("c"), result.get(2).get("c"), result.get(3).get("c"));
         Assert.assertTrue(cs.containsAll(Arrays.asList(c1, c2, c3, c4)));
         List<Object> bc = Arrays.asList(result.get(0).get("bc"), result.get(1).get("bc"), result.get(2).get("bc"), result.get(3).get("bc"));
         Assert.assertTrue(bc.containsAll(Arrays.asList(e3, e4, e5, e6)));
         Set<Object> ab = new HashSet<>(Arrays.asList(result.get(0).get("ab"), result.get(1).get("ab"), result.get(2).get("ab"), result.get(3).get("ab")));
         Assert.assertEquals(2, ab.size());
         Assert.assertTrue(ab.containsAll(Arrays.asList(e1, e2)));
     }
 
     @Test
     public void testMultipleLabelledZonedDate() throws InterruptedException {
         ZonedDateTime now = ZonedDateTime.now();
         Thread.sleep(1000);
         ZonedDateTime now1 = ZonedDateTime.now();
         Vertex a1 = this.sqlgGraph.addVertex(T.label, "A", "now", now);
         Vertex b1 = this.sqlgGraph.addVertex(T.label, "B", "now", now);
         Vertex b2 = this.sqlgGraph.addVertex(T.label, "B", "now", now);
         Vertex c1 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         Vertex c2 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         Vertex c3 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         Vertex c4 = this.sqlgGraph.addVertex(T.label, "C", "now", now);
         a1.addEdge("ab", b1, "now1", now1);
         a1.addEdge("ab", b2, "now1", now1);
         b1.addEdge("bc", c1, "now1", now1);
         b1.addEdge("bc", c2, "now1", now1);
         b2.addEdge("bc", c3, "now1", now1);
         b2.addEdge("bc", c4, "now1", now1);
         this.sqlgGraph.tx().commit();
 
         List<Map<String, Vertex>> result = this.sqlgGraph.traversal().V()
                 .hasLabel("A").as("a1", "a2", "a3")
                 .out().as("b1", "b2", "b3")
                 .out().as("c1", "c2", "c3")
                 .<Vertex>select("a1", "a2", "a3", "b1", "b2", "b3", "c1", "c2", "c3").toList();
         Assert.assertEquals(4, result.size());
 
         //Check all 4 c are found
         List<Vertex> cs = Arrays.asList(result.get(0).get("c1"), result.get(0).get("c2"), result.get(0).get("c3"));
         Assert.assertEquals(3, cs.size());
         Set<Vertex> csSet = new HashSet<>(cs);
         Assert.assertEquals(1, csSet.size());
         Assert.assertTrue(csSet.contains(c1) || csSet.contains(c2) || csSet.contains(c3));
     }
 
     @Test
     public void testLoadDateTypes() {
 
         LocalDateTime localDateTime = LocalDateTime.now();
         localDateTime = localDateTime.truncatedTo(ChronoUnit.MILLIS);
         LocalDate localDate = LocalDate.now();
         LocalTime localTime = LocalTime.now();
         localTime = localTime.truncatedTo(ChronoUnit.MILLIS);
         ZonedDateTime zonedDateTime = ZonedDateTime.now();
         zonedDateTime = zonedDateTime.truncatedTo(ChronoUnit.MILLIS);
         Period period = Period.of(12, 13, 14);
         Duration duration = Duration.ofSeconds(2);
         this.sqlgGraph.addVertex(T.label, "Person",
                 "dateTime", localDateTime,
                 "date", localDate,
                 "time", localTime,
                 "zonedDateTime", zonedDateTime,
                 "period", period,
                 "duration", duration
         );
         this.sqlgGraph.tx().commit();
 
         try (SqlgGraph sqlgGraph1 = SqlgGraph.open(configuration)) {
             Assert.assertTrue(sqlgGraph1.traversal().V().hasLabel("Person").hasNext());
             Vertex v = sqlgGraph1.traversal().V().hasLabel("Person").next();
             Assert.assertEquals(localDateTime, v.value("dateTime"));
             Assert.assertEquals(localDate, v.value("date"));
             Assert.assertEquals(localTime.toSecondOfDay(), v.<LocalTime>value("time").toSecondOfDay());
             Assert.assertEquals(zonedDateTime, v.value("zonedDateTime"));
             Assert.assertEquals(period, v.value("period"));
             Assert.assertEquals(duration, v.value("duration"));
         }
     }
 }