Revision: 3315
Author: jprantan
Date: Tue May 18 04:14:11 2010
Log: Integrated HTML reader to use populator.
http://code.google.com/p/robotframework/source/detail?r=3315

Modified:
 /trunk/src/robot/parsing/htmlreader.py
 /trunk/utest/parsing/test_htmlreader.py

=======================================
--- /trunk/src/robot/parsing/htmlreader.py      Fri Mar 12 04:32:45 2010
+++ /trunk/src/robot/parsing/htmlreader.py      Tue May 18 04:14:11 2010
@@ -17,6 +17,7 @@
 from htmlentitydefs import entitydefs

 from robot import utils
+from populator import TestDataPopulator

 extra_entitydefs = {'nbsp': ' ',  'apos': "'", 'tilde': '~'}

@@ -42,8 +43,8 @@
                            'br_start'    : self.br_start,
                            'meta_start'  : self.meta_start }

-    def read(self, htmlfile, rawdata):
-        self.data = rawdata
+    def read(self, htmlfile, datafile):
+        self.populator = TestDataPopulator(datafile)
         self.state = self.IGNORE
         self.current_row = None
         self.current_cell = None
@@ -53,7 +54,7 @@
         # if the same instance of our HtmlParser is reused. Currently it's
         # used only once so there's no problem.
         self.close()
-        return self.data
+        self.populator.eof()

     def handle_starttag(self, tag, attrs):
         handler = self._handlers.get(tag+'_start')
@@ -130,14 +131,14 @@
         if self.state == self.INITIAL:
             if len(self.current_row) > 0:
                 table_name = self.current_row[0]
-                if self.data.start_table(table_name):
+                if self.populator.start_table(table_name):
                     self.state = self.PROCESS
                 else:
                     self.state = self.IGNORE
             else:
                 self.state = self.IGNORE
         elif self.state == self.PROCESS:
-            self.data.add_row(self.current_row)
+            self.populator.add(self.current_row)
         self.current_row = None

     def td_start(self, attrs=None):
=======================================
--- /trunk/utest/parsing/test_htmlreader.py     Fri Mar 12 04:32:45 2010
+++ /trunk/utest/parsing/test_htmlreader.py     Tue May 18 04:14:11 2010
@@ -4,13 +4,14 @@

 from robot.parsing.htmlreader import HtmlReader
 from robot.utils.asserts import *
+from robot.parsing.populator import TestDataPopulator


VALID_TABLES = [ "Variable", "Setting", "Test Case", "Test Suite", "Keyword" ]
 ROW_TEMPLATE = '<tr><td>%s</td><td>%s</td><td>%s</td></tr>'


-class TestDataMock:
+class PopulatorMock:

     def __init__(self):
         self.tables = {}
@@ -25,7 +26,7 @@
             self.current = None
             return False

-    def add_row(self, cells):
+    def add(self, cells):
         self.tables[self.current].append(cells)


@@ -33,7 +34,7 @@

     def setUp(self):
         self.reader = HtmlReader()
-        self.reader.data = TestDataMock()
+        self.reader.populator = PopulatorMock()

     def test_initial_state(self):
         self.reader.state = self.reader.IGNORE
@@ -47,7 +48,7 @@
             self.reader.feed('<table>')
             self.reader.feed(ROW_TEMPLATE % (name, 'Value 1', 'Value2'))
             assert_equals(self.reader.state, self.reader.PROCESS)
-            assert_equals(self.reader.data.current, name)
+            assert_equals(self.reader.populator.current, name)
             self.reader.feed('</table>')
             assert_equals(self.reader.state, self.reader.IGNORE)

@@ -56,10 +57,10 @@
             self.reader.feed('<table>')
             self.reader.feed(ROW_TEMPLATE % (name, 'Value 1', 'Value2'))
             assert_equals(self.reader.state, self.reader.IGNORE)
-            assert_none(self.reader.data.current)
+            assert_none(self.reader.populator.current)
             self.reader.feed(ROW_TEMPLATE % ('This', 'row', 'is ignored'))
             assert_equals(self.reader.state, self.reader.IGNORE)
-            assert_equals(len(self.reader.data.tables.values()), 0)
+            assert_equals(len(self.reader.populator.tables.values()), 0)
             self.reader.feed('</table>')
             assert_equals(self.reader.state, self.reader.IGNORE)

@@ -71,7 +72,7 @@
             self.reader.feed(ROW_TEMPLATE % (name, 'Value 1', 'Value2'))
             self.reader.feed(ROW_TEMPLATE % inp)
             self.reader.feed('</table>')
-            assert_equals(self.reader.data.tables[name], [ exp ])
+            assert_equals(self.reader.populator.tables[name], [ exp ])

     def test_processing(self):
         self._row_processing(ROW_TEMPLATE)
@@ -101,7 +102,7 @@
             assert_equals(self.reader.state, self.reader.PROCESS)
             self.reader.feed('</table>')
             assert_equals(self.reader.state, self.reader.IGNORE)
-            assert_equals(self.reader.data.tables[name], row_data)
+            assert_equals(self.reader.populator.tables[name], row_data)


 class TestEntityAndCharRefs(unittest.TestCase):
@@ -175,13 +176,13 @@

     def test_encoding_and_entityrefs(self):
         reader = HtmlReader()
-        reader.data = TestDataMock()
+        reader.populator = PopulatorMock()
         reader.feed('<meta content="text/html; charset=utf-8" />')
         reader.feed('<table><tr><td>Setting</td></tr>')
         reader.feed('<tr><td>&auml;iti')
         assert_equals(reader.current_cell, [u'\xe4', u'iti'])
         reader.feed('</tr>')
-        assert_equals(reader.data.tables['Setting'][0], [u'\xe4iti'])
+        assert_equals(reader.populator.tables['Setting'][0], [u'\xe4iti'])


 if __name__ == '__main__':

Reply via email to