• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2008 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 testprogress2;
18 
19 import com.sun.javadoc.AnnotationDesc;
20 import com.sun.javadoc.ClassDoc;
21 import com.sun.javadoc.MethodDoc;
22 
23 /**
24  *
25  */
26 public class MethodOriginator implements Originator {
27     private final MethodDoc mMethod;
28 
29     private final String mComment;
30 
31     private final ClassDoc mClass;
32 
33     private String knownFailure = null;
34 
35     private String brokenTest = null;
36 
37     private String toBeFixed = null;
38 
39     /**
40      * @param testMethod
41      * @param clazz we need to provide the clazz since junit collects the
42      *            testMethods from all super classes - and thus MethodDoc's
43      *            class can point to a superclass. However, we want to know the
44      *            class where the TestTargetClass is pointing to the API class.
45      * @param comment
46      */
MethodOriginator(MethodDoc testMethod, ClassDoc clazz, String comment)47     MethodOriginator(MethodDoc testMethod, ClassDoc clazz, String comment) {
48         mMethod = testMethod;
49         mComment = comment;
50         mClass = clazz;
51 
52         AnnotationDesc[] annots = testMethod.annotations();
53         for (AnnotationDesc annot : annots) {
54             if (annot.annotationType().qualifiedName().equals(
55                     "dalvik.annotation.KnownFailure")) {
56                 knownFailure = "<b>@KnownFailure:</b>"
57                         + (String)annot.elementValues()[0].value().value();
58             } else if (annot.annotationType().qualifiedName().equals(
59                     "dalvik.annotation.BrokenTest")) {
60                 brokenTest = "<b>@BrokenTest:</b>"
61                         + (String)annot.elementValues()[0].value().value();
62             } else if (annot.annotationType().qualifiedName().equals(
63                     "dalvik.annotation.ToBeFixed")) {
64                 String info = "N/A";
65                 if (annot.elementValues().length > 0) {
66                     info = (String)annot.elementValues()[0].value().value();
67                 }
68 
69                 toBeFixed = "<b>@ToBeFixed:</b>" + info;
70             }
71             // else some other annotation - ignore
72         }
73     }
74 
75     /*
76      * (non-Javadoc)
77      * @see testprogress.Originator#asString()
78      */
asString()79     public String asString() {
80         return (mComment != null ? "comment:" + mComment + " - " : "")
81                 + mClass.qualifiedName() + ": <b>" + mMethod.name() + "</b>"
82                 + mMethod.signature()
83                 + (brokenTest != null ? " [" + brokenTest + "]" : "")
84                 + (toBeFixed != null ? " [" + toBeFixed + "]" : "")
85                 + (knownFailure != null ? " [" + knownFailure + "]" : "");
86     }
87 
isDisabled()88     public boolean isDisabled() {
89         return mMethod.name().startsWith("_test");
90     }
91 
getBrokenTest()92     public String getBrokenTest() {
93         return brokenTest;
94     }
95 
getToBeFixed()96     public String getToBeFixed() {
97         return toBeFixed;
98     }
99 
getKnownFailure()100     public String getKnownFailure() {
101         return knownFailure;
102     }
103 
104 }
105