/* * Copyright (C) 2014 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 com.android.build.gradle.integration.common.utils; import static org.junit.Assert.assertEquals; import com.android.annotations.NonNull; import com.android.builder.model.SourceProvider; import java.io.File; import java.util.Collection; public final class SourceProviderHelper { @NonNull private final String projectName; @NonNull private final String configName; @NonNull private final SourceProvider sourceProvider; @NonNull private final File projectDir; private String javaDir; private String resourcesDir; private String manifestFile; private String resDir; private String assetsDir; private String aidlDir; private String renderscriptDir; private String jniDir; public SourceProviderHelper(@NonNull String projectName, @NonNull File projectDir, @NonNull String configName, @NonNull SourceProvider sourceProvider) { this.projectName = projectName; this.projectDir = projectDir; this.configName = configName; this.sourceProvider = sourceProvider; // configure tester with default relative paths setJavaDir("src/" + configName + "/java"); setResourcesDir("src/" + configName + "/resources"); setManifestFile("src/" + configName + "/AndroidManifest.xml"); setResDir("src/" + configName + "/res"); setAssetsDir("src/" + configName + "/assets"); setAidlDir("src/" + configName + "/aidl"); setRenderscriptDir("src/" + configName + "/rs"); setJniDir("src/" + configName + "/jni"); } @NonNull public SourceProviderHelper setJavaDir(String javaDir) { this.javaDir = javaDir; return this; } @NonNull public SourceProviderHelper setResourcesDir(String resourcesDir) { this.resourcesDir = resourcesDir; return this; } @NonNull public SourceProviderHelper setManifestFile(String manifestFile) { this.manifestFile = manifestFile; return this; } @NonNull public SourceProviderHelper setResDir(String resDir) { this.resDir = resDir; return this; } @NonNull public SourceProviderHelper setAssetsDir(String assetsDir) { this.assetsDir = assetsDir; return this; } @NonNull public SourceProviderHelper setAidlDir(String aidlDir) { this.aidlDir = aidlDir; return this; } @NonNull public SourceProviderHelper setRenderscriptDir(String renderscriptDir) { this.renderscriptDir = renderscriptDir; return this; } @NonNull public SourceProviderHelper setJniDir(String jniDir) { this.jniDir = jniDir; return this; } public void test() { testSinglePathCollection("java", javaDir, sourceProvider.getJavaDirectories()); testSinglePathCollection("resources", resourcesDir, sourceProvider.getResourcesDirectories()); testSinglePathCollection("res", resDir, sourceProvider.getResDirectories()); testSinglePathCollection("assets", assetsDir, sourceProvider.getAssetsDirectories()); testSinglePathCollection("aidl", aidlDir, sourceProvider.getAidlDirectories()); testSinglePathCollection("rs", renderscriptDir, sourceProvider.getRenderscriptDirectories()); testSinglePathCollection("jni", jniDir, sourceProvider.getCDirectories()); assertEquals("AndroidManifest", new File(projectDir, manifestFile).getAbsolutePath(), sourceProvider.getManifestFile().getAbsolutePath()); } private void testSinglePathCollection( @NonNull String setName, @NonNull String referencePath, @NonNull Collection<File> pathSet) { assertEquals(1, pathSet.size()); assertEquals(projectName + ": " + configName + "/" + setName, new File(projectDir, referencePath).getAbsolutePath(), pathSet.iterator().next().getAbsolutePath()); } }