| /* |
| * Copyright 2014-present Facebook, Inc. |
| * |
| * 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.facebook.buck.android; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| import com.facebook.buck.model.BuildTarget; |
| import com.facebook.buck.model.BuildTargetFactory; |
| import com.facebook.buck.model.ImmutableFlavor; |
| import com.facebook.buck.rules.coercer.BuildConfigFields; |
| import com.google.common.collect.ImmutableList; |
| |
| import org.junit.Test; |
| |
| /** |
| * Unit test for {@link BuildConfigs}. |
| */ |
| public class BuildConfigsTest { |
| |
| @Test |
| public void testDefaultGenerateBuildConfigDotJava() { |
| String expectedJavaCode = |
| "// Generated by //java/com/example:build_config. DO NOT MODIFY.\n" + |
| "package com.example.buck;\n" + |
| "public class BuildConfig {\n" + |
| " private BuildConfig() {}\n" + |
| " public static final boolean DEBUG = !Boolean.parseBoolean(null);\n" + |
| " public static final boolean IS_EXOPACKAGE = Boolean.parseBoolean(null);\n" + |
| " public static final int EXOPACKAGE_FLAGS = !Boolean.parseBoolean(null) ? 0 : 0;\n" + |
| "}\n"; |
| BuildTarget source = BuildTarget |
| .builder(BuildTargetFactory.newInstance("//java/com/example:build_config")) |
| .addFlavors(ImmutableFlavor.of("graph_enhanced_craziness")) |
| .build(); |
| String observedJavaCode = BuildConfigs.generateBuildConfigDotJava(source, "com.example.buck"); |
| assertEquals( |
| "Because the 'temporary' BuildConfig.java might be used in a unit test, " + |
| "DEBUG should default to true, IS_EXOPACKAGE should default to false and ." + |
| "EXOPACKAGE_FLAGS should default to an empty HashSet.", |
| expectedJavaCode, |
| observedJavaCode); |
| } |
| |
| @Test |
| public void testCustomGenerateBuildConfigDotJavaWithoutConstantExpressions() { |
| BuildConfigFields customValues = BuildConfigFields.fromFieldDeclarations(ImmutableList.of( |
| "String KEYSTORE_TYPE = \"release\"", |
| "int BUILD_NUMBER = 42", |
| "long BUILD_DATE = 1404321113076000L", |
| "float THREE = 3.0F", |
| "boolean DEBUG = false", |
| "boolean IS_EXOPACKAGE = true")); |
| String expectedJavaCode = |
| "// Generated by //java/com/example:build_config. DO NOT MODIFY.\n" + |
| "package com.example;\n" + |
| "public class BuildConfig {\n" + |
| " private BuildConfig() {}\n" + |
| " public static final String KEYSTORE_TYPE = " + |
| "!Boolean.parseBoolean(null) ? \"release\" : null;\n" + |
| " public static final int BUILD_NUMBER = " + |
| "!Boolean.parseBoolean(null) ? 42 : 0;\n" + |
| " public static final long BUILD_DATE = " + |
| "!Boolean.parseBoolean(null) ? 1404321113076000L : 0;\n" + |
| " public static final float THREE = " + |
| "!Boolean.parseBoolean(null) ? 3.0F : 0;\n" + |
| " public static final boolean DEBUG = Boolean.parseBoolean(null);\n" + |
| " public static final boolean IS_EXOPACKAGE = !Boolean.parseBoolean(null);\n" + |
| " public static final int EXOPACKAGE_FLAGS = !Boolean.parseBoolean(null) ? 0 : 0;\n" + |
| "}\n"; |
| BuildTarget source = BuildTargetFactory.newInstance("//java/com/example:build_config"); |
| String observedJavaCode = BuildConfigs.generateBuildConfigDotJava( |
| source, |
| "com.example", |
| /* useConstantExpressions */ false, |
| customValues); |
| assertEquals(expectedJavaCode, observedJavaCode); |
| } |
| |
| @Test |
| public void testCustomGenerateBuildConfigDotJavaWithConstantExpressions() { |
| BuildConfigFields customValues = BuildConfigFields.fromFieldDeclarations(ImmutableList.of( |
| "String KEYSTORE_TYPE = \"release\"", |
| "int BUILD_NUMBER = 42", |
| "long BUILD_DATE = 1404321113076000L", |
| "float THREE = 3.0F", |
| "boolean DEBUG = false", |
| "int EXOPACKAGE_FLAGS = 0")); |
| String expectedJavaCode = |
| "// Generated by //java/com/example:build_config. DO NOT MODIFY.\n" + |
| "package com.example;\n" + |
| "public class BuildConfig {\n" + |
| " private BuildConfig() {}\n" + |
| " public static final String KEYSTORE_TYPE = \"release\";\n" + |
| " public static final int BUILD_NUMBER = 42;\n" + |
| " public static final long BUILD_DATE = 1404321113076000L;\n" + |
| " public static final float THREE = 3.0F;\n" + |
| " public static final boolean DEBUG = false;\n" + |
| " public static final int EXOPACKAGE_FLAGS = 0;\n" + |
| " public static final boolean IS_EXOPACKAGE = false;\n" + |
| "}\n"; |
| BuildTarget source = BuildTarget |
| .builder(BuildTargetFactory.newInstance("//java/com/example:build_config")) |
| .addFlavors(ImmutableFlavor.of("graph_enhanced_craziness")) |
| .build(); |
| String observedJavaCode = BuildConfigs.generateBuildConfigDotJava( |
| source, |
| "com.example", |
| /* useConstantExpressions */ true, |
| customValues); |
| assertEquals(expectedJavaCode, observedJavaCode); |
| } |
| } |