Home | History | Annotate | Download | only in apicoverage
      1 /*
      2  * Copyright (C) 2016 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.cts.apicoverage;
     18 
     19 import java.lang.String;
     20 import java.util.ArrayList;
     21 import java.util.Collection;
     22 import java.util.Collections;
     23 import java.util.HashMap;
     24 import java.util.Map;
     25 import java.util.List;
     26 import java.util.Set;
     27 
     28 /** Representation of the entire CDD. */
     29 class CddCoverage {
     30 
     31     private final Map<String, CddRequirement> requirements = new HashMap<>();
     32 
     33     public void addCddRequirement(CddRequirement cddRequirement) {
     34         requirements.put(cddRequirement.getRequirementId(), cddRequirement);
     35     }
     36 
     37     public Collection<CddRequirement> getCddRequirements() {
     38         return Collections.unmodifiableCollection(requirements.values());
     39     }
     40 
     41     public void addCoverage(String cddRequirementId, TestMethod testMethod) {
     42         if (!requirements.containsKey(cddRequirementId)) {
     43             requirements.put(cddRequirementId, new CddRequirement(cddRequirementId));
     44         }
     45 
     46         requirements.get(cddRequirementId).addTestMethod(testMethod);
     47     }
     48 
     49     static class CddRequirement {
     50         private final String mRequirementId;
     51         private final List<TestMethod> mtestMethods;
     52 
     53         CddRequirement(String requirementId) {
     54             this.mRequirementId = requirementId;
     55             this.mtestMethods = new ArrayList<>();
     56         }
     57 
     58         @Override
     59         public boolean equals(Object other) {
     60             if (other == null) {
     61                 return false;
     62             } else if (!(other instanceof CddRequirement)) {
     63                 return false;
     64             } else {
     65                 return mRequirementId.equals(((CddRequirement)other).mRequirementId);
     66             }
     67         }
     68 
     69         @Override
     70         public int hashCode() {
     71             return mRequirementId.hashCode();
     72         }
     73 
     74         @Override
     75         public String toString() {
     76             return String.format("Requirement %s %s", mRequirementId, mtestMethods);
     77         }
     78 
     79         public String getRequirementId() { return mRequirementId; }
     80 
     81         public void addTestMethod(TestMethod testMethod) {
     82             mtestMethods.add(testMethod);
     83         }
     84 
     85         public Collection<TestMethod> getTestMethods() {
     86             return Collections.unmodifiableCollection(mtestMethods);
     87         }
     88     }
     89 
     90     static class TestMethod {
     91         private final String mTestModule;
     92         private final String mTestClass;
     93         private final String mTestMethod;
     94 
     95         TestMethod(String testModule, String testClass, String testMethod) {
     96             this.mTestModule = testModule;
     97             this.mTestClass = testClass;
     98             this.mTestMethod = testMethod;
     99         }
    100 
    101         public String getTestModule() { return mTestModule; }
    102 
    103         public String getTestClass() { return mTestClass; }
    104 
    105         public String getTestMethod() { return mTestMethod; }
    106 
    107         @Override
    108         public String toString() {
    109             return String.format("%s %s#%s", mTestModule, mTestClass, mTestMethod);
    110         }
    111     }
    112 }
    113