/*
* 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 org.junit.Assert.*;
import javax.annotation.Nullable;
import org.junit.Ignore;
import org.junit.Test;
import com.querydsl.core.annotations.PropertyType;
import com.querydsl.core.types.PathMetadata;
import com.querydsl.core.types.PathMetadataFactory;
public class BeanPathTest {
public static class SubClass extends BeanPathTest {
}
public static class MyBeanPath extends BeanPath<BeanPathTest> {
private static final long serialVersionUID = 6225684967115368814L;
public MyBeanPath(PathMetadata metadata) {
super(BeanPathTest.class, metadata);
}
public MyBeanPath(PathMetadata metadata, @Nullable PathInits inits) {
super(BeanPathTest.class, metadata);
}
}
private BeanPath<BeanPathTest> beanPath = new BeanPath<BeanPathTest>(BeanPathTest.class, "p");
@Test
public void as_path() {
SimplePath<BeanPathTest> simplePath = new SimplePath<BeanPathTest>(BeanPathTest.class, "p");
assertNotNull(beanPath.as(simplePath));
}
@Test
@Ignore
public void as_class() {
MyBeanPath otherPath = beanPath.as(MyBeanPath.class);
assertEquals(beanPath, otherPath);
assertTrue(otherPath.getMetadata().isRoot());
}
@Test
public void as_class_cached() {
MyBeanPath otherPath = beanPath.as(MyBeanPath.class);
// assertEquals(beanPath, otherPath);
assertTrue(otherPath == beanPath.as(MyBeanPath.class));
}
@Test
@Ignore
public void as_class_with_inits() {
beanPath = new BeanPath<BeanPathTest>(BeanPathTest.class,
PathMetadataFactory.forVariable("p"), PathInits.DEFAULT);
MyBeanPath otherPath = beanPath.as(MyBeanPath.class);
assertEquals(beanPath, otherPath);
}
@Test
public void as_class_with_inits_cached() {
beanPath = new BeanPath<BeanPathTest>(BeanPathTest.class,
PathMetadataFactory.forVariable("p"), PathInits.DEFAULT);
MyBeanPath otherPath = beanPath.as(MyBeanPath.class);
// assertEquals(beanPath, otherPath);
assertTrue(otherPath == beanPath.as(MyBeanPath.class));
}
@Test
public void createEnum() {
assertNotNull(beanPath.createEnum("property", PropertyType.class));
}
@Test
public void instanceOf() {
assertNotNull(beanPath.instanceOf(BeanPathTest.class));
}
@Test
public void instanceOfAny() {
BooleanExpression pred1 = beanPath.instanceOf(BeanPathTest.class).or(beanPath.instanceOf(SubClass.class));
BooleanExpression pred2 = beanPath.instanceOfAny(BeanPathTest.class, SubClass.class);
assertEquals(pred1, pred2);
assertEquals("p instanceof class com.querydsl.core.types.dsl.BeanPathTest || " +
"p instanceof class com.querydsl.core.types.dsl.BeanPathTest$SubClass", pred2.toString());
}
}