| 1 21 package com.db4o.test.nativequery.expr; 22 23 import com.db4o.nativequery.expr.*; 24 import com.db4o.nativequery.expr.cmp.*; 25 import com.db4o.nativequery.expr.cmp.field.*; 26 27 import db4ounit.*; 28 29 public class ExpressionTestCase implements TestCase { 30 public void testEqualsHashCodeFieldValue() { 31 FieldValue fieldValue = new FieldValue(PredicateFieldRoot.INSTANCE,"a"); 32 assertEqualsHashCode(fieldValue,new FieldValue(PredicateFieldRoot.INSTANCE,"a")); 33 assertNotEquals(fieldValue,new FieldValue(PredicateFieldRoot.INSTANCE,"b")); 34 } 35 36 public void testEqualsHashCodeConst() { 37 BoolConstExpression expr = BoolConstExpression.TRUE; 38 assertEqualsHashCode(expr,BoolConstExpression.TRUE); 39 assertNotEquals(expr,new FieldValue(PredicateFieldRoot.INSTANCE,"b")); 40 } 41 42 public void testEqualsHashCodeNot() { 43 NotExpression expr = new NotExpression(BoolConstExpression.TRUE); 44 assertEqualsHashCode(expr,new NotExpression(BoolConstExpression.TRUE)); 45 assertNotEquals(expr,new NotExpression(BoolConstExpression.FALSE)); 46 } 47 48 public void testEqualsHashCodeAnd() { 49 AndExpression expr = new AndExpression(BoolConstExpression.TRUE,BoolConstExpression.FALSE); 50 assertEqualsHashCode(expr,new AndExpression(BoolConstExpression.TRUE,BoolConstExpression.FALSE)); 51 assertNotEquals(expr,new AndExpression(BoolConstExpression.FALSE,BoolConstExpression.FALSE)); 52 assertNotEquals(expr,new AndExpression(BoolConstExpression.TRUE,BoolConstExpression.TRUE)); 53 assertEqualsHashCode(expr,new AndExpression(BoolConstExpression.FALSE,BoolConstExpression.TRUE)); 54 } 55 56 public void testEqualsHashCodeOr() { 57 OrExpression expr = new OrExpression(BoolConstExpression.TRUE,BoolConstExpression.FALSE); 58 assertEqualsHashCode(expr,new OrExpression(BoolConstExpression.TRUE,BoolConstExpression.FALSE)); 59 assertNotEquals(expr,new OrExpression(BoolConstExpression.FALSE,BoolConstExpression.FALSE)); 60 assertNotEquals(expr,new OrExpression(BoolConstExpression.TRUE,BoolConstExpression.TRUE)); 61 assertEqualsHashCode(expr,new OrExpression(BoolConstExpression.FALSE,BoolConstExpression.TRUE)); 62 } 63 64 public void testEqualsHashCodeComparison() { 65 FieldValue[] fieldVals={new FieldValue(PredicateFieldRoot.INSTANCE,"A"),new FieldValue(CandidateFieldRoot.INSTANCE,"B")}; 66 ConstValue[] constVals={new ConstValue("X"),new ConstValue("Y")}; 67 ComparisonExpression expr = new ComparisonExpression(fieldVals[0],constVals[0],ComparisonOperator.EQUALS); 68 assertEqualsHashCode(expr,new ComparisonExpression(fieldVals[0],constVals[0],ComparisonOperator.EQUALS)); 69 assertNotEquals(expr,new ComparisonExpression(fieldVals[1],constVals[0],ComparisonOperator.EQUALS)); 70 assertNotEquals(expr,new ComparisonExpression(fieldVals[0],constVals[1],ComparisonOperator.EQUALS)); 71 assertNotEquals(expr,new ComparisonExpression(fieldVals[0],constVals[0],ComparisonOperator.SMALLER)); 72 } 73 74 private void assertEqualsHashCode(Object obj,Object same) { 75 Assert.isTrue(obj.equals(obj)); 76 Assert.isTrue(obj.equals(same)); 77 Assert.isTrue(same.equals(obj)); 78 Assert.isFalse(obj.equals(null)); 79 Assert.isFalse(obj.equals(new Object ())); 80 Assert.areEqual(obj.hashCode(),same.hashCode()); 81 } 82 83 private void assertNotEquals(Object obj,Object other) { 84 Assert.isFalse(obj.equals(other)); 85 Assert.isFalse(other.equals(obj)); 86 } 87 } 88 | Popular Tags |