blob: e672f3dfd7427300b61aa2760617c4062c60b74f [file] [log] [blame]
/*
* Copyright (C) 2015 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.application
import com.android.build.gradle.integration.common.category.DeviceTests
import com.android.build.gradle.integration.common.fixture.GradleTestProject
import com.android.build.gradle.integration.common.fixture.app.AndroidTestApp
import com.android.build.gradle.integration.common.fixture.app.HelloWorldApp
import com.android.build.gradle.integration.common.fixture.app.TestSourceFile
import org.junit.AfterClass
import org.junit.BeforeClass
import org.junit.ClassRule
import org.junit.Test
import org.junit.experimental.categories.Category
import static org.junit.Assert.assertEquals
import static org.junit.Assert.assertTrue
/**
* Test resValue for string type is treated as String.
*/
class ResValueTypeTest {
static AndroidTestApp app = new HelloWorldApp()
static {
app.removeFile(app.getFile("HelloWorldTest.java"))
app.addFile(new TestSourceFile("src/androidTest/java/com/example/helloworld", "ResValueTest.java",
"""
package com.example.helloworld;
import android.test.AndroidTestCase;
public class ResValueTest extends AndroidTestCase {
public void testResValue() {
assertEquals("00", getContext().getString(R.string.resString));
}
}
"""))
}
@ClassRule
public static GradleTestProject project = GradleTestProject.builder()
.fromTestApp(app)
.create()
@BeforeClass
static void setUp() {
project.getBuildFile() << """
apply plugin: 'com.android.application'
android {
compileSdkVersion $GradleTestProject.DEFAULT_COMPILE_SDK_VERSION
buildToolsVersion "$GradleTestProject.DEFAULT_BUILD_TOOL_VERSION"
defaultConfig {
resValue "array", "resArray", "foo"
resValue "attr", "resAttr", "foo"
resValue "bool", "resBool", "true"
resValue "color", "resColor", "#ffffff"
resValue "declare-styleable", "resDeclareStyleable", "foo"
resValue "dimen", "resDimen", "42px"
resValue "fraction", "resFraction", "42%"
resValue "id", "resId", "42"
resValue "integer", "resInteger", "42"
resValue "plurals", "resPlurals", "s"
resValue "string", "resString", "00" // resString becomes "0" if it is incorrectly treated as int.
resValue "style", "resStyle", "foo"
}
}
"""
}
@AfterClass
static void cleanUp() {
project = null
app = null
}
@Test
void "check <string> tag is used in generated.xml" () {
project.execute("clean", "generateDebugResValue")
File outputFile = project.file("build/generated/res/resValues/debug/values/generated.xml")
assertTrue("Missing file: " + outputFile, outputFile.isFile())
assertEquals(
"""<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Automatically generated file. DO NOT MODIFY -->
<!-- Values from default config. -->
<array name="resArray">foo</array>
<attr name="resAttr">foo</attr>
<bool name="resBool">true</bool>
<color name="resColor">#ffffff</color>
<declare-styleable name="resDeclareStyleable">foo</declare-styleable>
<dimen name="resDimen">42px</dimen>
<fraction name="resFraction">42%</fraction>
<item name="resId" type="id">42</item>
<integer name="resInteger">42</integer>
<plurals name="resPlurals">s</plurals>
<string name="resString">00</string>
<style name="resStyle">foo</style>
</resources>
""",
outputFile.getText("UTF-8"))
}
@Test
@Category(DeviceTests.class)
void "check resValue is treated as string"() {
project.execute("clean", "connectedAndroidTest")
}
}