001 /*
002 * Copyright 2002-2006 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.rules.constraint.property;
017
018 import java.util.Arrays;
019 import java.util.Collection;
020
021 import junit.framework.TestCase;
022
023 /**
024 * @author Mathias Broekelmann
025 *
026 */
027 public class PropertyInGroupConstraintTests extends TestCase {
028
029 public void testConstraintWithObjectArray() {
030 MyTestBean bean = new MyTestBean();
031 AbstractPropertyConstraint constraint = new PropertyInGroupConstraint("property", "arrayvalues");
032 assertFalse(constraint.test(bean));
033 bean.setProperty("value1");
034 assertFalse(constraint.test(bean));
035 bean.setArrayvalues(new String[] { "value1", "value2" });
036 assertTrue(constraint.test(bean));
037 bean.setArrayvalues(new String[] { "value2" });
038 assertFalse(constraint.test(bean));
039 bean.setProperty("value3");
040 assertFalse(constraint.test(bean));
041 bean.setArrayvalues(new String[] { "value3" });
042 assertTrue(constraint.test(bean));
043 bean.setArrayvalues(null);
044 assertFalse(constraint.test(bean));
045 }
046
047 public void testConstraintWithObjectCollection() {
048 MyTestBean bean = new MyTestBean();
049 AbstractPropertyConstraint constraint = new PropertyInGroupConstraint("property", "collectionvalues");
050 assertFalse(constraint.test(bean));
051 bean.setProperty("value1");
052 assertFalse(constraint.test(bean));
053 bean.setCollectionvalues(Arrays.asList(new String[] { "value1", "value2" }));
054 assertTrue(constraint.test(bean));
055 bean.setCollectionvalues(Arrays.asList(new String[] { "value2" }));
056 assertFalse(constraint.test(bean));
057 bean.setProperty("value3");
058 assertFalse(constraint.test(bean));
059 bean.setCollectionvalues(Arrays.asList(new String[] { "value3" }));
060 assertTrue(constraint.test(bean));
061 bean.setCollectionvalues(null);
062 assertFalse(constraint.test(bean));
063 }
064
065 private static class MyTestBean {
066 private String property;
067
068 private String[] arrayvalues;
069
070 private Collection collectionvalues;
071
072 /**
073 * @return the collectionvalues
074 */
075 public Collection getCollectionvalues() {
076 return collectionvalues;
077 }
078
079 /**
080 * @param collectionvalues the collectionvalues to set
081 */
082 public void setCollectionvalues(Collection collectionvalues) {
083 this.collectionvalues = collectionvalues;
084 }
085
086 public String getProperty() {
087 return property;
088 }
089
090 public void setProperty(String property) {
091 this.property = property;
092 }
093
094 public String[] getArrayvalues() {
095 return arrayvalues;
096 }
097
098 public void setArrayvalues(String[] values) {
099 this.arrayvalues = values;
100 }
101 }
102 }