def test_import_detection(self): sf = self.project.get_file('sample_files/IssuesFragment.java') self.assertTrue(sf.language_detected) self.assertEqual(sf.language, Language.JAVA) self.assertTrue(sf.parsed) self.assertEqual(len(sf.imports), 43) # specific check for one import im = sf.imports[13] known_usages = [31, 87, 126] self.assertEqual(im.imported_identifier, 'ImageView') self.assertListEqual(im.find_usages(), known_usages) for i in range(len(sf.lines)): ln = i + 1 self.assertEqual(has_word(sf.get_line(ln), 'ImageView'), ln in known_usages) # general check for other imports for im in sf.imports: identifier = im.imported_identifier if identifier == '*': continue usages = im.find_usages() for l in usages: self.assertTrue(sf.get_line(l).find(identifier) > -1)
def find_usages(self): if not self.source_file: return None identifier = self.imported_identifier usage_lines = [] for i, l in enumerate(self.source_file._lines): if has_word(l, identifier): usage_lines.append(i + 1) return usage_lines
def test_has_word(self): string = 'inspector.analyzer.func()' self.assertTrue(has_word(string, 'inspector')) self.assertTrue(has_word(string, 'analyzer')) self.assertFalse(has_word(string, 'analyze')) self.assertFalse(has_word(string, 'alyzer')) self.assertTrue(has_word(string, 'func')) self.assertFalse(has_word(string, 'fun')) self.assertTrue(has_word(string, 'analyzer.func'))