(self)
| 426 | "<p>Don't leave me.<b>here</b></p>") |
| 427 | |
| 428 | def testTagExtraction(self): |
| 429 | # A very simple case |
| 430 | text = '<html><div id="nav">Nav crap</div>Real content here.</html>' |
| 431 | soup = BeautifulSoup(text) |
| 432 | extracted = soup.find("div", id="nav").extract() |
| 433 | self.assertEqual(str(soup), "<html>Real content here.</html>") |
| 434 | self.assertEqual(str(extracted), '<div id="nav">Nav crap</div>') |
| 435 | |
| 436 | # A simple case, a more complex test. |
| 437 | text = "<doc><a>1<b>2</b></a><a>i<b>ii</b></a><a>A<b>B</b></a></doc>" |
| 438 | soup = BeautifulStoneSoup(text) |
| 439 | doc = soup.doc |
| 440 | numbers, roman, letters = soup("a") |
| 441 | |
| 442 | self.assertEqual(roman.parent, doc) |
| 443 | oldPrevious = roman.previous |
| 444 | endOfThisTag = roman.nextSibling.previous |
| 445 | self.assertEqual(oldPrevious, "2") |
| 446 | self.assertEqual(roman.next, "i") |
| 447 | self.assertEqual(endOfThisTag, "ii") |
| 448 | self.assertEqual(roman.previousSibling, numbers) |
| 449 | self.assertEqual(roman.nextSibling, letters) |
| 450 | |
| 451 | roman.extract() |
| 452 | self.assertEqual(roman.parent, None) |
| 453 | self.assertEqual(roman.previous, None) |
| 454 | self.assertEqual(roman.next, "i") |
| 455 | self.assertEqual(letters.previous, '2') |
| 456 | self.assertEqual(roman.previousSibling, None) |
| 457 | self.assertEqual(roman.nextSibling, None) |
| 458 | self.assertEqual(endOfThisTag.next, None) |
| 459 | self.assertEqual(roman.b.contents[0].next, None) |
| 460 | self.assertEqual(numbers.nextSibling, letters) |
| 461 | self.assertEqual(letters.previousSibling, numbers) |
| 462 | self.assertEqual(len(doc.contents), 2) |
| 463 | self.assertEqual(doc.contents[0], numbers) |
| 464 | self.assertEqual(doc.contents[1], letters) |
| 465 | |
| 466 | # A more complex case. |
| 467 | text = "<a>1<b>2<c>Hollywood, baby!</c></b></a>3" |
| 468 | soup = BeautifulStoneSoup(text) |
| 469 | one = soup.find(text="1") |
| 470 | three = soup.find(text="3") |
| 471 | toExtract = soup.b |
| 472 | soup.b.extract() |
| 473 | self.assertEqual(one.next, three) |
| 474 | self.assertEqual(three.previous, one) |
| 475 | self.assertEqual(one.parent.nextSibling, three) |
| 476 | self.assertEqual(three.previousSibling, soup.a) |
| 477 | |
| 478 | def testClear(self): |
| 479 | soup = BeautifulSoup("<ul><li></li><li></li></ul>") |
nothing calls this directly
no test coverage detected