Coverage Summary for Class: TestMultiplicityOnArrayTypes (org.umlg.sqlg.test.topology.propertydefinition)

Class Method, % Line, %
TestMultiplicityOnArrayTypes 100% (3/3) 90.2% (55/61)
TestMultiplicityOnArrayTypes$1 100% (1/1) 100% (2/2)
TestMultiplicityOnArrayTypes$2 100% (1/1) 100% (2/2)
Total 100% (5/5) 90.8% (59/65)


 package org.umlg.sqlg.test.topology.propertydefinition;
 
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.junit.Assert;
 import org.junit.Assume;
 import org.junit.Test;
 import org.umlg.sqlg.structure.Multiplicity;
 import org.umlg.sqlg.structure.PropertyDefinition;
 import org.umlg.sqlg.structure.PropertyType;
 import org.umlg.sqlg.structure.topology.Schema;
 import org.umlg.sqlg.test.BaseTest;
 
 import java.util.HashMap;
 
 @SuppressWarnings("DuplicatedCode")
 public class TestMultiplicityOnArrayTypes extends BaseTest {
 
  @Test
  public void testMultiplicityOnArrayOnVertexLabel() {
  Assume.assumeTrue(sqlgGraph.getSqlDialect().supportsStringArrayValues());
  Schema publicSchema = this.sqlgGraph.getTopology().getPublicSchema();
  publicSchema.ensureVertexLabelExist("A",
  new HashMap<>() {{
  put("a", PropertyDefinition.of(PropertyType.STRING_ARRAY, Multiplicity.of(2, 3)));
  }}
  );
  this.sqlgGraph.tx().commit();
  boolean failure = false;
  try {
  this.sqlgGraph.addVertex(T.label, "A", "a", new String[]{"1"});
  } catch (Exception e) {
  failure = true;
  this.sqlgGraph.tx().rollback();
  }
  Assert.assertTrue(failure);
  failure = false;
  this.sqlgGraph.tx().normalBatchModeOn();
  try {
  this.sqlgGraph.addVertex(T.label, "A", "a", new String[]{"1", "2", "3", "4"});
  this.sqlgGraph.tx().commit();
  } catch (Exception e) {
  failure = true;
  this.sqlgGraph.tx().rollback();
  }
  Assert.assertTrue(failure);
 
  failure = false;
  this.sqlgGraph.tx().normalBatchModeOn();
  try {
  this.sqlgGraph.addVertex(T.label, "A", "a", new String[]{"1", "2"});
  this.sqlgGraph.tx().commit();
  } catch (Exception e) {
  failure = true;
  this.sqlgGraph.tx().rollback();
  }
  Assert.assertFalse(failure);
  }
 
  @Test
  public void testMultiplicityOnArrayAndCheckConstraintOnVertexLabel() {
  Assume.assumeTrue(isPostgres());
  Schema publicSchema = this.sqlgGraph.getTopology().getPublicSchema();
  publicSchema.ensureVertexLabelExist("A",
  new HashMap<>() {{
  put("a", PropertyDefinition.of(PropertyType.STRING_ARRAY, Multiplicity.of(2, 3), null, "" + sqlgGraph.getSqlDialect().maybeWrapInQoutes("a") + " @> ARRAY['1', '2']"));
  }}
  );
  this.sqlgGraph.tx().commit();
  boolean failure = false;
  try {
  this.sqlgGraph.addVertex(T.label, "A", "a", new String[]{"1"});
  } catch (Exception e) {
  failure = true;
  this.sqlgGraph.tx().rollback();
  }
  Assert.assertTrue(failure);
  failure = false;
  this.sqlgGraph.tx().normalBatchModeOn();
  try {
  this.sqlgGraph.addVertex(T.label, "A", "a", new String[]{"1", "2", "3", "4"});
  this.sqlgGraph.tx().commit();
  } catch (Exception e) {
  failure = true;
  this.sqlgGraph.tx().rollback();
  }
  Assert.assertTrue(failure);
 
  failure = false;
  this.sqlgGraph.tx().normalBatchModeOn();
  try {
  this.sqlgGraph.addVertex(T.label, "A", "a", new String[]{"1", "3"});
  this.sqlgGraph.tx().commit();
  } catch (Exception e) {
  failure = true;
  this.sqlgGraph.tx().rollback();
  }
  Assert.assertTrue(failure);
 
  failure = false;
  this.sqlgGraph.tx().normalBatchModeOn();
  try {
  this.sqlgGraph.addVertex(T.label, "A", "a", new String[]{"1", "2", "3"});
  this.sqlgGraph.tx().commit();
  } catch (Exception e) {
  failure = true;
  this.sqlgGraph.tx().rollback();
  }
  Assert.assertFalse(failure);
  }
 }