15d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis/*
2ba381a314edcd57963ed1ac5910595e04faf29ccFilip Pavlis * Copyright 2018 The Android Open Source Project
35d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis *
45d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * Licensed under the Apache License, Version 2.0 (the "License");
55d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * you may not use this file except in compliance with the License.
65d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * You may obtain a copy of the License at
75d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis *
84a360e3a3af230badc847867c117f605367170aaFilip Pavlis *      http://www.apache.org/licenses/LICENSE-2.0
95d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis *
105d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * Unless required by applicable law or agreed to in writing, software
115d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * distributed under the License is distributed on an "AS IS" BASIS,
125d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis * See the License for the specific language governing permissions and
144a360e3a3af230badc847867c117f605367170aaFilip Pavlis * limitations under the License.
155d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis */
165d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
17ba381a314edcd57963ed1ac5910595e04faf29ccFilip Pavlispackage com.android.tools.build.jetifier.processor.transform.proguard
185d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
195d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlisimport org.junit.Test
205d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
215d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlisclass ClassSpecTest_MethodInitSelector {
225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_methodsInitSelector() {
24e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
295d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
305d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <methods>; \n" +
325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <methods>; \n" +
375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
385d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
395d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
405d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
415d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_methodsInitSelector_modifiers() {
42e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
435d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
445d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
455d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
465d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
475d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
485d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
495d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public <methods>; \n" +
505d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public static <methods>; \n" +
515d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public !static <methods>; \n" +
525d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  !private static <methods>; \n" +
535d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
545d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
555d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
565d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
575d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public <methods>; \n" +
585d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public static <methods>; \n" +
595d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public !static <methods>; \n" +
605d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  !private static <methods>; \n" +
615d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
625d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
635d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
645d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
655d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_methodsInitSelector_modifiers_annotation() {
66e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
675d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
685d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
695d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
705d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
715d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Annotation" to "test/Annotation"
725d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
735d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
745d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
755d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation public <methods>; \n" +
765d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation public static <methods>; \n" +
775d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation public !static <methods>; \n" +
785d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation !private static <methods>; \n" +
795d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
805d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
815d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
825d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
835d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation public <methods>; \n" +
845d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation public static <methods>; \n" +
855d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation public !static <methods>; \n" +
865d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation !private static <methods>; \n" +
875d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
885d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
895d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
905d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
915d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_methodInitSelector() {
92e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
935d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
945d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
955d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
965d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
975d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Activity" to "test/Activity",
985d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment"
995d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1005d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
1015d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1025d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <init>(); \n" +
1035d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <init>(*); \n" +
1045d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <init>(...); \n" +
1055d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <init>(support.Activity); \n" +
1065d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <init>(support.Activity, support.Fragment, keep.Please); \n" +
1075d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1085d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1095d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
1105d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1115d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <init>(); \n" +
1125d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <init>(*); \n" +
1135d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <init>(...); \n" +
1145d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <init>(test.Activity); \n" +
1155d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  <init>(test.Activity, test.Fragment, keep.Please); \n" +
1165d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1175d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1185d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
1195d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
1205d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_methodInitSelector_modifiers() {
121e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
1225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
1235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
1245d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
1265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Activity" to "test/Activity",
1275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment"
1285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1295d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
1305d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public <init>(); \n" +
1325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public static <init>(*); \n" +
1335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  !public !static <init>(...); \n" +
1345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  !private static <init>(support.Activity); \n" +
1355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public !abstract <init>(support.Activity, support.Fragment, keep.Please); \n" +
1365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1385d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
1395d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1405d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public <init>(); \n" +
1415d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public static <init>(*); \n" +
1425d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  !public !static <init>(...); \n" +
1435d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  !private static <init>(test.Activity); \n" +
1445d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public !abstract <init>(test.Activity, test.Fragment, keep.Please); \n" +
1455d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1465d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1475d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
1485d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
1495d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_methodInitSelector_annotation() {
150e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
1515d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
1525d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
1535d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1545d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
1555d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Activity" to "test/Activity",
1565d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment",
1575d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Annotation" to "test/Annotation"
1585d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1595d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
1605d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1615d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation <init>(); \n" +
1625d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation <init>(*); \n" +
1635d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation <init>(...); \n" +
1645d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @keep.Me <init>(support.Activity); \n" +
165e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "  @support.Annotation <init>(support.Activity, support.Fragment, keep.Please);" +
166e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                " \n" +
1675d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1685d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1695d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
1705d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1715d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation <init>(); \n" +
1725d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation <init>(*); \n" +
1735d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation <init>(...); \n" +
1745d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @keep.Me <init>(test.Activity); \n" +
1755d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation <init>(test.Activity, test.Fragment, keep.Please); \n" +
1765d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1775d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1785d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
1795d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
1805d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_methodInitSelector_modifiers_annotation() {
181e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
1825d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
1835d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
1845d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1855d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
1865d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Activity" to "test/Activity",
1875d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment",
1885d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Annotation" to "test/Annotation"
1895d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1905d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
1915d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1925d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation public <init>(); \n" +
1935d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation public static <init>(*); \n" +
1945d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation !public !static <init>(...); \n" +
1955d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation !private static <init>(support.Activity); \n" +
196e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "  @support.Annotation public !abstract <init>(support.Activity, support.Fragment" +
197e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                ", keep.Please); \n" +
1985d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1995d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2005d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
2015d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
2025d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation public <init>(); \n" +
2035d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation public static <init>(*); \n" +
2045d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation !public !static <init>(...); \n" +
2055d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation !private static <init>(test.Activity); \n" +
206e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "  @test.Annotation public !abstract <init>(test.Activity, test.Fragment, " +
207e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "keep.Please); \n" +
2085d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
2095d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2105d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
2115d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
2125d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_methodInitSelector_modifiers_annotation_test() {
213e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
2145d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
2155d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
2165d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2175d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
2185d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Activity" to "test/Activity",
2195d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment",
2205d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Annotation" to "test/Annotation"
2215d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
2235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
224e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "  @support.Annotation  public  !abstract \t <init> ( support.Activity , " +
225e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "support.Fragment, keep.Please); \n" +
2265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
2275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
2295d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
230e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "  @test.Annotation  public  !abstract \t <init> (test.Activity, test.Fragment, " +
231e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "keep.Please); \n" +
2325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
2335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
2345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
235982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis
236982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis    @Test fun proGuard_methodInitSelector_multiple() {
237982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis        ProGuardTester()
238982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            .forGivenPrefixes(
239982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "support/"
240982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            )
241982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            .forGivenProGuardMapSet("support.**" to setOf("support.**", "androidx.**"))
242982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            .testThatGivenProGuard(
243982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-keep public class * { \n" +
244982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "  <init>(support.**, support.**); \n" +
245982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}"
246982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            )
247982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            .rewritesTo(
248982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-keep public class * { \n" +
249982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "  <init>(support.**, support.**); \n" +
250982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}\n" +
251982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-keep public class * { \n" +
252982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "  <init>(androidx.**, support.**); \n" +
253982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}\n" +
254982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-keep public class * { \n" +
255982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "  <init>(support.**, androidx.**); \n" +
256982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}\n" +
257982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-keep public class * { \n" +
258982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "  <init>(androidx.**, androidx.**); \n" +
259982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}"
260982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            )
261982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis    }
2625d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis}