/*
* Copyright 2015, The Querydsl Team (http://www.querydsl.com/team)
*
* Licensed 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 com.querydsl.core.types.dsl;
import static com.querydsl.core.alias.Alias.$;
import static com.querydsl.core.alias.Alias.alias;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.sql.Time;
import org.junit.Test;
public class CaseForEqBuilderTest {
public enum EnumExample { A, B }
public static class Customer {
private long annualSpending;
public long getAnnualSpending() {
return annualSpending;
}
}
@Test
public void numberTyped() {
Customer c = alias(Customer.class, "customer");
NumberExpression<Integer> cases = $(c.getAnnualSpending())
.when(1000L).then(1)
.when(2000L).then(2)
.when(5000L).then(3)
.otherwise(4);
assertEquals(
"case customer.annualSpending " +
"when 1000 then 1 " +
"when 2000 then 2 " +
"when 5000 then 3 " +
"else 4 " +
"end", cases.toString());
}
@Test
public void stringTyped() {
Customer c = alias(Customer.class, "customer");
StringExpression cases = $(c.getAnnualSpending())
.when(1000L).then("bronze")
.when(2000L).then("silver")
.when(5000L).then("gold")
.otherwise("platinum");
assertNotNull(cases);
}
@Test
public void booleanTyped() {
Customer c = alias(Customer.class, "customer");
BooleanExpression cases = $(c.getAnnualSpending())
.when(1000L).then(true)
.otherwise(false);
assertNotNull(cases);
}
@Test
public void dateType() {
Customer c = alias(Customer.class, "customer");
DateExpression<java.sql.Date> cases = $(c.getAnnualSpending())
.when(1000L).then(new java.sql.Date(0))
.otherwise(new java.sql.Date(0));
assertNotNull(cases);
}
@Test
public void dateTimeType() {
Customer c = alias(Customer.class, "customer");
DateTimeExpression<java.util.Date> cases = $(c.getAnnualSpending())
.when(1000L).then(new java.util.Date(0))
.otherwise(new java.util.Date(0));
assertNotNull(cases);
}
@Test
public void timeType() {
Customer c = alias(Customer.class, "customer");
TimeExpression<Time> cases = $(c.getAnnualSpending())
.when(1000L).then(new Time(0))
.otherwise(new Time(0));
assertNotNull(cases);
}
@Test
public void enumType() {
Customer c = alias(Customer.class, "customer");
EnumExpression<EnumExample> cases = $(c.getAnnualSpending())
.when(1000L).then(EnumExample.A)
.otherwise(EnumExample.B);
assertNotNull(cases);
}
}