blob: 10f19376eb2dd4be798cc5378e7cd1b83166cee3 [file] [log] [blame]
// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.resource;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.TestDescriptionWatcher;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class DataResourceTest extends TestBase {
private static final String PACKAGE_NAME = "dataresource";
private static final String MAIN_CLASS_NAME = PACKAGE_NAME + ".ResourceTest";
private static final Path INPUT_JAR =
Paths.get(ToolHelper.EXAMPLES_BUILD_DIR, PACKAGE_NAME + FileUtils.JAR_EXTENSION);
private static final String EXPECTED_OUTPUT =
StringUtils.unixLines(
"LibClass dir: true",
"LibClass properties: true",
"LibClass property: com.test.lib.LibClass",
"LibClass text: this is a text with some content",
"- partly matching pattern 123dataresource.lib.LibClass123",
"- totally matching pattern dataresource.lib.LibClass and something after",
"- matching the package dataresource.lib",
"- matching class simple name LibClass",
"- or only single element of the package name: lib",
"- matching class descriptor dataresource/lib/LibClass",
"- matching class full descriptor Ldataresource/lib/LibClass;",
"- matching windows path dataresource\\lib\\LibClass",
"- matching pattern dataresource.lib.LibClass.",
"- matching pattern .dataresource.lib.LibClass",
"- matching pattern dataresource.lib.LibClass,",
"- matching pattern ,dataresource.lib.LibClass",
"- matching pattern =dataresource.lib.LibClass",
"- matching pattern dataresource.lib.LibClass=",
"- matching pattern dataresource.lib.LibClass/",
"- matching pattern /dataresource.lib.LibClass",
"- matching pattern ?dataresource.lib.LibClass",
"- matching pattern dataresource.lib.LibClass?",
"- matching pattern dataresource.lib.LibClass!",
"- matching pattern !dataresource.lib.LibClass",
"- matching pattern :dataresource.lib.LibClass",
"- matching pattern dataresource.lib.LibClass:",
"- matching pattern dataresource.lib.LibClass*",
"- matching pattern *dataresource.lib.LibClass",
"- matching pattern $dataresource.lib.LibClass",
"- matching pattern +dataresource.lib.LibClass",
"- matching pattern -dataresource.lib.LibClass",
"- matching pattern ^dataresource.lib.LibClass",
"- matching pattern @dataresource.lib.LibClass",
"- matching pattern (dataresource.lib.LibClass",
"- matching pattern )dataresource.lib.LibClass",
"- matching pattern àdataresource.lib.LibClass",
"- matching pattern |dataresource.lib.LibClass",
"- matching pattern [dataresource.lib.LibClass",
"- matching pattern 'dataresource.lib.LibClass",
"- matching pattern \"dataresource.lib.LibClass",
"- matching pattern `dataresource.lib.LibClass",
"- matching pattern ~dataresource.lib.LibClass",
"- matching pattern &dataresource.lib.LibClass",
"- matching pattern -dataresource.lib.LibClass",
"- matching pattern dataresource.lib.LibClass-",
"",
"LibClass const string: dataresource.lib.LibClass",
"LibClass concat string: dataresource.lib.LibClasscom.test.lib.LibClass",
"LibClass field: dataresource.lib.LibClass");
@Parameter(0)
public TestParameters parameters;
@Parameters(name = "{0}")
public static TestParametersCollection data() {
return getTestParameters().withAllRuntimesAndApiLevels().build();
}
@Rule
public TestDescriptionWatcher watcher = new TestDescriptionWatcher();
@Test
public void testJvm() throws Exception {
parameters.assumeJvmTestParameters();
testForJvm(parameters)
.addProgramFiles(INPUT_JAR)
.run(parameters.getRuntime(), MAIN_CLASS_NAME)
.assertSuccessWithOutput(EXPECTED_OUTPUT);
}
@Test
public void dataResourceTest() throws Exception {
testForR8(parameters.getBackend())
.addProgramFiles(INPUT_JAR)
.addKeepRules("-keepdirectories")
.addDontObfuscate()
.addDontShrink()
.setMinApi(parameters)
.compile()
.run(parameters.getRuntime(), MAIN_CLASS_NAME)
.assertSuccessWithOutput(EXPECTED_OUTPUT);
}
}