Tests the various ways of fetching tags from a soup.
| 19 | |
| 20 | |
| 21 | class FollowThatTag(SoupTest): |
| 22 | |
| 23 | "Tests the various ways of fetching tags from a soup." |
| 24 | |
| 25 | def setUp(self): |
| 26 | ml = """ |
| 27 | <a id="x">1</a> |
| 28 | <A id="a">2</a> |
| 29 | <b id="b">3</a> |
| 30 | <b href="foo" id="x">4</a> |
| 31 | <ac width=100>4</ac>""" |
| 32 | self.soup = BeautifulStoneSoup(ml) |
| 33 | |
| 34 | def testFindAllByName(self): |
| 35 | matching = self.soup('a') |
| 36 | self.assertEqual(len(matching), 2) |
| 37 | self.assertEqual(matching[0].name, 'a') |
| 38 | self.assertEqual(matching, self.soup.findAll('a')) |
| 39 | self.assertEqual(matching, self.soup.findAll(SoupStrainer('a'))) |
| 40 | |
| 41 | def testFindAllByAttribute(self): |
| 42 | matching = self.soup.findAll(id='x') |
| 43 | self.assertEqual(len(matching), 2) |
| 44 | self.assertEqual(matching[0].name, 'a') |
| 45 | self.assertEqual(matching[1].name, 'b') |
| 46 | |
| 47 | matching2 = self.soup.findAll(attrs={'id' : 'x'}) |
| 48 | self.assertEqual(matching, matching2) |
| 49 | |
| 50 | strainer = SoupStrainer(attrs={'id' : 'x'}) |
| 51 | self.assertEqual(matching, self.soup.findAll(strainer)) |
| 52 | |
| 53 | self.assertEqual(len(self.soup.findAll(id=None)), 1) |
| 54 | |
| 55 | self.assertEqual(len(self.soup.findAll(width=100)), 1) |
| 56 | self.assertEqual(len(self.soup.findAll(junk=None)), 5) |
| 57 | self.assertEqual(len(self.soup.findAll(junk=[1, None])), 5) |
| 58 | |
| 59 | self.assertEqual(len(self.soup.findAll(junk=re.compile('.*'))), 0) |
| 60 | self.assertEqual(len(self.soup.findAll(junk=True)), 0) |
| 61 | |
| 62 | self.assertEqual(len(self.soup.findAll(junk=True)), 0) |
| 63 | self.assertEqual(len(self.soup.findAll(href=True)), 1) |
| 64 | |
| 65 | def testFindallByClass(self): |
| 66 | soup = BeautifulSoup('<b class="foo">Foo</b><a class="1 23 4">Bar</a>') |
| 67 | self.assertEqual(soup.find(attrs='foo').string, "Foo") |
| 68 | self.assertEqual(soup.find('a', '1').string, "Bar") |
| 69 | self.assertEqual(soup.find('a', '23').string, "Bar") |
| 70 | self.assertEqual(soup.find('a', '4').string, "Bar") |
| 71 | |
| 72 | self.assertEqual(soup.find('a', '2'), None) |
| 73 | |
| 74 | def testFindAllByList(self): |
| 75 | matching = self.soup(['a', 'ac']) |
| 76 | self.assertEqual(len(matching), 3) |
| 77 | |
| 78 | def testFindAllByHash(self): |
nothing calls this directly
no test coverage detected
searching dependent graphs…