package org.neo4j.util;
import java.util.Arrays;
import java.util.Collection;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.Transaction;
import org.neo4j.util.PropertyArraySet;
import org.neo4j.util.GraphDatabaseUtil;
public class TestGraphDbUtils extends Neo4jTest
{
private GraphDatabaseUtil graphDbUtil;
@Override
public void setUp() throws Exception
{
super.setUp();
this.graphDbUtil = new GraphDatabaseUtil( graphDb() );
}
public void testArrays()
{
Transaction tx = graphDb().beginTx();
try
{
String key = "key_with_array_values";
Node node = graphDb().createNode();
int v1 = 10;
int v2 = 101;
int v3 = 2002;
assertTrue( graphDbUtil.addValueToArray( node, key, v1 ) );
assertCollection( graphDbUtil.propertyValueAsList(
node.getProperty( key ) ), v1 );
assertFalse( graphDbUtil.addValueToArray( node, key, v1 ) );
assertCollection( graphDbUtil.propertyValueAsList(
node.getProperty( key ) ), v1 );
assertTrue( graphDbUtil.addValueToArray( node, key, v2 ) );
assertCollection( graphDbUtil.propertyValueAsList(
node.getProperty( key ) ), v1, v2 );
assertTrue( graphDbUtil.addValueToArray( node, key, v3 ) );
assertCollection( graphDbUtil.propertyValueAsList(
node.getProperty( key ) ), v1, v2, v3 );
assertTrue( graphDbUtil.removeValueFromArray( node, key, v2 ) );
assertCollection( graphDbUtil.propertyValueAsList(
node.getProperty( key ) ), v1, v3 );
assertFalse( graphDbUtil.removeValueFromArray( node, key, v2 ) );
assertCollection( graphDbUtil.propertyValueAsList(
node.getProperty( key ) ), v1, v3 );
node.delete();
tx.success();
}
finally
{
tx.finish();
}
}
public void testArraySet()
{
Transaction tx = graphDb().beginTx();
try
{
String key = "key_with_array_values";
Node node = graphDb().createNode();
int v1 = 10;
int v2 = 101;
int v3 = 2002;
Collection<Integer> values = new PropertyArraySet<Integer>(
graphDb(), node, key );
assertTrue( values.add( v1 ) );
assertCollection( values, v1 );
assertFalse( values.add( v1 ) );
assertCollection( values, v1 );
assertTrue( values.add( v2 ) );
assertCollection( values, v1, v2 );
assertTrue( values.add( v3 ) );
assertCollection( values, v1, v2, v3 );
assertCollection( graphDbUtil.propertyValueAsList(
node.getProperty( key ) ), v1, v2, v3 );
assertTrue( values.remove( v2 ) );
assertCollection( values, v1, v3 );
assertFalse( values.remove( v2 ) );
assertCollection( values, v1, v3 );
values.clear();
assertCollection( values );
values.addAll( Arrays.asList( v1, v2, v3 ) );
assertCollection( values, v1, v2, v3 );
values.retainAll( Arrays.asList( v2 ) );
assertCollection( values, v2 );
node.delete();
tx.success();
}
finally
{
tx.finish();
}
}
public void testSumContents() throws Exception
{
Transaction tx = graphDb().beginTx();
try
{
Node node1 = graphDb().createNode();
Node node2 = graphDb().createNode();
Node node3 = graphDb().createNode();
Node node4 = graphDb().createNode();
Relationship r1 = node1.createRelationshipTo(
node2, TestRelTypes.TEST_TYPE );
Relationship r2 = node2.createRelationshipTo(
node1, TestRelTypes.TEST_OTHER_TYPE );
Relationship r3 = node3.createRelationshipTo(
node1, TestRelTypes.TEST_TYPE );
Relationship r4 = node1.createRelationshipTo(
node4, TestRelTypes.TEST_YET_ANOTHER_TYPE );
node1.setProperty( "prop1", "Hejsan" );
node1.setProperty( "prop2", 10 );
new GraphDatabaseUtil( graphDb() ).sumNodeContents( node1 );
r1.delete();
r2.delete();
r3.delete();
r4.delete();
node1.delete();
node2.delete();
node3.delete();
node4.delete();
tx.success();
}
finally
{
tx.finish();
}
}
}