MaxResourcesPerSiteRuleTest.java :  » Web-Crawler » jspider » net » javacoding » jspider » mod » rule » Java Open Source

Java Open Source » Web Crawler » jspider 
jspider » net » javacoding » jspider » mod » rule » MaxResourcesPerSiteRuleTest.java
package net.javacoding.jspider.mod.rule;

import junit.framework.TestCase;
import net.javacoding.jspider.mockobjects.OverridingPropertySet;
import net.javacoding.jspider.api.model.Decision;
import net.javacoding.jspider.spi.Rule;
import net.javacoding.jspider.core.util.config.ConfigurationFactory;

import java.net.URL;

/**
 * $Id: MaxResourcesPerSiteRuleTest.java,v 1.1 2003/04/07 15:51:06 vanrogu Exp $
 */
public class MaxResourcesPerSiteRuleTest extends TestCase {

    protected OverridingPropertySet config;

    public MaxResourcesPerSiteRuleTest ( ) {
        super ( "MaxResourcesPerSiteRuleTest" );
    }

    protected void setUp() throws Exception {
        ConfigurationFactory.getConfiguration(ConfigurationFactory.CONFIG_UNITTEST);
        config = new OverridingPropertySet ( null );
    }

    public void testSimple ( ) throws Exception {
        int max = 1;
        int times = 1;
        String urlString = "http://j-spider.sourceforge.net/test.html";
        int expected = Decision.RULE_ACCEPT;

        applyTest(max, urlString, times, expected );
    }

    public void testSimpleViolation ( ) throws Exception {
        int max = 1;
        int times = 2;
        String urlString = "http://j-spider.sourceforge.net/test.html";
        int expected = Decision.RULE_IGNORE;

        applyTest(max, urlString, times, expected );
    }

    public void testZeroAllowed ( ) throws Exception {
        int max = 0;
        int times = 1;
        String urlString = "http://j-spider.sourceforge.net/test.html";
        int expected = Decision.RULE_IGNORE;

        applyTest(max, urlString, times, expected );
    }

    public void testTwoSites ( ) throws Exception {
        URL url1 = new URL("http://j-spider.sourceforge.net/index.html");
        URL url2 = new URL("http://www.somehost.com/index.html");
        URL url3 = new URL("http://j-spider.sourceforge.net/test.html");

        int max = 3;

        config.setValue(MaxResourcesPerSiteRule.MAX, new Integer(max));
        Rule rule = new MaxResourcesPerSiteRule(config) ;
        Decision decision = null;
        decision = rule.apply(null, null, url1);  // site1:1 site2:0
        assertEquals("decision not as expected", Decision.RULE_ACCEPT, decision.getDecision());
        decision = rule.apply(null, null, url2);  // site1:1 site2:1
        assertEquals("decision not as expected", Decision.RULE_ACCEPT, decision.getDecision());
        decision = rule.apply(null, null, url3);  // site1:2 site2:1
        assertEquals("decision not as expected", Decision.RULE_ACCEPT, decision.getDecision());
        decision = rule.apply(null, null, url1);  // site1:3 site2:1
        assertEquals("decision not as expected", Decision.RULE_ACCEPT, decision.getDecision());
        decision = rule.apply(null, null, url2);  // site1:3 site2:2
        assertEquals("decision not as expected", Decision.RULE_ACCEPT, decision.getDecision());
        decision = rule.apply(null, null, url3);  // site1 -- violation
        assertEquals("decision not as expected", Decision.RULE_IGNORE, decision.getDecision());
    }

    public void applyTest ( int max, String urlString, int times, int lastExpected ) throws Exception {
        config.setValue(MaxResourcesPerSiteRule.MAX, new Integer(max));

        URL url = new URL(urlString);
        Rule rule = new MaxResourcesPerSiteRule(config) ;
        Decision decision = null;
        for ( int i = 0; i < times; i++ ) {
            decision = rule.apply(null, null, url);
        }
        assertEquals("final decision not as expected", lastExpected, decision.getDecision());
    }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.