(no commit message)
[utils] / support / general / src / test / java / org / wamblee / conditions / PropertyRegexConditionTest.java
1 /*
2  * Copyright 2005-2010 the original author or authors.
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.wamblee.conditions;
17
18 import junit.framework.TestCase;
19
20 /**
21  * Tests {@link org.wamblee.conditions.PropertyRegexCondition}.
22  * 
23  * @author Erik Brakkee
24  */
25 public class PropertyRegexConditionTest extends TestCase {
26     private boolean match(String aProperty, String aRegex, boolean aToLower,
27         TestBean aBean) {
28         PropertyRegexCondition<TestBean> condition = new PropertyRegexCondition<TestBean>(
29             aProperty, aRegex, aToLower);
30
31         return condition.matches(aBean);
32     }
33
34     private void checkMatch(String aProperty, String aRegex, boolean aToLower,
35         TestBean aBean, boolean aResult) {
36         assertEquals(aResult, match(aProperty, aRegex, aToLower, aBean));
37     }
38
39     /**
40      * Verifies correct matching behavior for several cases.
41      * 
42      */
43     public void testMatchProperty() {
44         TestBean bean = new TestBean("Hallo");
45         checkMatch("value", "Hallo", false, bean, true);
46         checkMatch("value", "all", false, bean, false);
47         checkMatch("value", ".a.*o", false, bean, true);
48         checkMatch("value", "hallo", false, bean, false); // no match when not
49         // converting to lower
50         // case.
51         checkMatch("value", "hallo", true, bean, true); // match!
52     }
53
54     /**
55      * Uses property regex condition for non-existing property. Verifies that a
56      * runtime exception is thrown.
57      * 
58      */
59     public void testWrongProperty() {
60         TestBean bean = new TestBean("Hallo");
61
62         try {
63             match("bla", ".*", false, bean);
64         } catch (RuntimeException e) {
65             return; // ok
66         }
67
68         fail();
69     }
70
71     /**
72      * Applies condition to a private property. Verifies that a runtime
73      * exception is thrown.
74      * 
75      */
76     public void testPrivateProperty() {
77         TestBean bean = new TestBean("Hallo");
78
79         try {
80             match("privateValue", ".*", false, bean);
81         } catch (RuntimeException e) {
82             return; // ok
83         }
84
85         fail();
86     }
87 }