blob: ede9fee5c6f5b838c19b50e722931d9800d71da7 [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.compatproguard;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.compatproguard.CompatProguard.CompatProguardOptions;
import org.junit.Test;
public class CompatProguardTest {
private CompatProguardOptions parseArgs(String... args)throws Exception {
return CompatProguard.CompatProguardOptions.parse(args);
}
@Test
public void testDefaultDataResources() throws Exception {
CompatProguardOptions options = parseArgs();
assertNull(options.output);
assertEquals(1, options.minApi);
assertFalse(options.forceProguardCompatibility);
assertTrue(options.includeDataResources);
assertFalse(options.multiDex);
assertNull(options.mainDexList);
assertEquals(0, options.proguardConfig.size());
}
@Test
public void testShortLine() throws Exception {
CompatProguardOptions options = parseArgs("-");
assertEquals(1, options.proguardConfig.size());
}
@Test
public void testProguardOptions() throws Exception {
CompatProguardOptions options;
options = parseArgs("-xxx");
assertEquals(1, options.proguardConfig.size());
options = parseArgs("-xxx", "xxx");
assertEquals(1, options.proguardConfig.size());
options = parseArgs("-xxx", "-yyy");
assertEquals(2, options.proguardConfig.size());
options = parseArgs("-xxx", "xxx", "-yyy", "yyy");
assertEquals(2, options.proguardConfig.size());
}
@Test
public void testInjarsAndOutput() throws Exception {
CompatProguardOptions options;
String injars = "input.jar";
String output = "outputdir";
options = parseArgs("-injars", injars, "--output", output);
assertEquals(output, options.output);
assertEquals(1, options.proguardConfig.size());
options = parseArgs("--output", output, "-injars", injars);
assertEquals(1, options.proguardConfig.size());
}
@Test
public void testMainDexList() throws Exception {
CompatProguardOptions options;
String mainDexList = "maindexlist.txt";
options = parseArgs("--main-dex-list", mainDexList);
assertEquals(mainDexList, options.mainDexList);
options = parseArgs("--main-dex-list=" + mainDexList);
assertEquals(mainDexList, options.mainDexList);
options = parseArgs("--main-dex-list", mainDexList, "--minimal-main-dex");
assertEquals(mainDexList, options.mainDexList);
options = parseArgs("--minimal-main-dex", "--main-dex-list=" + mainDexList);
assertEquals(mainDexList, options.mainDexList);
}
@Test
public void testInclude() throws Exception {
CompatProguardOptions options = parseArgs("-include --my-include-file.txt");
assertEquals(1, options.proguardConfig.size());
assertEquals("-include --my-include-file.txt", options.proguardConfig.get(0));
}
@Test
public void testNoLocalsOption() throws Exception {
CompatProguardOptions options = parseArgs("--no-locals");
assertEquals(0, options.proguardConfig.size());
}
@Test
public void testNoDataResources() throws Exception {
CompatProguardOptions options = parseArgs("--no-data-resources");
assertFalse(options.includeDataResources);
}
@Test
public void testDisableVerticalClassMerging() throws Exception {
CompatProguardOptions enabledOptions = parseArgs();
assertFalse(enabledOptions.disableVerticalClassMerging);
CompatProguardOptions disabledOptions = parseArgs("--no-vertical-class-merging");
assertTrue(disabledOptions.disableVerticalClassMerging);
}
}