--- /dev/null
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * 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 signature.converter.dex;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import dex.reader.DexTestsCommon;
+import dex.reader.util.JavaSource;
+import dex.reader.util.JavaSourceToDexUtil;
+import dex.structure.DexClass;
+import dex.structure.DexFile;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import signature.converter.dex.DexToSigConverter;
+import signature.converter.dex.DexUtil;
+import signature.converter.dex.GenericSignatureParser;
+import signature.model.impl.SigClassDefinition;
+import signature.model.util.TypePool;
+
+import java.io.IOException;
+
+public class GenericSignatureParserTest extends DexTestsCommon{
+
+ private DexToSigConverter converter;
+ private JavaSourceToDexUtil dexUtil;
+ private GenericSignatureParser parser;
+
+ @Before
+ public void setupConverter(){
+ converter = new DexToSigConverter();
+ dexUtil = new JavaSourceToDexUtil();
+ parser = new GenericSignatureParser(new TypePool(), converter);
+ }
+
+ @Test
+ public void getGenericSignatureTest() throws IOException {
+ DexFile dexFile = dexUtil.getFrom(new JavaSource("B", "public class B<T>{}"));
+ DexClass dexClass = getClass(dexFile, "LB;");
+ assertEquals("<T:Ljava/lang/Object;>Ljava/lang/Object;", DexUtil.getGenericSignature(dexClass));
+ SigClassDefinition sigClass = converter.convertClass(dexClass);
+
+ parser.parseForClass(sigClass, DexUtil.getGenericSignature(dexClass));
+ //type parameter name
+ assertEquals(1, parser.formalTypeParameters.size());
+ assertEquals("T", parser.formalTypeParameters.get(0).getName());
+ //type parameter declaration
+ assertSame(sigClass, parser.formalTypeParameters.get(0).getGenericDeclaration());
+ //type parameter upper bounds
+ assertEquals(1, parser.formalTypeParameters.get(0).getUpperBounds().size());
+// IType type = parser.formalTypeParameters.get(0).getUpperBounds().get(0);
+
+ }
+}