|
What this is
Other links
The source code// $Header: /home/cvs/jakarta-jmeter/src/htmlparser/org/htmlparser/tests/scannersTests/ImageScannerTest.java,v 1.2 2004/02/11 02:16:58 woolfel Exp $ /* * ==================================================================== * Copyright 2002-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ // The developers of JMeter and Apache are greatful to the developers // of HTMLParser for giving Apache Software Foundation a non-exclusive // license. The performance benefits of HTMLParser are clear and the // users of JMeter will benefit from the hard work the HTMLParser // team. For detailed information about HTMLParser, the project is // hosted on sourceforge at http://htmlparser.sourceforge.net/. // // HTMLParser was originally created by Somik Raha in 2000. Since then // a healthy community of users has formed and helped refine the // design so that it is able to tackle the difficult task of parsing // dirty HTML. Derrick Oswald is the current lead developer and was kind // enough to assist JMeter. package org.htmlparser.tests.scannersTests; import org.htmlparser.Node; import org.htmlparser.Parser; import org.htmlparser.scanners.ImageScanner; import org.htmlparser.scanners.TableScanner; import org.htmlparser.tags.ImageTag; import org.htmlparser.tags.LinkTag; import org.htmlparser.tags.TableColumn; import org.htmlparser.tags.TableRow; import org.htmlparser.tags.Tag; import org.htmlparser.tags.data.TagData; import org.htmlparser.tests.ParserTestCase; import org.htmlparser.util.LinkProcessor; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.ParserException; public class ImageScannerTest extends ParserTestCase { public ImageScannerTest(String name) { super(name); } public void testDynamicRelativeImageScan() throws ParserException { createParser( "", "http://www.yahoo.com/ghi?abcdefg"); // Register the image scanner parser.addScanner(new ImageScanner("-i", new LinkProcessor())); parseAndAssertNodeCount(1); assertTrue( "Node identified should be HTMLImageTag", node[0] instanceof ImageTag); ImageTag imageTag = (ImageTag) node[0]; assertEquals( "Expected Link", "http://www.yahoo.com/abc/def/mypic.jpg", imageTag.getImageURL()); } public void testEvaluate() { ImageScanner scanner = new ImageScanner("-i", new LinkProcessor()); boolean retVal = scanner.evaluate(" img ", null); assertEquals( "Evaluation of IMG tag", new Boolean(true), new Boolean(retVal)); } /** * This is the reproduction of a bug which causes a null pointer exception */ public void testExtractImageLocnInvertedCommasBug() throws ParserException { Tag tag = new Tag( new TagData( 0, 0, "img width=638 height=53 border=0 usemap=\"#m\" src=http://us.a1.yimg.com/us.yimg.com/i/ww/m5v5.gif alt=Yahoo", "")); String link = "img width=638 height=53 border=0 usemap=\"#m\" src=http://us.a1.yimg.com/us.yimg.com/i/ww/m5v5.gif alt=Yahoo"; String url = "c:\\cvs\\html\\binaries\\yahoo.htm"; ImageScanner scanner = new ImageScanner("-i", new LinkProcessor()); assertEquals( "Extracted Image Locn", "http://us.a1.yimg.com/us.yimg.com/i/ww/m5v5.gif", scanner.extractImageLocn(tag, url)); } /** * This test has been improved to check for params * in the image tag, based on requirement by Annette Doyle. * Thereby an important bug was detected. */ public void testPlaceHolderImageScan() throws ParserException { createParser( "", "http://www.yahoo.com/ghi?abcdefg"); // Register the image scanner parser.addScanner(new ImageScanner("-i", new LinkProcessor())); parseAndAssertNodeCount(1); assertTrue( "Node identified should be HTMLImageTag", node[0] instanceof ImageTag); ImageTag imageTag = (ImageTag) node[0]; assertEquals("Expected Image Locn", "", imageTag.getImageURL()); assertEquals("Image width", "1", imageTag.getAttribute("WIDTH")); assertEquals("Image height", "1", imageTag.getAttribute("HEIGHT")); assertEquals("alt", "a", imageTag.getAttribute("ALT")); } public void testRelativeImageScan() throws ParserException { createParser("", "http://www.yahoo.com"); // Register the image scanner parser.addScanner(new ImageScanner("-i", new LinkProcessor())); parseAndAssertNodeCount(1); assertTrue( "Node identified should be HTMLImageTag", node[0] instanceof ImageTag); ImageTag imageTag = (ImageTag) node[0]; assertEquals( "Expected Link", "http://www.yahoo.com/mypic.jpg", imageTag.getImageURL()); } public void testRelativeImageScan2() throws ParserException { createParser("", "http://www.yahoo.com"); // Register the image scanner parser.addScanner(new ImageScanner("-i", new LinkProcessor())); parseAndAssertNodeCount(1); assertTrue( "Node identified should be HTMLImageTag", node[0] instanceof ImageTag); ImageTag imageTag = (ImageTag) node[0]; assertEquals( "Expected Link", "http://www.yahoo.com/abc/def/mypic.jpg", imageTag.getImageURL()); } public void testRelativeImageScan3() throws ParserException { createParser( "", "http://www.yahoo.com/ghi"); // Register the image scanner parser.addScanner(new ImageScanner("-i", new LinkProcessor())); parseAndAssertNodeCount(1); assertTrue( "Node identified should be HTMLImageTag", node[0] instanceof ImageTag); ImageTag imageTag = (ImageTag) node[0]; assertEquals( "Expected Link", "http://www.yahoo.com/abc/def/mypic.jpg", imageTag.getImageURL()); } /** * Test image url which contains spaces in it. * This was actually a bug reported by Sam Joseph (sam@neurogrid.net) */ public void testImageWithSpaces() throws ParserException { createParser( "", "http://www.yahoo.com/ghi"); // Register the image scanner parser.addScanner(new ImageScanner("-i", new LinkProcessor())); parseAndAssertNodeCount(1); assertTrue( "Node identified should be HTMLImageTag", node[0] instanceof ImageTag); ImageTag imageTag = (ImageTag) node[0]; assertEquals( "Expected Link", "http://www.yahoo.com/abc/def/Hello World.jpg", imageTag.getImageURL()); } public void testImageWithNewLineChars() throws ParserException { createParser( "", "http://www.yahoo.com/ghi"); Parser.setLineSeparator("\r\n"); // Register the image scanner parser.addScanner(new ImageScanner("-i", new LinkProcessor())); parseAndAssertNodeCount(1); assertTrue( "Node identified should be HTMLImageTag", node[0] instanceof ImageTag); ImageTag imageTag = (ImageTag) node[0]; String exp = new String("http://www.yahoo.com/abc/def/Hello World.jpg"); //assertEquals("Length of image",exp.length(),imageTag.getImageLocation().length()); assertStringEquals("Expected Image", exp, imageTag.getImageURL()); } /** * Test case to reproduce bug reported by Annette */ public void testImageTagsFromYahoo() throws ParserException { createParser( "Air, Hotel, Vacations, Cruises | Find your match on Yahoo! Personals | |
\n" + " advanced search |
| |||
Shop \n", "http://www.yahoo.com"); Node[] node = new Node[10]; // Register the image scanner parser.addScanner(new ImageScanner("-i", new LinkProcessor())); int i = 0; Node thisNode; for (NodeIterator e = parser.elements(); e.hasMoreNodes();) { thisNode = (Node) e.nextNode(); if (thisNode instanceof ImageTag) node[i++] = thisNode; } assertEquals("Number of nodes identified should be 3", 3, i); assertTrue( "Node identified should be HTMLImageTag", node[0] instanceof ImageTag); ImageTag imageTag = (ImageTag) node[0]; assertEquals( "Expected Image", "http://us.a1.yimg.com/us.yimg.com/a/co/columbiahouse/4for49Freesh_230x33_redx2.gif", imageTag.getImageURL()); ImageTag imageTag2 = (ImageTag) node[1]; assertEquals( "Expected Image 2", "http://us.i1.yimg.com/us.yimg.com/i/ligans/klgs/eet.gif", imageTag2.getImageURL()); ImageTag imageTag3 = (ImageTag) node[2]; assertEquals( "Expected Image 3", "http://us.i1.yimg.com/us.yimg.com/i/ligans/klgs/ern.gif", imageTag3.getImageURL()); } /** * Test case to reproduce bug reported by Annette */ public void testImageTagsFromYahooWithAllScannersRegistered() throws ParserException { createParser( " | |||
" + " Air, Hotel, " + "Vacations, Cruises" + " | " + "" + " | "
+ "Find your match on " + "Yahoo! Personals" + " | |
" + "\n" + " | |||
" + "" + " |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.