Thread: [Htmlparser-cvs] htmlparser/src/org/htmlparser/tests AllTests.java,1.55,1.56 ParserTest.java,1.47,1.
Brought to you by:
derrickoswald
From: <der...@us...> - 2003-11-08 21:31:00
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests In directory sc8-pr-cvs1:/tmp/cvs-serv18855/src/org/htmlparser/tests Modified Files: AllTests.java ParserTest.java ParserTestCase.java Log Message: Implement generic node filtering. Added the NodeFilter interface and the filter package. Sideline tag specific scanners; tags now use only one scanner of each type, TagScanner or CompositeTagScanner (except for ScriptScanner). Obviated PeekingIterator by moving the META tag semantics to doSemanticAction, much simpler, old IteratorImpl is now PeekingIteratorImpl but deprecated. Index: AllTests.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/AllTests.java,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** AllTests.java 26 Oct 2003 19:46:24 -0000 1.55 --- AllTests.java 8 Nov 2003 21:30:57 -0000 1.56 *************** *** 63,66 **** --- 63,67 ---- suite.addTest (org.htmlparser.tests.parserHelperTests.AllTests.suite ()); suite.addTest (org.htmlparser.tests.nodeDecoratorTests.AllTests.suite ()); + suite.addTestSuite (org.htmlparser.tests.filterTests.FilterTest.class); return (suite); Index: ParserTest.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/ParserTest.java,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** ParserTest.java 26 Oct 2003 19:46:25 -0000 1.47 --- ParserTest.java 8 Nov 2003 21:30:57 -0000 1.48 *************** *** 41,48 **** --- 41,51 ---- import org.htmlparser.Parser; import org.htmlparser.StringNode; + import org.htmlparser.filters.NodeClassFilter; + import org.htmlparser.filters.TagNameFilter; import org.htmlparser.lexer.Lexer; import org.htmlparser.lexer.Page; import org.htmlparser.scanners.FormScanner; import org.htmlparser.scanners.TagScanner; + import org.htmlparser.tags.BodyTag; import org.htmlparser.tags.ImageTag; import org.htmlparser.tags.LinkTag; *************** *** 401,406 **** --- 404,414 ---- { parser = new Parser("http://www.sony.co.jp", Parser.noFeedback); + parser.registerScanners (); assertEquals("Character set by default is ISO-8859-1", "ISO-8859-1", parser.getEncoding ()); enumeration = parser.elements(); + // search for the <BODY> tag + while (enumeration.hasMoreNodes ()) + if (enumeration.nextNode () instanceof BodyTag) + break; assertTrue("Character set should be Shift_JIS", parser.getEncoding ().equalsIgnoreCase ("Shift_JIS")); } *************** *** 446,449 **** --- 454,458 ---- parser = new Parser(url); + parser.registerScanners (); for (NodeIterator e = parser.elements();e.hasMoreNodes();) e.nextNode(); *************** *** 466,469 **** --- 475,479 ---- parser = new Parser(url); + parser.registerScanners (); for (NodeIterator e = parser.elements();e.hasMoreNodes();) e.nextNode(); *************** *** 534,537 **** --- 544,548 ---- page.setConnection (connection); parser = new Parser (new Lexer (page)); + parser.registerScanners (); // must be the default assertTrue ("Wrong encoding", parser.getEncoding ().equals ("ISO-8859-1")); *************** *** 627,635 **** parser.registerScanners(); NodeList collectionList = new NodeList(); ! ! for (NodeIterator e = parser.elements();e.hasMoreNodes();) { ! Node node = e.nextNode(); ! node.collectInto(collectionList,LinkTag.class); ! } assertEquals("Size of collection vector should be 11",11,collectionList.size()); // All items in collection vector should be links --- 638,644 ---- parser.registerScanners(); NodeList collectionList = new NodeList(); ! NodeClassFilter filter = new NodeClassFilter (LinkTag.class); ! for (NodeIterator e = parser.elements();e.hasMoreNodes();) ! e.nextNode().collectInto(collectionList,filter); assertEquals("Size of collection vector should be 11",11,collectionList.size()); // All items in collection vector should be links *************** *** 683,691 **** parser.registerScanners(); NodeList collectionList = new NodeList(); ! ! for (NodeIterator e = parser.elements();e.hasMoreNodes();) { ! Node node = e.nextNode(); ! node.collectInto(collectionList,ImageTag.IMAGE_TAG_FILTER); ! } assertEquals("Size of collection vector should be 5",5,collectionList.size()); // All items in collection vector should be links --- 692,698 ---- parser.registerScanners(); NodeList collectionList = new NodeList(); ! TagNameFilter filter = new TagNameFilter ("IMG"); ! for (NodeIterator e = parser.elements();e.hasMoreNodes();) ! e.nextNode().collectInto(collectionList,filter); assertEquals("Size of collection vector should be 5",5,collectionList.size()); // All items in collection vector should be links Index: ParserTestCase.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/ParserTestCase.java,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** ParserTestCase.java 1 Nov 2003 21:55:43 -0000 1.38 --- ParserTestCase.java 8 Nov 2003 21:30:57 -0000 1.39 *************** *** 48,52 **** import org.htmlparser.tags.Tag; import org.htmlparser.util.DefaultParserFeedback; - import org.htmlparser.util.IteratorImpl; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.ParserException; --- 48,51 ---- *************** *** 226,230 **** } ! public void assertXmlEquals(String displayMessage, String expected, String actual) throws Exception { expected = removeEscapeCharacters(expected); actual = removeEscapeCharacters(actual); --- 225,235 ---- } ! public void assertXmlEquals(String displayMessage, String expected, String actual) throws Exception ! { ! Node nextExpectedNode; ! Node nextActualNode; ! Tag tag1; ! Tag tag2; ! expected = removeEscapeCharacters(expected); actual = removeEscapeCharacters(actual); *************** *** 237,245 **** displayMessage = createGenericFailureMessage(displayMessage, expected, actual); ! Node nextExpectedNode = null, nextActualNode = null; do { ! nextExpectedNode = getNextNodeUsing(expectedIterator); ! nextActualNode = getNextNodeUsing(actualIterator); assertNotNull (nextActualNode); assertStringValueMatches( displayMessage, --- 242,261 ---- displayMessage = createGenericFailureMessage(displayMessage, expected, actual); ! nextExpectedNode = null; ! nextActualNode = null; ! tag1 = null; ! tag2 = null; do { ! if (null != tag1) ! nextExpectedNode = tag1; ! else ! nextExpectedNode = getNextNodeUsing (expectedIterator); ! if (null != tag2) ! nextActualNode = tag2; ! else ! nextActualNode = getNextNodeUsing (actualIterator); assertNotNull (nextActualNode); + tag1 = fixIfXmlEndTag (nextExpectedNode); + tag2 = fixIfXmlEndTag (nextActualNode); assertStringValueMatches( displayMessage, *************** *** 247,256 **** nextActualNode ); - fixIfXmlEndTag(actualIterator, nextActualNode); - fixIfXmlEndTag(expectedIterator, nextExpectedNode); assertSameType(displayMessage, nextExpectedNode, nextActualNode); assertTagEquals(displayMessage, nextExpectedNode, nextActualNode); } ! while (expectedIterator.hasMoreNodes()); assertActualXmlHasNoMoreNodes(displayMessage, actualIterator); } --- 263,270 ---- nextActualNode ); assertSameType(displayMessage, nextExpectedNode, nextActualNode); assertTagEquals(displayMessage, nextExpectedNode, nextActualNode); } ! while (expectedIterator.hasMoreNodes() || (null != tag1)); assertActualXmlHasNoMoreNodes(displayMessage, actualIterator); } *************** *** 305,312 **** } ! // TODO: ! // Man, this is really screwed up. ! private void fixIfXmlEndTag (NodeIterator iterator, Node node) { if (node instanceof Tag) { --- 319,330 ---- } ! /** ! * Return a following tag if node is an empty XML tag. ! */ ! private Tag fixIfXmlEndTag (Node node) { + Tag ret; + + ret = null; if (node instanceof Tag) { *************** *** 315,323 **** { tag.setEmptyXmlTag (false); ! node = new Tag (tag.getPage (), tag.getStartPosition (), tag.getEndPosition (), tag.getAttributesEx ()); ! // cheat here and poink the new node into the iterator ! ((IteratorImpl)iterator).push (node); } } } --- 333,341 ---- { tag.setEmptyXmlTag (false); ! ret = new Tag (tag.getPage (), tag.getStartPosition (), tag.getEndPosition (), tag.getAttributesEx ()); } } + + return (ret); } *************** *** 392,402 **** } public void assertType( String message, Class expectedType, ! Object object) { String expectedTypeName = expectedType.getName(); String actualTypeName = object.getClass().getName(); ! if (!actualTypeName.equals(expectedTypeName)) { fail( message+" should have been of type\n"+ --- 410,438 ---- } + public void assertSuperType( + String message, + Class expectedType, + Object object) + { + String expectedTypeName = expectedType.getName(); + String actualTypeName = object.getClass().getName(); + if (!expectedType.isAssignableFrom (object.getClass ())) + fail( + message+" should have been of type\n"+ + expectedTypeName+ + " but was of type \n"+ + actualTypeName+"\n and is :"+((Node)object).toHtml() + ); + } + public void assertType( String message, Class expectedType, ! Object object) ! { ! String expectedTypeName = expectedType.getName(); String actualTypeName = object.getClass().getName(); ! if (!actualTypeName.equals(expectedTypeName)) fail( message+" should have been of type\n"+ *************** *** 405,409 **** actualTypeName+"\n and is :"+((Node)object).toHtml() ); - } } --- 441,444 ---- |