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_NamedCtorSelector {
225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_ctorSelector() {
24e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
295d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Activity" to "test/Activity",
305d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment"
315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  support.Activity(); \n" +
355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  support.Activity(...); \n" +
365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  support.Activity(*); \n" +
375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  support.Activity(support.Activity); \n" +
385d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  support.Activity(support.Activity, support.Fragment, keep.Please); \n" +
395d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
405d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
415d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
425d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
435d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  test.Activity(); \n" +
445d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  test.Activity(...); \n" +
455d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  test.Activity(*); \n" +
465d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  test.Activity(test.Activity); \n" +
475d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  test.Activity(test.Activity, test.Fragment, keep.Please); \n" +
485d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
495d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
505d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
515d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
525d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_ctorSelector_modifiers() {
53e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
545d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
555d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
565d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
575d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
585d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Activity" to "test/Activity",
595d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment"
605d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
615d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
625d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
635d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public support.Activity(); \n" +
645d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public static support.Activity(...); \n" +
655d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  !private support.Activity(*); \n" +
665d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  !public !static support.Activity(support.Activity); \n" +
67e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "  !protected support.Activity(support.Activity, support.Fragment, keep.Please);" +
68e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                " \n" +
695d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
705d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
715d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
725d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
735d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public test.Activity(); \n" +
745d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  public static test.Activity(...); \n" +
755d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  !private test.Activity(*); \n" +
765d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  !public !static test.Activity(test.Activity); \n" +
775d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  !protected test.Activity(test.Activity, test.Fragment, keep.Please); \n" +
785d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
795d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
805d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
815d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
825d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_ctorSelector_annotation() {
83e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
845d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
855d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
865d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
875d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
885d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Activity" to "test/Activity",
895d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment",
905d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Annotation" to "test/Annotation"
915d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
925d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
935d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
945d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation support.Activity(); \n" +
955d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation support.Activity(...); \n" +
965d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation support.Activity(*); \n" +
975d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation support.Activity(support.Activity); \n" +
98e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "  @support.Annotation support.Activity(support.Activity, support.Fragment, " +
99e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "keep.Please); \n" +
1005d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1015d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1025d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
1035d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1045d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation test.Activity(); \n" +
1055d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation test.Activity(...); \n" +
1065d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation test.Activity(*); \n" +
1075d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation test.Activity(test.Activity); \n" +
1085d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation test.Activity(test.Activity, test.Fragment, keep.Please); \n" +
1095d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1105d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1115d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
1125d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
1135d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_ctorSelector_modifiers_annotation() {
114e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
1155d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
1165d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
1175d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1185d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
1195d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Activity" to "test/Activity",
1205d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment",
1215d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Annotation" to "test/Annotation"
1225d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1235d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
1245d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1255d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation public support.Activity(); \n" +
1265d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation public static support.Activity(...); \n" +
1275d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation !private support.Activity(*); \n" +
1285d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation !public !static support.Activity(support.Activity); \n" +
129e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "  @support.Annotation !protected support.Activity(support.Activity, " +
130e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "support.Fragment, keep.Please); \n" +
1315d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1325d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1335d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
1345d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1355d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation public test.Activity(); \n" +
1365d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation public static test.Activity(...); \n" +
1375d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation !private test.Activity(*); \n" +
1385d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation !public !static test.Activity(test.Activity); \n" +
139e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "  @test.Annotation !protected test.Activity(test.Activity, test.Fragment, " +
140e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis                "keep.Please); \n" +
1415d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1425d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1435d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
1445d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis
1455d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    @Test fun proGuard_ctorSelector_modifiers_annotation_spaces() {
146e237113ee534e4f6b172a5661eb6088d861a15dbFilip Pavlis        ProGuardTester()
1475d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenPrefixes(
1485d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/"
1495d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1505d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .forGivenTypesMap(
1515d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Activity" to "test/Activity",
1525d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Fragment" to "test/Fragment",
1535d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "support/Annotation" to "test/Annotation"
1545d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1555d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .testThatGivenProGuard(
1565d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1575d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @support.Annotation  !protected \t support.Activity( support.Activity ); \n" +
1585d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1595d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1605d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            .rewritesTo(
1615d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "-keep public class * { \n" +
1625d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "  @test.Annotation  !protected \t test.Activity(test.Activity); \n" +
1635d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis                "}"
1645d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis            )
1655d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis    }
166982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis
167982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis    @Test fun proGuard_ctorSelector_multiple() {
168982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis        ProGuardTester()
169982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            .forGivenPrefixes(
170982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "support/"
171982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            )
172982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                .forGivenProGuardMapSet("support.**" to setOf("support.**", "androidx.**"))
173982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            .testThatGivenProGuard(
174982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-keep public class * { \n" +
175982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "  support.**(support.**); \n" +
176982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}"
177982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            )
178982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            .rewritesTo(
179982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-keep public class * { \n" +
180982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "  support.**(support.**); \n" +
181982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}\n" +
182982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-keep public class * { \n" +
183982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "  androidx.**(support.**); \n" +
184982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}\n" +
185982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-keep public class * { \n" +
186982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "  support.**(androidx.**); \n" +
187982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}\n" +
188982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "-keep public class * { \n" +
189982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "  androidx.**(androidx.**); \n" +
190982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis                "}"
191982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis            )
192982679c45ee20f39c5da072ff6a80519ee262ef4Filip Pavlis    }
1935d7619f3c22d5d40ff099ae5599bdbb47453d2ccFilip Pavlis}