01: package net.javacoding.jspider.mod.rule;
02:
03: import junit.framework.TestCase;
04: import net.javacoding.jspider.mockobjects.OverridingPropertySet;
05: import net.javacoding.jspider.api.model.Decision;
06: import net.javacoding.jspider.spi.Rule;
07: import net.javacoding.jspider.core.util.config.ConfigurationFactory;
08:
09: import java.net.URL;
10:
11: /**
12: * $Id: MaxResourcesPerSiteRuleTest.java,v 1.1 2003/04/07 15:51:06 vanrogu Exp $
13: */
14: public class MaxResourcesPerSiteRuleTest extends TestCase {
15:
16: protected OverridingPropertySet config;
17:
18: public MaxResourcesPerSiteRuleTest() {
19: super ("MaxResourcesPerSiteRuleTest");
20: }
21:
22: protected void setUp() throws Exception {
23: ConfigurationFactory
24: .getConfiguration(ConfigurationFactory.CONFIG_UNITTEST);
25: config = new OverridingPropertySet(null);
26: }
27:
28: public void testSimple() throws Exception {
29: int max = 1;
30: int times = 1;
31: String urlString = "http://j-spider.sourceforge.net/test.html";
32: int expected = Decision.RULE_ACCEPT;
33:
34: applyTest(max, urlString, times, expected);
35: }
36:
37: public void testSimpleViolation() throws Exception {
38: int max = 1;
39: int times = 2;
40: String urlString = "http://j-spider.sourceforge.net/test.html";
41: int expected = Decision.RULE_IGNORE;
42:
43: applyTest(max, urlString, times, expected);
44: }
45:
46: public void testZeroAllowed() throws Exception {
47: int max = 0;
48: int times = 1;
49: String urlString = "http://j-spider.sourceforge.net/test.html";
50: int expected = Decision.RULE_IGNORE;
51:
52: applyTest(max, urlString, times, expected);
53: }
54:
55: public void testTwoSites() throws Exception {
56: URL url1 = new URL("http://j-spider.sourceforge.net/index.html");
57: URL url2 = new URL("http://www.somehost.com/index.html");
58: URL url3 = new URL("http://j-spider.sourceforge.net/test.html");
59:
60: int max = 3;
61:
62: config.setValue(MaxResourcesPerSiteRule.MAX, new Integer(max));
63: Rule rule = new MaxResourcesPerSiteRule(config);
64: Decision decision = null;
65: decision = rule.apply(null, null, url1); // site1:1 site2:0
66: assertEquals("decision not as expected", Decision.RULE_ACCEPT,
67: decision.getDecision());
68: decision = rule.apply(null, null, url2); // site1:1 site2:1
69: assertEquals("decision not as expected", Decision.RULE_ACCEPT,
70: decision.getDecision());
71: decision = rule.apply(null, null, url3); // site1:2 site2:1
72: assertEquals("decision not as expected", Decision.RULE_ACCEPT,
73: decision.getDecision());
74: decision = rule.apply(null, null, url1); // site1:3 site2:1
75: assertEquals("decision not as expected", Decision.RULE_ACCEPT,
76: decision.getDecision());
77: decision = rule.apply(null, null, url2); // site1:3 site2:2
78: assertEquals("decision not as expected", Decision.RULE_ACCEPT,
79: decision.getDecision());
80: decision = rule.apply(null, null, url3); // site1 -- violation
81: assertEquals("decision not as expected", Decision.RULE_IGNORE,
82: decision.getDecision());
83: }
84:
85: public void applyTest(int max, String urlString, int times,
86: int lastExpected) throws Exception {
87: config.setValue(MaxResourcesPerSiteRule.MAX, new Integer(max));
88:
89: URL url = new URL(urlString);
90: Rule rule = new MaxResourcesPerSiteRule(config);
91: Decision decision = null;
92: for (int i = 0; i < times; i++) {
93: decision = rule.apply(null, null, url);
94: }
95: assertEquals("final decision not as expected", lastExpected,
96: decision.getDecision());
97: }
98:
99: }
|