blob: b268477b09474fd7f52f1ce9ab7c2564e3cb25fa [file] [log] [blame]
/*
* 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);
}
}