17dd252788645e940eada959bdde927426e2531c9Paul Duffin/* 27dd252788645e940eada959bdde927426e2531c9Paul Duffin * Copyright (C) 2011 The Guava Authors 37dd252788645e940eada959bdde927426e2531c9Paul Duffin * 47dd252788645e940eada959bdde927426e2531c9Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License"); 57dd252788645e940eada959bdde927426e2531c9Paul Duffin * you may not use this file except in compliance with the License. 67dd252788645e940eada959bdde927426e2531c9Paul Duffin * You may obtain a copy of the License at 77dd252788645e940eada959bdde927426e2531c9Paul Duffin * 87dd252788645e940eada959bdde927426e2531c9Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0 97dd252788645e940eada959bdde927426e2531c9Paul Duffin * 107dd252788645e940eada959bdde927426e2531c9Paul Duffin * Unless required by applicable law or agreed to in writing, software 117dd252788645e940eada959bdde927426e2531c9Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS, 127dd252788645e940eada959bdde927426e2531c9Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137dd252788645e940eada959bdde927426e2531c9Paul Duffin * See the License for the specific language governing permissions and 147dd252788645e940eada959bdde927426e2531c9Paul Duffin * limitations under the License. 157dd252788645e940eada959bdde927426e2531c9Paul Duffin */ 167dd252788645e940eada959bdde927426e2531c9Paul Duffin 177dd252788645e940eada959bdde927426e2531c9Paul Duffinpackage com.google.common.reflect; 187dd252788645e940eada959bdde927426e2531c9Paul Duffin 197dd252788645e940eada959bdde927426e2531c9Paul Duffinimport com.google.common.testing.EqualsTester; 207dd252788645e940eada959bdde927426e2531c9Paul Duffinimport com.google.common.testing.NullPointerTester; 217dd252788645e940eada959bdde927426e2531c9Paul Duffin 227dd252788645e940eada959bdde927426e2531c9Paul Duffinimport junit.framework.TestCase; 237dd252788645e940eada959bdde927426e2531c9Paul Duffin 247dd252788645e940eada959bdde927426e2531c9Paul Duffinimport java.lang.reflect.Method; 257dd252788645e940eada959bdde927426e2531c9Paul Duffinimport java.lang.reflect.TypeVariable; 267dd252788645e940eada959bdde927426e2531c9Paul Duffin 277dd252788645e940eada959bdde927426e2531c9Paul Duffin/** 287dd252788645e940eada959bdde927426e2531c9Paul Duffin * Unit test for {@link TypeParameter}. 297dd252788645e940eada959bdde927426e2531c9Paul Duffin * 307dd252788645e940eada959bdde927426e2531c9Paul Duffin * @author Ben Yu 317dd252788645e940eada959bdde927426e2531c9Paul Duffin */ 327dd252788645e940eada959bdde927426e2531c9Paul Duffinpublic class TypeParameterTest extends TestCase { 337dd252788645e940eada959bdde927426e2531c9Paul Duffin 347dd252788645e940eada959bdde927426e2531c9Paul Duffin public <T> void testCaptureTypeParameter() throws Exception { 357dd252788645e940eada959bdde927426e2531c9Paul Duffin TypeVariable<?> variable = new TypeParameter<T>() {}.typeVariable; 367dd252788645e940eada959bdde927426e2531c9Paul Duffin TypeVariable<?> expected = TypeParameterTest.class 377dd252788645e940eada959bdde927426e2531c9Paul Duffin .getDeclaredMethod("testCaptureTypeParameter") 387dd252788645e940eada959bdde927426e2531c9Paul Duffin .getTypeParameters()[0]; 397dd252788645e940eada959bdde927426e2531c9Paul Duffin assertEquals(expected, variable); 407dd252788645e940eada959bdde927426e2531c9Paul Duffin } 417dd252788645e940eada959bdde927426e2531c9Paul Duffin 427dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testConcreteTypeRejected() { 437dd252788645e940eada959bdde927426e2531c9Paul Duffin try { 447dd252788645e940eada959bdde927426e2531c9Paul Duffin new TypeParameter<String>() {}; 457dd252788645e940eada959bdde927426e2531c9Paul Duffin fail(); 467dd252788645e940eada959bdde927426e2531c9Paul Duffin } catch (IllegalArgumentException expected) {} 477dd252788645e940eada959bdde927426e2531c9Paul Duffin } 487dd252788645e940eada959bdde927426e2531c9Paul Duffin 497dd252788645e940eada959bdde927426e2531c9Paul Duffin public <A, B> void testEquals() throws Exception { 507dd252788645e940eada959bdde927426e2531c9Paul Duffin Method method = TypeParameterTest.class.getDeclaredMethod("testEquals"); 517dd252788645e940eada959bdde927426e2531c9Paul Duffin new EqualsTester() 527dd252788645e940eada959bdde927426e2531c9Paul Duffin .addEqualityGroup( 537dd252788645e940eada959bdde927426e2531c9Paul Duffin new TypeParameter<A>() {}, new TypeParameter<A>() {}) 547dd252788645e940eada959bdde927426e2531c9Paul Duffin .addEqualityGroup(new TypeParameter<B>() {}) 557dd252788645e940eada959bdde927426e2531c9Paul Duffin .testEquals(); 567dd252788645e940eada959bdde927426e2531c9Paul Duffin } 577dd252788645e940eada959bdde927426e2531c9Paul Duffin 587dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testNullPointers() { 597dd252788645e940eada959bdde927426e2531c9Paul Duffin new NullPointerTester().testAllPublicStaticMethods(TypeParameter.class); 607dd252788645e940eada959bdde927426e2531c9Paul Duffin } 617dd252788645e940eada959bdde927426e2531c9Paul Duffin} 62