1 /* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.mkstubs.sourcer; 18 19 20 import org.junit.After; 21 import org.junit.Before; 22 import org.junit.Test; 23 import org.objectweb.asm.ClassReader; 24 25 import java.io.StringWriter; 26 27 /** 28 * 29 */ 30 public class ClassSourcerTest extends TestHelper { 31 32 /** 33 * @throws java.lang.Exception 34 */ 35 @Before setUp()36 public void setUp() throws Exception { 37 } 38 39 /** 40 * @throws java.lang.Exception 41 */ 42 @After tearDown()43 public void tearDown() throws Exception { 44 } 45 46 @Test testBaseClassSource()47 public void testBaseClassSource() throws Exception { 48 StringWriter sw = new StringWriter(); 49 ClassReader cr = new ClassReader("data/TestBaseClass"); 50 51 ClassSourcer jw = new ClassSourcer(new Output(sw)); 52 cr.accept(jw, 0); 53 54 assertSourceEquals( 55 "package data;\n" + 56 "public class TestBaseClass extends java.lang.Object implements java.lang.Runnable {\n" + 57 "\n" + 58 " private final java.lang.String mArg;\n" + 59 " \n" + 60 " public TestBaseClass() {\n" + 61 " throw new RuntimeException(\"Stub\");" + 62 " }\n" + 63 " public TestBaseClass(java.lang.String arg0) {\n" + 64 " throw new RuntimeException(\"Stub\");" + 65 " }\n" + 66 " public java.lang.String getArg() {\n" + 67 " throw new RuntimeException(\"Stub\");" + 68 " }\n" + 69 " public void run() {\n" + 70 " throw new RuntimeException(\"Stub\");" + 71 " }\n" + 72 "}", 73 sw.toString()); 74 } 75 76 @Test testInnerClassSource()77 public void testInnerClassSource() throws Exception { 78 StringWriter sw = new StringWriter(); 79 ClassReader cr = new ClassReader("data/TestInnerClass"); 80 81 ClassSourcer jw = new ClassSourcer(new Output(sw)); 82 cr.accept(jw, 0); 83 84 assertSourceEquals( 85 "package data;\n" + 86 "public class TestInnerClass extends java.lang.Object {\n" + 87 " private final java.lang.String mArg;\n" + 88 " public TestInnerClass() {\n" + 89 " throw new RuntimeException(\"Stub\");\n" + 90 " }\n" + 91 " public TestInnerClass(java.lang.String arg0) {\n" + 92 " throw new RuntimeException(\"Stub\");\n" + 93 " }\n" + 94 " public java.lang.String getArg() {\n" + 95 " throw new RuntimeException(\"Stub\");\n" + 96 " }\n" + 97 " public data.TestInnerClass$InnerPubClass getInnerPubClass() {\n" + 98 " throw new RuntimeException(\"Stub\");\n" + 99 " }\n" + 100 "}", 101 sw.toString()); 102 } 103 104 @Test testTemplateClassSource()105 public void testTemplateClassSource() throws Exception { 106 StringWriter sw = new StringWriter(); 107 ClassReader cr = new ClassReader("data/TestTemplateClass"); 108 109 ClassSourcer jw = new ClassSourcer(new Output(sw)); 110 cr.accept(jw, 0); 111 112 assertSourceEquals( 113 "package data;\n" + 114 "public class TestTemplateClass<T extends java.io.InputStream, U extends java.lang.Object> extends java.lang.Object {\n" + 115 " private final java.util.Map<T, U> mMap_T_U;\n" + 116 " public java.util.Map<java.util.ArrayList<T>, java.util.Map<java.lang.String, java.util.ArrayList<U>>> mMap_T_S_U;\n" + 117 " public TestTemplateClass() {\n" + 118 " throw new RuntimeException(\"Stub\");\n" + 119 " }\n" + 120 " public java.util.Map<T, U> getMap_T_U() {\n" + 121 " throw new RuntimeException(\"Stub\");\n" + 122 " }\n" + 123 " public java.util.Map<java.util.ArrayList<T>, java.util.Map<java.lang.String, java.util.ArrayList<U>>> getMap_T_S_U() {\n" + 124 " throw new RuntimeException(\"Stub\");\n" + 125 " }\n" + 126 " public void draw(java.util.List<? extends org.w3c.dom.css.Rect> arg0) {\n" + 127 " throw new RuntimeException(\"Stub\");\n" + 128 " }\n" + 129 " public static <T extends java.lang.Comparable<? super T>> void sort(java.util.List<T> arg0) {\n" + 130 " throw new RuntimeException(\"Stub\");\n" + 131 " }\n" + 132 " public <X extends T, Y extends java.lang.Object> void getMap(java.util.List<T> arg0, java.util.Map<T, U> arg1, java.util.Map<X, java.util.Set<? super Y>> arg2) {\n" + 133 " throw new RuntimeException(\"Stub\");\n" + 134 " }\n" + 135 "}", 136 sw.toString()); 137 } 138 139 } 140