Skip to content

Instantly share code, notes, and snippets.

@Romiko
Created December 6, 2011 11:00
Show Gist options
  • Save Romiko/1437793 to your computer and use it in GitHub Desktop.
Save Romiko/1437793 to your computer and use it in GitHub Desktop.
Gremlin .Net IfThenElse
using NUnit.Framework;
using Neo4jClient.Gremlin;
namespace Neo4jClient.Test.Gremlin
{
[TestFixture]
public class IfThenElseTests
{
[Test]
public void IfThenElseVShouldAppendSteps()
{
var query = new NodeReference(123).IfThenElse(
new GremlinIterator().OutV<object>().GremlinHasNext(),
null,
null);
Assert.AreEqual("g.v(p0).ifThenElse{it.outV.hasNext()}{}{}", query.QueryText);
}
[Test]
public void IfThenElseVShouldAppendStepsWithThenQueryAndElseQuery()
{
var query = new NodeReference(123).IfThenElse(
new GremlinIterator().OutV<object>().GremlinHasNext(),
new IdentityPipe().OutV<object>(),
new IdentityPipe().InV<object>());
Assert.AreEqual("g.v(p0).ifThenElse{it.outV.hasNext()}{_().outV}{_().inV}", query.QueryText);
}
[Test]
public void IfThenElseVShouldAppendStepsWithThenQueryAndElseQueryWithParameters()
{
var query = new NodeReference(123).IfThenElse(
new GremlinIterator().OutV<Test>(t => t.Flag == true).GremlinHasNext(),
new IdentityPipe().OutV<Test>(t => t.Name == "foo"),
new IdentityPipe().InV<Test>(t => t.Name == "bar"));
Assert.AreEqual("g.v(p0).ifThenElse{it.outV.filter{ it[p1] == p2 }.hasNext()}{_().outV.filter{ it[p3].equalsIgnoreCase(p4) }}{_().inV.filter{ it[p5].equalsIgnoreCase(p6) }}", query.QueryText);
Assert.AreEqual(123, query.QueryParameters["p0"]);
Assert.AreEqual("Flag", query.QueryParameters["p1"]);
Assert.AreEqual(true, query.QueryParameters["p2"]);
Assert.AreEqual("Name", query.QueryParameters["p3"]);
Assert.AreEqual("foo", query.QueryParameters["p4"]);
Assert.AreEqual("Name", query.QueryParameters["p5"]);
Assert.AreEqual("bar", query.QueryParameters["p6"]);
}
[Test]
public void IfThenElseVShouldAppendStepsWithThenQueryAndElseQueryWithParametersAndDeclarations()
{
var query = new NodeReference(123).IfThenElse(
new GremlinIterator().OutV<Test>(t => t.Flag == true).GremlinHasNext(),
new IdentityPipe().AggregateV<object>("x").OutV<Test>(t => t.Name == "foo"),
new IdentityPipe().InV<Test>(t => t.Name == "bar"));
Assert.AreEqual("x = [];g.v(p0).ifThenElse{it.outV.filter{ it[p1] == p2 }.hasNext()}{_().aggregate(x).outV.filter{ it[p3].equalsIgnoreCase(p4) }}{_().inV.filter{ it[p5].equalsIgnoreCase(p6) }}", query.QueryText);
Assert.AreEqual(123, query.QueryParameters["p0"]);
Assert.AreEqual("Flag", query.QueryParameters["p1"]);
Assert.AreEqual(true, query.QueryParameters["p2"]);
Assert.AreEqual("Name", query.QueryParameters["p3"]);
Assert.AreEqual("foo", query.QueryParameters["p4"]);
Assert.AreEqual("Name", query.QueryParameters["p5"]);
Assert.AreEqual("bar", query.QueryParameters["p6"]);
}
[Test]
public void IfThenElseVShouldAppendStepsWithThenQueryAndElseQueryWithParametersAndMultipleDeclarations()
{
var query = new NodeReference(123).IfThenElse(
new GremlinIterator().OutV<Test>(t => t.Flag == true).GremlinHasNext(),
new IdentityPipe().AggregateV<object>("x").OutV<Test>(t => t.Name == "foo"),
new IdentityPipe().AggregateV<object>("y").InV<Test>(t => t.Name == "bar"));
Assert.AreEqual("y = [];x = [];g.v(p0).ifThenElse{it.outV.filter{ it[p1] == p2 }.hasNext()}{_().aggregate(x).outV.filter{ it[p3].equalsIgnoreCase(p4) }}{_().aggregate(y).inV.filter{ it[p5].equalsIgnoreCase(p6) }}", query.QueryText);
Assert.AreEqual(123, query.QueryParameters["p0"]);
Assert.AreEqual("Flag", query.QueryParameters["p1"]);
Assert.AreEqual(true, query.QueryParameters["p2"]);
Assert.AreEqual("Name", query.QueryParameters["p3"]);
Assert.AreEqual("foo", query.QueryParameters["p4"]);
Assert.AreEqual("Name", query.QueryParameters["p5"]);
Assert.AreEqual("bar", query.QueryParameters["p6"]);
}
public class Test
{
public bool Flag { get; set; }
public string Name { get; set; }
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment