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      // To test: 
29      //   HtmlScraper()->scrape(..)->get/move etc
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  //        HtmlScraper scraper2 = scraper.scrapeTag("tr");
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