/* * Copyright (C) 2012 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.builder.core; import com.android.builder.internal.ClassFieldImpl; import com.android.builder.model.ClassField; import com.android.builder.model.ProductFlavor; import com.google.common.collect.ImmutableMap; import junit.framework.TestCase; import java.util.Collection; import java.util.Map; public class DefaultProductFlavorTest extends TestCase { private DefaultProductFlavor mDefault; private DefaultProductFlavor mDefault2; private DefaultProductFlavor mCustom; private DefaultProductFlavor mCustom2; @Override protected void setUp() throws Exception { mDefault = new DefaultProductFlavor("default"); mDefault2 = new DefaultProductFlavor("default2"); mCustom = new DefaultProductFlavor("custom"); mCustom.setMinSdkVersion(new DefaultApiVersion(42)); mCustom.setTargetSdkVersion(new DefaultApiVersion(43)); mCustom.setRenderscriptTargetApi(17); mCustom.setVersionCode(44); mCustom.setVersionName("42.0"); mCustom.setApplicationId("com.forty.two"); mCustom.setTestApplicationId("com.forty.two.test"); mCustom.setTestInstrumentationRunner("com.forty.two.test.Runner"); mCustom.setTestHandleProfiling(true); mCustom.setTestFunctionalTest(true); mCustom.addResourceConfiguration("hdpi"); mCustom.addManifestPlaceholders( ImmutableMap.<String, Object>of("one", "oneValue", "two", "twoValue")); mCustom.addResValue(new ClassFieldImpl("foo", "one", "oneValue")); mCustom.addResValue(new ClassFieldImpl("foo", "two", "twoValue")); mCustom.addBuildConfigField(new ClassFieldImpl("foo", "one", "oneValue")); mCustom.addBuildConfigField(new ClassFieldImpl("foo", "two", "twoValue")); mCustom2 = new DefaultProductFlavor("custom2"); mCustom2.addResourceConfigurations("ldpi", "hdpi"); mCustom2.addManifestPlaceholders( ImmutableMap.<String, Object>of("two", "twoValueBis", "three", "threeValue")); mCustom2.addResValue(new ClassFieldImpl("foo", "two", "twoValueBis")); mCustom2.addResValue(new ClassFieldImpl("foo", "three", "threeValue")); mCustom2.addBuildConfigField(new ClassFieldImpl("foo", "two", "twoValueBis")); mCustom2.addBuildConfigField(new ClassFieldImpl("foo", "three", "threeValue")); } public void testClone() { ProductFlavor flavor = DefaultProductFlavor.clone(mCustom); assertEquals(mCustom, flavor); } public void testMergeOnDefault() { ProductFlavor flavor = DefaultProductFlavor.mergeFlavors(mDefault, mCustom); assertNotNull(flavor.getMinSdkVersion()); assertEquals(42, flavor.getMinSdkVersion().getApiLevel()); assertNotNull(flavor.getTargetSdkVersion()); assertEquals(43, flavor.getTargetSdkVersion().getApiLevel()); assertNotNull(flavor.getRenderscriptTargetApi()); assertEquals(17, flavor.getRenderscriptTargetApi().intValue()); assertNotNull(flavor.getVersionCode()); assertEquals(44, flavor.getVersionCode().intValue()); assertEquals("42.0", flavor.getVersionName()); assertEquals("com.forty.two", flavor.getApplicationId()); assertEquals("com.forty.two.test", flavor.getTestApplicationId()); assertEquals("com.forty.two.test.Runner", flavor.getTestInstrumentationRunner()); assertEquals(Boolean.TRUE, flavor.getTestHandleProfiling()); assertEquals(Boolean.TRUE, flavor.getTestFunctionalTest()); } public void testMergeOnCustom() { ProductFlavor flavor = DefaultProductFlavor.mergeFlavors(mDefault, mCustom); assertNotNull(flavor.getMinSdkVersion()); assertEquals(42, flavor.getMinSdkVersion().getApiLevel()); assertNotNull(flavor.getTargetSdkVersion()); assertEquals(43, flavor.getTargetSdkVersion().getApiLevel()); assertNotNull(flavor.getRenderscriptTargetApi()); assertEquals(17, flavor.getRenderscriptTargetApi().intValue()); assertNotNull(flavor.getVersionCode()); assertEquals(44, flavor.getVersionCode().intValue()); assertEquals("42.0", flavor.getVersionName()); assertEquals("com.forty.two", flavor.getApplicationId()); assertEquals("com.forty.two.test", flavor.getTestApplicationId()); assertEquals("com.forty.two.test.Runner", flavor.getTestInstrumentationRunner()); assertEquals(Boolean.TRUE, flavor.getTestHandleProfiling()); assertEquals(Boolean.TRUE, flavor.getTestFunctionalTest()); } public void testMergeDefaultOnDefault() { ProductFlavor flavor = DefaultProductFlavor.mergeFlavors(mDefault2, mDefault); assertNull(flavor.getMinSdkVersion()); assertNull(flavor.getTargetSdkVersion()); assertNull(flavor.getRenderscriptTargetApi()); assertNull(flavor.getVersionCode()); assertNull(flavor.getVersionName()); assertNull(flavor.getApplicationId()); assertNull(flavor.getTestApplicationId()); assertNull(flavor.getTestInstrumentationRunner()); assertNull(flavor.getTestHandleProfiling()); assertNull(flavor.getTestFunctionalTest()); } public void testResourceConfigMerge() { ProductFlavor flavor = DefaultProductFlavor.mergeFlavors(mCustom2, mCustom); Collection<String> configs = flavor.getResourceConfigurations(); assertEquals(2, configs.size()); assertTrue(configs.contains("hdpi")); assertTrue(configs.contains("ldpi")); } public void testManifestPlaceholdersMerge() { ProductFlavor flavor = DefaultProductFlavor.mergeFlavors(mCustom2, mCustom); Map<String, Object> manifestPlaceholders = flavor.getManifestPlaceholders(); assertEquals(3, manifestPlaceholders.size()); assertEquals("oneValue", manifestPlaceholders.get("one")); assertEquals("twoValue", manifestPlaceholders.get("two")); assertEquals("threeValue", manifestPlaceholders.get("three")); } public void testResValuesMerge() { ProductFlavor flavor = DefaultProductFlavor.mergeFlavors(mCustom2, mCustom); Map<String, ClassField> resValues = flavor.getResValues(); assertEquals(3, resValues.size()); assertEquals("oneValue", resValues.get("one").getValue()); assertEquals("twoValue", resValues.get("two").getValue()); assertEquals("threeValue", resValues.get("three").getValue()); } public void testBuildConfigFieldMerge() { ProductFlavor flavor = DefaultProductFlavor.mergeFlavors(mCustom2, mCustom); Map<String, ClassField> buildConfigFields = flavor.getBuildConfigFields(); assertEquals(3, buildConfigFields.size()); assertEquals("oneValue", buildConfigFields.get("one").getValue()); assertEquals("twoValue", buildConfigFields.get("two").getValue()); assertEquals("threeValue", buildConfigFields.get("three").getValue()); } }