[dna-commits] DNA SVN: r1293 - in trunk/dna-graph/src: test/java/org/jboss/dna/graph/query/parse and 1 other directory.
dna-commits at lists.jboss.org
dna-commits at lists.jboss.org
Thu Oct 15 15:55:58 EDT 2009
Author: rhauch
Date: 2009-10-15 15:55:58 -0400 (Thu, 15 Oct 2009)
New Revision: 1293
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/query/parse/SqlQueryParser.java
trunk/dna-graph/src/test/java/org/jboss/dna/graph/query/parse/SqlQueryParserTest.java
Log:
DNA-467 Add search/query support to the graph API
Updated test cases for SqlQueryParser.
Modified: trunk/dna-graph/src/main/java/org/jboss/dna/graph/query/parse/SqlQueryParser.java
===================================================================
--- trunk/dna-graph/src/main/java/org/jboss/dna/graph/query/parse/SqlQueryParser.java 2009-10-15 19:55:26 UTC (rev 1292)
+++ trunk/dna-graph/src/main/java/org/jboss/dna/graph/query/parse/SqlQueryParser.java 2009-10-15 19:55:58 UTC (rev 1293)
@@ -446,9 +446,9 @@
return constraint;
}
- protected Collection<StaticOperand> parseInClause( TokenStream tokens,
- ExecutionContext context ) {
- Collection<StaticOperand> result = new ArrayList<StaticOperand>();
+ protected List<StaticOperand> parseInClause( TokenStream tokens,
+ ExecutionContext context ) {
+ List<StaticOperand> result = new ArrayList<StaticOperand>();
tokens.consume("IN");
tokens.consume("(");
if (!tokens.canConsume(")")) {
Modified: trunk/dna-graph/src/test/java/org/jboss/dna/graph/query/parse/SqlQueryParserTest.java
===================================================================
--- trunk/dna-graph/src/test/java/org/jboss/dna/graph/query/parse/SqlQueryParserTest.java 2009-10-15 19:55:26 UTC (rev 1292)
+++ trunk/dna-graph/src/test/java/org/jboss/dna/graph/query/parse/SqlQueryParserTest.java 2009-10-15 19:55:58 UTC (rev 1293)
@@ -622,6 +622,58 @@
}
// ----------------------------------------------------------------------------------------------------------------
+ // parseInClause
+ // ----------------------------------------------------------------------------------------------------------------
+
+ @Test
+ public void shouldParseInClauseFromStringWithSingleValidLiteral() {
+ List<StaticOperand> result = parser.parseInClause(tokens("IN ('value1')"), context);
+ assertThat(result.size(), is(1));
+ assertThat(result.get(0), is((StaticOperand)literal("value1")));
+ }
+
+ @Test
+ public void shouldParseInClauseFromStringWithTwoValidLiteral() {
+ List<StaticOperand> result = parser.parseInClause(tokens("IN ('value1','value2')"), context);
+ assertThat(result.size(), is(2));
+ assertThat(result.get(0), is((StaticOperand)literal("value1")));
+ assertThat(result.get(1), is((StaticOperand)literal("value2")));
+ }
+
+ @Test
+ public void shouldParseInClauseFromStringWithThreeValidLiteral() {
+ List<StaticOperand> result = parser.parseInClause(tokens("IN ('value1','value2','value3')"), context);
+ assertThat(result.size(), is(3));
+ assertThat(result.get(0), is((StaticOperand)literal("value1")));
+ assertThat(result.get(1), is((StaticOperand)literal("value2")));
+ assertThat(result.get(2), is((StaticOperand)literal("value3")));
+ }
+
+ @Test
+ public void shouldParseInClauseFromStringWithSingleValidLiteralCast() {
+ List<StaticOperand> result = parser.parseInClause(tokens("IN (CAST('value1' AS STRING))"), context);
+ assertThat(result.size(), is(1));
+ assertThat(result.iterator().next(), is((StaticOperand)literal("value1")));
+
+ result = parser.parseInClause(tokens("IN (CAST('3' AS LONG))"), context);
+ assertThat(result.size(), is(1));
+ assertThat(result.iterator().next(), is((StaticOperand)literal(new Long(3))));
+ }
+
+ @Test
+ public void shouldParseInClauseFromStringWithMultipleValidLiteralCasts() {
+ List<StaticOperand> result = parser.parseInClause(tokens("IN (CAST('value1' AS STRING),CAST('3' AS LONG),'4')"), context);
+ assertThat(result.size(), is(3));
+ assertThat(result.get(0), is((StaticOperand)literal("value1")));
+ assertThat(result.get(1), is((StaticOperand)literal(new Long(3))));
+ assertThat(result.get(2), is((StaticOperand)literal("4")));
+ }
+
+ protected Literal literal( Object literalValue ) {
+ return new Literal(literalValue);
+ }
+
+ // ----------------------------------------------------------------------------------------------------------------
// parseFullTextSearchExpression
// ----------------------------------------------------------------------------------------------------------------
More information about the dna-commits
mailing list