001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.cocoon.selection;
018:
019: import java.util.Map;
020: import junit.framework.Test;
021: import junit.framework.TestSuite;
022: import junit.textui.TestRunner;
023: import org.apache.avalon.framework.parameters.Parameters;
024: import org.apache.cocoon.ProcessingException;
025: import org.apache.cocoon.SitemapComponentTestCase;
026: import org.apache.cocoon.environment.ObjectModelHelper;
027:
028: public class ExceptionSelectorTestCase extends SitemapComponentTestCase {
029:
030: private static final String EXCEPTION_SELECTOR = "exception";
031:
032: /**
033: * Run this test suite from commandline
034: *
035: * @param args commandline arguments (ignored)
036: */
037: public static void main(String[] args) {
038: TestRunner.run(suite());
039: }
040:
041: /** Create a test suite.
042: * This test suite contains all test cases of this class.
043: * @return the Test object containing all test cases.
044: */
045: public static Test suite() {
046: TestSuite suite = new TestSuite(ExceptionSelectorTestCase.class);
047: return suite;
048: }
049:
050: /**
051: * A simple exception select test
052: */
053: public void testExceptionSelect() throws Exception {
054:
055: // create an exception
056: final java.lang.NullPointerException npe = new java.lang.NullPointerException(
057: "ExceptionSelectorTestCase");
058:
059: // put the exception into the objectModel
060: Map objectModel = this .getObjectModel();
061: objectModel.put(ObjectModelHelper.THROWABLE_OBJECT, npe);
062:
063: Parameters parameters = new Parameters();
064: boolean result;
065:
066: // test selection success
067: result = this .select(EXCEPTION_SELECTOR, "npe", parameters);
068: System.out.println(result);
069: assertTrue("Test if a npe is selected", result);
070:
071: // test selection failure
072: result = this .select(EXCEPTION_SELECTOR,
073: "non-specified-exception", parameters);
074: System.out.println(result);
075: assertTrue("Test if a non specified exception is not selected",
076: !result);
077: }
078:
079: /**
080: * A simple exception select test
081: */
082: public void testExceptionSelectUnknownException() throws Exception {
083:
084: // create an exception
085: final java.lang.IllegalArgumentException iae = new IllegalArgumentException(
086: "ExceptionSelectorTestCase");
087:
088: // put the exception into the objectModel
089: Map objectModel = this .getObjectModel();
090: objectModel.put(ObjectModelHelper.THROWABLE_OBJECT, iae);
091:
092: Parameters parameters = new Parameters();
093: boolean result;
094:
095: // test selection failure
096: result = this .select(EXCEPTION_SELECTOR, "npe", parameters);
097: System.out.println(result);
098: assertTrue("Test if a npe is not selected selected", !result);
099: }
100:
101: /**
102: * A simple exception select test
103: * The causing exception is listed, thus selecting the unrolling
104: * exception fails, selecting the causing exception succeeds.
105: */
106: public void testExceptionSelectProcessingException()
107: throws Exception {
108:
109: // create an exception
110: final java.lang.NullPointerException npe = new NullPointerException(
111: "NullPointerExceptionSelectorTestCase");
112: final ProcessingException pe = new ProcessingException(
113: "ProcessingExceptionSelectorTestCase", npe);
114:
115: // put the exception into the objectModel
116: Map objectModel = this .getObjectModel();
117: objectModel.put(ObjectModelHelper.THROWABLE_OBJECT, pe);
118:
119: Parameters parameters = new Parameters();
120: boolean result;
121:
122: // test selection success
123: result = this .select(EXCEPTION_SELECTOR, "npe", parameters);
124: System.out.println(result);
125: assertTrue("Test if a npe is selected", result);
126:
127: // test selection failure
128: result = this .select(EXCEPTION_SELECTOR, "pe", parameters);
129: System.out.println(result);
130: assertTrue("Test if a pe is not selected", !result);
131: }
132:
133: /**
134: * A simple exception select test.
135: * The causing exception is not listed, thus matching the unrolling
136: * exception succeeds
137: */
138: public void testExceptionSelectProcessingException2()
139: throws Exception {
140:
141: // create an exception
142: final java.lang.IllegalArgumentException iae = new IllegalArgumentException(
143: "ExceptionSelectorTestCase");
144: final ProcessingException pe = new ProcessingException(
145: "ProcessingExceptionSelectorTestCase", iae);
146:
147: // put the exception into the objectModel
148: Map objectModel = this .getObjectModel();
149: objectModel.put(ObjectModelHelper.THROWABLE_OBJECT, pe);
150:
151: Parameters parameters = new Parameters();
152: boolean result;
153:
154: // test selection success
155: result = this .select(EXCEPTION_SELECTOR, "pe", parameters);
156: System.out.println(result);
157: assertTrue("Test if a pe is not selected", result);
158: }
159: }
|