001: /*******************************************************************************
002: * Portions created by Sebastian Thomschke are copyright (c) 2005-2007 Sebastian
003: * Thomschke.
004: *
005: * All Rights Reserved. This program and the accompanying materials
006: * are made available under the terms of the Eclipse Public License v1.0
007: * which accompanies this distribution, and is available at
008: * http://www.eclipse.org/legal/epl-v10.html
009: *
010: * Contributors:
011: * Sebastian Thomschke - initial implementation.
012: *******************************************************************************/package net.sf.oval.test.validator;
013:
014: import java.util.List;
015:
016: import junit.framework.TestCase;
017: import net.sf.oval.ConstraintViolation;
018: import net.sf.oval.Validator;
019: import net.sf.oval.constraint.CheckWith;
020: import net.sf.oval.constraint.NotNull;
021: import net.sf.oval.constraint.CheckWithCheck.SimpleCheck;
022:
023: /**
024: * @author Sebastian Thomschke
025: */
026: public class CheckWithConstraintTest extends TestCase {
027:
028: private static class TestEntity1 {
029: private static class NameCheck1 implements SimpleCheck {
030: private static final long serialVersionUID = 1L;
031:
032: public boolean isSatisfied(Object validatedObject,
033: Object value) {
034: String name = (String) value;
035:
036: if (name == null)
037: return false;
038: if (name.length() == 0)
039: return false;
040: if (name.length() > 4)
041: return false;
042: return true;
043: }
044: }
045:
046: @CheckWith(value=NameCheck1.class,ignoreIfNull=false)
047: public String name;
048: }
049:
050: private static class TestEntity2 {
051: private static class NameCheck2 implements SimpleCheck {
052: private static final long serialVersionUID = 1L;
053:
054: public boolean isSatisfied(Object validatedObject,
055: Object value) {
056: return ((TestEntity2) validatedObject)
057: .isValidName((String) value);
058: }
059: }
060:
061: @CheckWith(value=NameCheck2.class)
062: @NotNull
063: public String name;
064:
065: private boolean isValidName(String name) {
066: if (name.length() == 0)
067: return false;
068: if (name.length() > 4)
069: return false;
070: return true;
071: }
072: }
073:
074: public void testCheckWith1() {
075: final Validator validator = new Validator();
076:
077: final TestEntity1 t = new TestEntity1();
078:
079: List<ConstraintViolation> violations;
080:
081: violations = validator.validate(t);
082: assertTrue(violations.size() == 1);
083:
084: t.name = "";
085: violations = validator.validate(t);
086: assertTrue(violations.size() == 1);
087:
088: t.name = "12345";
089: violations = validator.validate(t);
090: assertTrue(violations.size() == 1);
091:
092: t.name = "1234";
093: violations = validator.validate(t);
094: assertTrue(violations.size() == 0);
095: }
096:
097: public void testCheckWith2() {
098: final Validator validator = new Validator();
099:
100: final TestEntity2 t = new TestEntity2();
101:
102: List<ConstraintViolation> violations;
103:
104: violations = validator.validate(t);
105: assertTrue(violations.size() == 1);
106:
107: t.name = "";
108: violations = validator.validate(t);
109: assertTrue(violations.size() == 1);
110:
111: t.name = "12345";
112: violations = validator.validate(t);
113: assertTrue(violations.size() == 1);
114:
115: t.name = "1234";
116: violations = validator.validate(t);
117: assertTrue(violations.size() == 0);
118: }
119: }
|