blob: afba8bd30f680b6e1b25ff9b47e956ff7362d977 [file] [log] [blame]
// Copyright (c) 2017, 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.rewrite.switchmaps;
import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.R8Command;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.google.common.collect.ImmutableList;
import java.nio.file.Paths;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@RunWith(Parameterized.class)
public class RewriteSwitchMapsTest extends TestBase {
private Backend backend;
@Parameterized.Parameters(name = "Backend: {0}")
public static Backend[] data() {
return ToolHelper.getBackends();
}
public RewriteSwitchMapsTest(Backend backend) {
this.backend = backend;
}
private static final String JAR_FILE = "switchmaps.jar";
private static final String SWITCHMAP_CLASS_NAME = "switchmaps.Switches$1";
private static final List<String> PG_CONFIG = ImmutableList.of(
"-keep class switchmaps.Switches { public static void main(...); }",
"-dontobfuscate",
"-keepattributes *");
@Test
public void checkSwitchMapsRemoved() throws Exception {
run(CompilationMode.RELEASE);
}
@Test
public void checkSwitchMapsRemovedDebug() throws Exception {
run(CompilationMode.DEBUG);
}
private void run(CompilationMode compilationMode) throws Exception {
R8Command command =
R8Command.builder()
.addProgramFiles(Paths.get(ToolHelper.EXAMPLES_BUILD_DIR).resolve(JAR_FILE))
.addLibraryFiles(runtimeJar(backend))
.addProguardConfiguration(PG_CONFIG, Origin.unknown())
.setMode(compilationMode)
.setProgramConsumer(emptyConsumer(backend))
.build();
AndroidApp result = ToolHelper.runR8(command);
CodeInspector inspector = new CodeInspector(result);
Assert.assertFalse(inspector.clazz(SWITCHMAP_CLASS_NAME).isPresent());
}
}