001package org.apache.commons.beanutils2; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one or more 005 * contributor license agreements. See the NOTICE file distributed with 006 * this work for additional information regarding copyright ownership. 007 * The ASF licenses this file to You under the Apache License, Version 2.0 008 * (the "License"); you may not use this file except in compliance with 009 * the License. You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 */ 019 020import static org.apache.commons.beanutils2.BeanUtils.on; 021import static org.junit.Assert.assertNotNull; 022import static org.junit.Assert.assertSame; 023 024import org.junit.Before; 025import org.junit.Test; 026 027public class CastTestCase 028{ 029 030 private SuperClass superObj; 031 032 private SubClass subObj; 033 034 @Before 035 public void setUp() 036 { 037 superObj = new SuperClass(); 038 subObj = new SubClass(); 039 } 040 041 @Test 042 public void castSameClass() 043 { 044 SuperClass casted = on( superObj ).cast(); 045 assertNotNull( casted ); 046 assertSame( superObj, casted ); 047 } 048 049 @Test 050 public void castCompatible() 051 { 052 SuperClass casted = on( subObj ).cast(); 053 assertNotNull( casted ); 054 assertSame( subObj, casted ); 055 } 056 057 @Test( expected = ClassCastException.class ) 058 public void castIncompatible() 059 { 060 @SuppressWarnings( "unused" ) // need to assign to casted to force exception 061 SubClass casted = on( superObj ).cast(); 062 } 063 064 private static class SuperClass 065 { 066 067 } 068 069 private static class SubClass 070 extends SuperClass 071 { 072 073 } 074 075}