Mercurial > hg > release > thermostat-0.15
changeset 1178:28e5e0f88e71
Add not-equal descriptor parsing test.
Reviewed-by: ebaron
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-July/007564.html
author | Severin Gehwolf <sgehwolf@redhat.com> |
---|---|
date | Fri, 19 Jul 2013 16:37:43 +0200 |
parents | 946ff3438d75 |
children | 03ed49a50413 |
files | storage/core/src/main/java/com/redhat/thermostat/storage/internal/statement/StatementDescriptorParser.java storage/core/src/test/java/com/redhat/thermostat/storage/internal/statement/StatementDescriptorParserTest.java |
diffstat | 2 files changed, 28 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/statement/StatementDescriptorParser.java Thu Jul 18 18:35:09 2013 -0400 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/statement/StatementDescriptorParser.java Fri Jul 19 16:37:43 2013 +0200 @@ -86,7 +86,7 @@ * int := <literal-int> * long := <literal-long> * string := <literal-string-value> - * compExpRHS := '=' term | '<=' term | '>=' term | '<' term | '>' term + * compExpRHS := '!=' term | '=' term | '<=' term | '>=' term | '<' term | '>' term * </pre> * * This implements the following logic precedence rules (in this order of
--- a/storage/core/src/test/java/com/redhat/thermostat/storage/internal/statement/StatementDescriptorParserTest.java Thu Jul 18 18:35:09 2013 -0400 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/statement/StatementDescriptorParserTest.java Fri Jul 19 16:37:43 2013 +0200 @@ -97,6 +97,33 @@ } @Test + public void testParseNotEqualComparisonInWhere() throws DescriptorParsingException { + String descrString = "QUERY " + AgentInfoDAO.CATEGORY.getName() + " WHERE 'a' != 'b'"; + StatementDescriptor<AgentInformation> desc = new StatementDescriptor<>(AgentInfoDAO.CATEGORY, descrString); + parser = new StatementDescriptorParser<>(storage, desc); + ParsedStatement<AgentInformation> statement = parser.parse(); + assertEquals(0, statement.getNumParams()); + assertEquals(mockQuery.getClass().getName(), statement.getRawStatement().getClass().getName()); + SuffixExpression tree = statement.getSuffixExpression(); + assertNull(tree.getLimitExpn()); + assertNull(tree.getSortExpn()); + assertNotNull(tree.getWhereExpn()); + + WhereExpression expected = new WhereExpression(); + BinaryExpressionNode notEquals = new BinaryExpressionNode(expected.getRoot()); + expected.getRoot().setValue(notEquals); + notEquals.setOperator(BinaryComparisonOperator.NOT_EQUAL_TO); + TerminalNode a = new TerminalNode(notEquals); + a.setValue(new Key<String>("a", false)); + TerminalNode b = new TerminalNode(notEquals); + b.setValue("b"); + notEquals.setLeftChild(a); + notEquals.setRightChild(b); + + assertTrue(WhereExpressions.equals(expected, tree.getWhereExpn())); + } + + @Test public void testParseQuerySimpleWithLimit() throws DescriptorParsingException { String descrString = "QUERY " + AgentInfoDAO.CATEGORY.getName() + " LIMIT ?i"; StatementDescriptor<AgentInformation> desc = new StatementDescriptor<>(AgentInfoDAO.CATEGORY, descrString);