package com.tinkerpop.frames.modules.javahandler;
import java.util.HashSet;
import java.util.Set;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.impls.tg.TinkerGraph;
import com.tinkerpop.blueprints.impls.tg.TinkerGraphFactory;
import com.tinkerpop.frames.FramedGraph;
import com.tinkerpop.frames.FramedGraphFactory;
import com.tinkerpop.frames.Property;
import com.tinkerpop.frames.domain.classes.Person;
import com.tinkerpop.frames.domain.classes.Project;
import com.tinkerpop.frames.domain.incidences.Knows;
/**
* @author Bryn Cooke
*
*/
public class JavaHandlerTest {
private FramedGraph<TinkerGraph> g;
@Test
public void testJavaHandlerVertices() {
Person person = g.getVertex(1, Person.class);
String profile = person.getNameAndAge();
Assert.assertEquals("marko (29)", profile);
Person person2 = g.getVertex(2, Person.class);
String profile2 = person2.getNameAndAge();
Assert.assertEquals("vadas (27)", profile2);
Set<Person> coCreators = new HashSet<Person>();
Iterables.addAll(coCreators, person.getCoCreatorsJava());
Assert.assertEquals(Sets.newHashSet(g.getVertex(4), g.getVertex(6)), coCreators);
}
@Test
public void testJavaHandlerEdges() {
Knows knows = g.getEdge(7, Direction.OUT, Knows.class);
Assert.assertEquals("marko<->vadas", knows.getNames());
}
@Test
public void testJavaHandlerClassAnnotation() {
Project project = g.getVertex(5, Project.class);
Assert.assertEquals("java", project.getLanguageUsingMixin());
}
@Test(expected=JavaHandlerException.class)
public void testMethodNotImplemented() {
Person person = g.getVertex(1, Person.class);
person.notImplemented();
}
@Test
public void testIntitializersVertices() {
A a = g.addVertex(null, A.class);
Assert.assertEquals("A", a.getProperty());
B b = g.addVertex(null, B.class);
Assert.assertEquals("AB", b.getProperty());
C c = g.addVertex(null, C.class);
Assert.assertTrue(c.getProperty().equals("ABCC2") || c.getProperty().equals("ABC2C"));
}
@Test
public void testIntitializersEdges() {
Vertex v = g.addVertex(null);
A a = g.addEdge(null, v, v, "test", A.class);
Assert.assertEquals("A", a.getProperty());
B b = g.addEdge(null, v, v, "test", B.class);
Assert.assertEquals("AB", b.getProperty());
C c = g.addEdge(null, v, v, "test", C.class);
Assert.assertTrue(c.getProperty().equals("ABCC2") || c.getProperty().equals("ABC2C"));
}
interface A {
@Property("property")
String getProperty();
@Property("property")
void setProperty(String property);
abstract class Impl implements A {
@Initializer
void init() {
setProperty("A");
}
}
}
interface B extends A {
abstract class Impl implements B {
@Initializer
void init() {
setProperty(getProperty() + "B");
}
}
}
interface C extends A, B {
abstract class Impl implements C {
@Initializer
void init() {
setProperty(getProperty() + "C");
}
@Initializer
void init2() {
setProperty(getProperty() + "C2");
}
}
}
@Before
public void setup() {
TinkerGraph base = TinkerGraphFactory.createTinkerGraph();
g = new FramedGraphFactory(new JavaHandlerModule()).create(base);
}
}