Ejemplo n.º 1
0
 def assertNormalizedTo(self, class_path, expected_outer_class,
                        expected_name):
     lambda_normalizer = apkanalyzer.LambdaNormalizer()
     actual_outer_class, actual_name = lambda_normalizer.Normalize(
         class_path, class_path)
     self.assertEqual(expected_outer_class, actual_outer_class)
     self.assertEqual(expected_name, actual_name)
Ejemplo n.º 2
0
 def testCreateDexSymbol_classMerged_field(self):
     name = 'org.NewClass int org.OldClass.createReachTopAnimatorSet'
     size = 1
     source_map = {}
     lambda_normalizer = apkanalyzer.LambdaNormalizer()
     symbol = apkanalyzer.CreateDexSymbol(name, size, source_map,
                                          lambda_normalizer)
     self.assertEqual('$APK/org/OldClass', symbol.object_path)
Ejemplo n.º 3
0
 def testCreateDexSymbol_total(self):
     name = '<TOTAL>'
     size = 1
     source_map = {}
     lambda_normalizer = apkanalyzer.LambdaNormalizer()
     symbol = apkanalyzer.CreateDexSymbol(name, size, source_map,
                                          lambda_normalizer)
     self.assertIsNone(symbol)
Ejemplo n.º 4
0
 def testLambdaNormalizer_prefix(self):
     lambda_normalizer = apkanalyzer.LambdaNormalizer()
     name = 'org.-$$Lambda$StackAnimation$Nested1$kjevdeLqWLHzk foo bar'
     package = name.split(' ')[0]
     expected_outer_class = 'org.StackAnimation'
     expected_name = 'org.StackAnimation$Nested1$$Lambda$0 foo bar'
     self.assertEqual((expected_outer_class, expected_name),
                      lambda_normalizer.Normalize(package, name))
Ejemplo n.º 5
0
 def testLambdaNormalizer_wholeString(self):
     lambda_normalizer = apkanalyzer.LambdaNormalizer()
     name = 'org.-$$Lambda$StackAnimation$Nested1$kjevdDQ8V2zqCrdieLqWLHzk.dex'
     package = name
     expected_outer_class = 'org.StackAnimation'
     expected_name = 'org.StackAnimation$Nested1$$Lambda$0'
     self.assertEqual((expected_outer_class, expected_name),
                      lambda_normalizer.Normalize(package, name))
Ejemplo n.º 6
0
 def testCreateDexSymbol_classMerged_noSource(self):
     name = ('org.NewClass org.ChromeAnimation '
             'org.OldClass.createReachTopAnimatorSet(org.StackTab[],float)')
     size = 1
     source_map = {}
     lambda_normalizer = apkanalyzer.LambdaNormalizer()
     symbol = apkanalyzer.CreateDexSymbol(name, size, source_map,
                                          lambda_normalizer)
     self.assertEqual('$APK/org/OldClass', symbol.object_path)
Ejemplo n.º 7
0
 def testLambdaNormalizer_lambdaCounting(self):
     lambda_normalizer = apkanalyzer.LambdaNormalizer()
     name = 'org.-$$Lambda$StackAnimation$Nested1$kjevdDQ8V2zqCrdieLqWLHzk'
     expected_outer_class = 'org.StackAnimation'
     expected_name = 'org.StackAnimation$Nested1$$Lambda$0'
     # Ensure multiple calls to the same class maps to same number.
     self.assertEqual((expected_outer_class, expected_name),
                      lambda_normalizer.Normalize(name, name))
     self.assertEqual((expected_outer_class, expected_name),
                      lambda_normalizer.Normalize(name, name))
     name = 'org.-$$Lambda$StackAnimation$Nested1$kjevdDQ8V2zqCrdieLqWLHzk2'
     expected_name = 'org.StackAnimation$Nested1$$Lambda$1'
     self.assertEqual((expected_outer_class, expected_name),
                      lambda_normalizer.Normalize(name, name))
Ejemplo n.º 8
0
 def testLambdaNormalizer_multiSameLine(self):
     lambda_normalizer = apkanalyzer.LambdaNormalizer()
     name = ('org.-$$Lambda$StackAnimation$Nested1$kevdDQ8V2zqCrdieLqWLHzk '
             'org.-$$Lambda$Other$kjevdDQ8V2zqCrdieLqWLHzk bar')
     package = name.split(' ')[0]
     expected_outer_class = 'org.StackAnimation'
     expected_name = ('org.StackAnimation$Nested1$$Lambda$0 '
                      'org.-$$Lambda$Other$kjevdDQ8V2zqCrdieLqWLHzk bar')
     self.assertEqual((expected_outer_class, expected_name),
                      lambda_normalizer.Normalize(package, name))
     name = expected_name
     package = name.split(' ')[1]
     expected_outer_class = 'org.Other'
     expected_name = ('org.StackAnimation$Nested1$$Lambda$0 '
                      'org.Other$$Lambda$0 bar')
     self.assertEqual((expected_outer_class, expected_name),
                      lambda_normalizer.Normalize(package, name))