blob: c114f2453ce715bc0f1a292f07568d124a4b2cf8 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.builder;
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.Message;
import org.apache.camel.Predicate;
import org.apache.camel.TestSupport;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.DefaultExchange;
/**
* @version
*/
public class PredicateBinaryCoerceTypeTest extends TestSupport {
protected Exchange exchange = new DefaultExchange(new DefaultCamelContext());
public void testIsNull() throws Exception {
Expression a = ExpressionBuilder.constantExpression("123");
assertDoesNotMatch(PredicateBuilder.isNull(a));
a = ExpressionBuilder.constantExpression(null);
assertMatches(PredicateBuilder.isNull(a));
}
public void testIsNotNull() throws Exception {
Expression a = ExpressionBuilder.constantExpression("123");
assertMatches(PredicateBuilder.isNotNull(a));
a = ExpressionBuilder.constantExpression(null);
assertDoesNotMatch(PredicateBuilder.isNotNull(a));
}
public void testEqual() throws Exception {
Expression a = ExpressionBuilder.constantExpression("123");
Expression b = ExpressionBuilder.constantExpression(Integer.valueOf("123"));
assertMatches(PredicateBuilder.isEqualTo(a, b));
// reverse the type and try again
a = ExpressionBuilder.constantExpression(Integer.valueOf("123"));
b = ExpressionBuilder.constantExpression("123");
assertMatches(PredicateBuilder.isEqualTo(a, b));
}
public void testEqualWithNull() throws Exception {
Expression a = ExpressionBuilder.constantExpression("123");
Expression b = ExpressionBuilder.constantExpression(null);
assertDoesNotMatch(PredicateBuilder.isEqualTo(a, b));
// reverse the type and try again
a = ExpressionBuilder.constantExpression(null);
b = ExpressionBuilder.constantExpression("123");
assertDoesNotMatch(PredicateBuilder.isEqualTo(a, b));
// try two null values
a = ExpressionBuilder.constantExpression(null);
b = ExpressionBuilder.constantExpression(null);
assertMatches(PredicateBuilder.isEqualTo(a, b));
}
public void testNotEqual() throws Exception {
Expression a = ExpressionBuilder.constantExpression("123");
Expression b = ExpressionBuilder.constantExpression(Integer.valueOf("123"));
assertDoesNotMatch(PredicateBuilder.isNotEqualTo(a, b));
a = ExpressionBuilder.constantExpression("333");
assertMatches(PredicateBuilder.isNotEqualTo(a, b));
}
public void testNotEqualWithNull() throws Exception {
Expression a = ExpressionBuilder.constantExpression("123");
Expression b = ExpressionBuilder.constantExpression(null);
assertMatches(PredicateBuilder.isNotEqualTo(a, b));
// reverse the type and try again
a = ExpressionBuilder.constantExpression(null);
b = ExpressionBuilder.constantExpression("123");
assertMatches(PredicateBuilder.isNotEqualTo(a, b));
// try two null values
a = ExpressionBuilder.constantExpression(null);
b = ExpressionBuilder.constantExpression(null);
assertDoesNotMatch(PredicateBuilder.isNotEqualTo(a, b));
}
public void testGreatherThan() throws Exception {
Expression a = ExpressionBuilder.constantExpression("200");
Expression b = ExpressionBuilder.constantExpression(Integer.valueOf("100"));
assertMatches(PredicateBuilder.isGreaterThan(a, b));
assertDoesNotMatch(PredicateBuilder.isGreaterThan(b, a));
// reverse the types and try again
a = ExpressionBuilder.constantExpression(Integer.valueOf("100"));
b = ExpressionBuilder.constantExpression("200");
assertDoesNotMatch(PredicateBuilder.isGreaterThan(a, b));
assertMatches(PredicateBuilder.isGreaterThan(b, a));
}
public void testGreatherThanOrEqual() throws Exception {
// greather than
Expression a = ExpressionBuilder.constantExpression("200");
Expression b = ExpressionBuilder.constantExpression(Integer.valueOf("100"));
assertMatches(PredicateBuilder.isGreaterThanOrEqualTo(a, b));
assertDoesNotMatch(PredicateBuilder.isGreaterThanOrEqualTo(b, a));
// reverse the types and try again
a = ExpressionBuilder.constantExpression(Integer.valueOf("100"));
b = ExpressionBuilder.constantExpression("200");
assertDoesNotMatch(PredicateBuilder.isGreaterThanOrEqualTo(a, b));
assertMatches(PredicateBuilder.isGreaterThanOrEqualTo(b, a));
// equal
a = ExpressionBuilder.constantExpression("100");
b = ExpressionBuilder.constantExpression(Integer.valueOf("100"));
assertMatches(PredicateBuilder.isGreaterThanOrEqualTo(a, b));
assertMatches(PredicateBuilder.isGreaterThanOrEqualTo(b, a));
// reverse the types and try again
a = ExpressionBuilder.constantExpression(Integer.valueOf("100"));
b = ExpressionBuilder.constantExpression("100");
assertMatches(PredicateBuilder.isGreaterThanOrEqualTo(a, b));
assertMatches(PredicateBuilder.isGreaterThanOrEqualTo(b, a));
}
public void testLessThan() throws Exception {
Expression a = ExpressionBuilder.constantExpression("100");
Expression b = ExpressionBuilder.constantExpression(Integer.valueOf("200"));
assertMatches(PredicateBuilder.isLessThan(a, b));
assertDoesNotMatch(PredicateBuilder.isLessThan(b, a));
// reverse the types and try again
a = ExpressionBuilder.constantExpression(Integer.valueOf("100"));
b = ExpressionBuilder.constantExpression("200");
assertMatches(PredicateBuilder.isLessThan(a, b));
assertDoesNotMatch(PredicateBuilder.isLessThan(b, a));
}
public void testLessThanOrEqual() throws Exception {
// less than
Expression a = ExpressionBuilder.constantExpression("100");
Expression b = ExpressionBuilder.constantExpression(Integer.valueOf("200"));
assertMatches(PredicateBuilder.isLessThanOrEqualTo(a, b));
assertDoesNotMatch(PredicateBuilder.isLessThanOrEqualTo(b, a));
// reverse the types and try again
a = ExpressionBuilder.constantExpression(Integer.valueOf("200"));
b = ExpressionBuilder.constantExpression("100");
assertDoesNotMatch(PredicateBuilder.isLessThanOrEqualTo(a, b));
assertMatches(PredicateBuilder.isLessThanOrEqualTo(b, a));
// equal
a = ExpressionBuilder.constantExpression("100");
b = ExpressionBuilder.constantExpression(Integer.valueOf("100"));
assertMatches(PredicateBuilder.isLessThanOrEqualTo(a, b));
assertMatches(PredicateBuilder.isLessThanOrEqualTo(b, a));
// reverse the types and try again
a = ExpressionBuilder.constantExpression(Integer.valueOf("100"));
b = ExpressionBuilder.constantExpression("100");
assertMatches(PredicateBuilder.isGreaterThanOrEqualTo(a, b));
assertMatches(PredicateBuilder.isGreaterThanOrEqualTo(b, a));
}
@Override
protected void setUp() throws Exception {
super.setUp();
Message in = exchange.getIn();
in.setBody("Hello there!");
in.setHeader("name", "James");
in.setHeader("location", "Islington,London,UK");
in.setHeader("size", 10);
}
protected void assertMatches(Predicate predicate) {
assertPredicateMatches(predicate, exchange);
}
protected void assertDoesNotMatch(Predicate predicate) {
assertPredicateDoesNotMatch(predicate, exchange);
}
}