1 package com.generationjava.scrape;
2
3 import junit.framework.Test;
4 import junit.framework.TestCase;
5 import junit.framework.TestSuite;
6 import junit.textui.TestRunner;
7
8 public class HtmlScraperTest extends TestCase {
9
10 public static final String TEST_PAGE = "<html><body><table bgcolor=\"ffffff\"><tr><td align='center'>FOO</td></tr></table></body></html>";
11
12 private HtmlScraper scraper;
13
14 public HtmlScraperTest(String name) {
15 super(name);
16 }
17
18 public void setUp() {
19 scraper = new HtmlScraper();
20 scraper.scrape(TEST_PAGE);
21 }
22
23 public void tearDown() {
24 scraper = null;
25 }
26
27
28
29
30
31 public void testScrape() {
32 assertEquals( "FOO", scraper.get("td") );
33 }
34
35 public void testScrapeAttribute() {
36 assertEquals( "ffffff", scraper.get("table[bgcolor]") );
37 }
38
39 public void testCaseInsensitive() {
40 assertEquals( "FOO", scraper.get("TD") );
41 assertEquals( "FOO", scraper.get("Td") );
42 assertEquals( "FOO", scraper.get("tD") );
43 assertEquals( "FOO", scraper.get("td") );
44 }
45
46 public void testCaseInsensitiveAttribute() {
47 assertEquals( "ffffff", scraper.get("TABLE[bgcolor]") );
48 assertEquals( "ffffff", scraper.get("TABLE[BGCOLOR]") );
49 assertEquals( "ffffff", scraper.get("table[BGCOLOR]") );
50 assertEquals( "ffffff", scraper.get("table[bgcolor]") );
51 }
52
53 public void testSingleQuoteAttributes() {
54 assertEquals( "center", scraper.get("td[align]") );
55 }
56
57 public void testScrapeTag() {
58 HtmlScraper scraper2 = scraper.scrapeTag("table");
59 assertEquals( "<tr><td align='center'>FOO</td></tr>", scraper2.toString() );
60 }
61
62 public void testScrapeTableCell() {
63 scraper.move("tr");
64 String t = scraper.get("tr");
65 HtmlScraper scraper2 = new HtmlScraper();
66 scraper2.scrape(t);
67
68 assertEquals( "<td align='center'>FOO</td>", scraper2.toString() );
69 assertTrue(scraper2.move("td"));
70 assertEquals("FOO", scraper2.get("td"));
71 }
72
73 public void testTmp() {
74 HtmlScraper s = new HtmlScraper();
75 s.scrape("<td align='center'>FOO</td>");
76 assertTrue(s.move("td"));
77 assertEquals("FOO", s.get("td"));
78 }
79
80 public void testMoveToTagWithTwice() {
81 assertTrue( scraper.moveToTagWith("bgcolor", "ffffff") );
82 assertFalse( scraper.moveToTagWith("bgcolor", "ffffff") );
83
84 scraper.scrape(TEST_PAGE+TEST_PAGE);
85 assertTrue( scraper.moveToTagWith("bgcolor", "ffffff") );
86 assertTrue( scraper.moveToTagWith("bgcolor", "ffffff") );
87 assertFalse( scraper.moveToTagWith("bgcolor", "ffffff") );
88 }
89
90 public void testMove() {
91 assertTrue( scraper.move("td") );
92 assertEquals( "FOO", scraper.get("td") );
93 assertFalse( scraper.move("td") );
94
95 scraper.scrape(TEST_PAGE+TEST_PAGE);
96 assertTrue( scraper.move("td") );
97 assertEquals( "FOO", scraper.get("td") );
98 assertTrue( scraper.move("td") );
99 assertEquals( "FOO", scraper.get("td") );
100 assertFalse( scraper.move("td") );
101 }
102
103 public void testScrapeTable() {
104 Object[] data = scraper.scrapeTable();
105 assertEquals( "FOO", ((Object[])data[0])[0] );
106 }
107
108 public void testScrapeTable2() {
109 Object[] data = scraper.scrapeTable( new Object[] { String.class } );
110 assertEquals( "FOO", ((Object[])data[0])[0] );
111 }
112
113 }
114