package com.tinkerpop.frames;
import com.tinkerpop.blueprints.Element;
import com.tinkerpop.blueprints.Graph;
import com.tinkerpop.blueprints.impls.tg.TinkerGraphFactory;
import com.tinkerpop.frames.domain.classes.Person;
import com.tinkerpop.frames.domain.incidences.Knows;
import com.tinkerpop.frames.modules.AbstractModule;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
/**
* @author Bryn Cooke
*/
public class FrameInitializerTest {
private FramedGraph<Graph> framedGraph;
@Before
public void setup() {
Graph graph = TinkerGraphFactory.createTinkerGraph();
framedGraph = new FramedGraphFactory(new AbstractModule(){
@Override
protected void doConfigure(FramedGraphConfiguration config) {
config.addFrameInitializer(nameDefaulter);
config.addFrameInitializer(weightDefaulter);
}
}).create(graph);
}
@Test
public void testDeprecatedRegistration() {
Graph graph = TinkerGraphFactory.createTinkerGraph();
FramedGraph<Graph> framedGraph = new FramedGraph(graph);
framedGraph.registerFrameInitializer(nameDefaulter);
Person person = framedGraph.addVertex(null, Person.class);
assertEquals("Defaulted", person.getName());
}
@Test
public void testVertexInitialization() {
Person person = framedGraph.addVertex(null, Person.class);
assertEquals("Defaulted", person.getName());
}
@Test
public void testEdgeInitialization() {
Person person1 = framedGraph.addVertex(null, Person.class);
Person person2 = framedGraph.addVertex(null, Person.class);
person1.addKnows(person2);
assertEquals(Float.valueOf(1.0f), person1.getKnows().iterator().next().getWeight());
}
public static FrameInitializer nameDefaulter = new FrameInitializer() {
@Override
public void initElement(Class<?> kind, FramedGraph<?> framedGraph, Element element) {
if (kind == Person.class) {
assertNotNull(framedGraph);
element.setProperty("name", "Defaulted");
}
}
};
public static FrameInitializer weightDefaulter = new FrameInitializer() {
@Override
public void initElement(Class<?> kind, FramedGraph<?> framedGraph, Element element) {
assertNotNull(framedGraph);
if (kind == Knows.class) {
element.setProperty("weight", 1.0f);
}
}
};
}