OSDN Git Service

original
[gb-231r1-is01/GB_2.3_IS01.git] / cts / tools / signature-tools / test / signature / converter / dex / GenericSignatureParserTest.java
diff --git a/cts/tools/signature-tools/test/signature/converter/dex/GenericSignatureParserTest.java b/cts/tools/signature-tools/test/signature/converter/dex/GenericSignatureParserTest.java
new file mode 100644 (file)
index 0000000..52d73f8
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * 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);
+        
+    }
+}