
com.tinkerpop.gremlin.structure.VariablesTest Maven / Gradle / Ivy
package com.tinkerpop.gremlin.structure;
import com.tinkerpop.gremlin.AbstractGremlinTest;
import com.tinkerpop.gremlin.structure.util.StringFactory;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import static org.junit.Assume.assumeThat;
/**
* Blueprints Test Suite for {@link com.tinkerpop.gremlin.structure.Graph.Variables} operations.
*
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
@RunWith(Enclosed.class)
public class VariablesTest {
/**
* Basic tests to ensure that {@link com.tinkerpop.gremlin.structure.Graph.Variables} have
* appropriate {@link String} representations.
*/
public static class StringRepresentationTest extends AbstractGremlinTest {
@Test
@FeatureRequirement(featureClass = Graph.Features.VariableFeatures.class, feature = Graph.Features.VariableFeatures.FEATURE_STRING_VALUES)
public void testMemory() {
final Graph.Variables variables = g.variables();
variables.set("xo", "test1");
variables.set("yo", "test2");
variables.set("zo", "test3");
tryCommit(g, graph -> assertEquals(StringFactory.graphVariablesString(variables), variables.toString()));
}
}
/**
* Ensure that the {@link com.tinkerpop.gremlin.structure.Graph.Variables#asMap()} method returns some basics.
* Other tests will enforce that all types are properly covered in {@link com.tinkerpop.gremlin.structure.Graph.Variables}.
*/
public static class MemoryAsMapTest extends AbstractGremlinTest {
@Test
@FeatureRequirement(featureClass = Graph.Features.VariableFeatures.class, feature = Graph.Features.VariableFeatures.FEATURE_STRING_VALUES)
public void testNone() {
final Graph.Variables variables = g.variables();
final Map mapOfAnnotations = variables.asMap();
assertNotNull(mapOfAnnotations);
assertEquals(0, mapOfAnnotations.size());
try {
mapOfAnnotations.put("something", "can't do this");
fail("Should not be able to mutate the Map returned from Graph.variables.getAnnotations()");
} catch (UnsupportedOperationException ignored) {
}
}
@Test
@FeatureRequirement(featureClass = Graph.Features.VariableFeatures.class, feature = Graph.Features.VariableFeatures.FEATURE_STRING_VALUES)
public void testMemoryString() {
final Graph.Variables variables = g.variables();
variables.set("test1", "1");
variables.set("test2", "2");
variables.set("test3", "3");
tryCommit(g, graph -> {
final Map m = variables.asMap();
assertEquals("1", m.get("test1"));
assertEquals("2", m.get("test2"));
assertEquals("3", m.get("test3"));
});
}
@Test
@FeatureRequirement(featureClass = Graph.Features.VariableFeatures.class, feature = Graph.Features.VariableFeatures.FEATURE_INTEGER_VALUES)
public void testMemoryInteger() {
final Graph.Variables variables = g.variables();
variables.set("test1", 1);
variables.set("test2", 2);
variables.set("test3", 3);
tryCommit(g, graph -> {
final Map m = variables.asMap();
assertEquals(1, m.get("test1"));
assertEquals(2, m.get("test2"));
assertEquals(3, m.get("test3"));
});
}
@Test
@FeatureRequirement(featureClass = Graph.Features.VariableFeatures.class, feature = Graph.Features.VariableFeatures.FEATURE_LONG_VALUES)
public void testMemoryLong() {
final Graph.Variables variables = g.variables();
variables.set("test1", 1l);
variables.set("test2", 2l);
variables.set("test3", 3l);
tryCommit(g, graph -> {
final Map m = variables.asMap();
assertEquals(1l, m.get("test1"));
assertEquals(2l, m.get("test2"));
assertEquals(3l, m.get("test3"));
});
}
@Test
@FeatureRequirement(featureClass = Graph.Features.VariableFeatures.class, feature = Graph.Features.VariableFeatures.FEATURE_STRING_VALUES)
@FeatureRequirement(featureClass = Graph.Features.VariableFeatures.class, feature = Graph.Features.VariableFeatures.FEATURE_INTEGER_VALUES)
@FeatureRequirement(featureClass = Graph.Features.VariableFeatures.class, feature = Graph.Features.VariableFeatures.FEATURE_LONG_VALUES)
public void testMemoryMixed() {
final Graph.Variables variables = g.variables();
variables.set("test1", "1");
variables.set("test2", 2);
variables.set("test3", 3l);
tryCommit(g, graph -> {
final Map m = variables.asMap();
assertEquals("1", m.get("test1"));
assertEquals(2, m.get("test2"));
assertEquals(3l, m.get("test3"));
});
}
}
/**
* Tests for feature support on {@link com.tinkerpop.gremlin.structure.Graph.Variables}. The tests validate if
* {@link com.tinkerpop.gremlin.structure.Graph.Features.AnnotationFeatures} should be turned on or off and if the
* enabled features are properly supported by the implementation. Note that these tests are run in a separate
* test class as they are "parameterized" tests.
*/
@RunWith(Parameterized.class)
public static class MemoryFeatureSupportTest extends AbstractGremlinTest {
private static final Map testMap = new HashMap() {{
put("testString", "try");
put("testInteger", 123);
}};
private static final ArrayList
© 2015 - 2025 Weber Informatics LLC | Privacy Policy