001 /*
002 * Copyright 2002-2005 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of 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,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.springframework.binding.validation;
017
018 import java.util.Set;
019
020 import org.springframework.binding.validation.support.DefaultValidationMessage;
021 import org.springframework.binding.validation.support.DefaultValidationResults;
022 import org.springframework.richclient.core.Severity;
023
024 import junit.framework.TestCase;
025
026 public class DefaultValidationResultsTests extends TestCase {
027 private DefaultValidationResults vr = new DefaultValidationResults();
028
029 public void testAddAndGetMessages() {
030 assertEquals(0, vr.getMessageCount());
031 assertEquals(0, vr.getMessageCount(Severity.INFO));
032 assertEquals(0, vr.getMessageCount("field1"));
033 assertEquals(false, vr.getHasErrors());
034 assertEquals(false, vr.getHasWarnings());
035 assertEquals(false, vr.getHasInfo());
036
037 vr.addMessage("field1", Severity.INFO, "message");
038 assertEquals(1, vr.getMessageCount());
039 assertEquals(1, vr.getMessageCount(Severity.INFO));
040 assertEquals(1, vr.getMessageCount("field1"));
041 ValidationMessage vm = (ValidationMessage)vr.getMessages().iterator().next();
042 assertEquals("field1", vm.getProperty());
043 assertEquals(Severity.INFO, vm.getSeverity());
044 assertEquals("message", vm.getMessage());
045 assertContainsMessage(vm, vr.getMessages("field1"));
046 assertContainsMessage(vm, vr.getMessages(Severity.INFO));
047 assertEquals(false, vr.getHasErrors());
048 assertEquals(false, vr.getHasWarnings());
049 assertEquals(true, vr.getHasInfo());
050
051 vm = new DefaultValidationMessage("field2", Severity.WARNING, "message");
052 vr.addMessage(vm);
053 assertEquals(2, vr.getMessageCount());
054 assertEquals(1, vr.getMessageCount(Severity.WARNING));
055 assertEquals(1, vr.getMessageCount("field2"));
056 assertContainsMessage(vm, vr.getMessages());
057 assertContainsMessage(vm, vr.getMessages("field2"));
058 assertContainsMessage(vm, vr.getMessages(Severity.WARNING));
059 assertEquals(false, vr.getHasErrors());
060 assertEquals(true, vr.getHasWarnings());
061 assertEquals(true, vr.getHasInfo());
062
063 vm = new DefaultValidationMessage(ValidationMessage.GLOBAL_PROPERTY, Severity.ERROR, "message");
064 vr.addMessage(vm);
065 assertEquals(3, vr.getMessageCount());
066 assertEquals(1, vr.getMessageCount(Severity.ERROR));
067 assertEquals(1, vr.getMessageCount(ValidationMessage.GLOBAL_PROPERTY));
068 assertContainsMessage(vm, vr.getMessages());
069 assertContainsMessage(vm, vr.getMessages(ValidationMessage.GLOBAL_PROPERTY));
070 assertContainsMessage(vm, vr.getMessages(Severity.ERROR));
071 assertEquals(true, vr.getHasErrors());
072 assertEquals(true, vr.getHasWarnings());
073 assertEquals(true, vr.getHasInfo());
074
075 vm = new DefaultValidationMessage("field1", Severity.ERROR, "message");
076 vr.addMessage(vm);
077 assertEquals(4, vr.getMessageCount());
078 assertEquals(2, vr.getMessageCount(Severity.ERROR));
079 assertEquals(2, vr.getMessageCount("field1"));
080 assertContainsMessage(vm, vr.getMessages());
081 assertContainsMessage(vm, vr.getMessages("field1"));
082 assertContainsMessage(vm, vr.getMessages(Severity.ERROR));
083
084 DefaultValidationResults vr2 = new DefaultValidationResults();
085 vm = new DefaultValidationMessage("newField", Severity.INFO, "message");
086 vr2.addMessage(vm);
087 ValidationMessage vm2 = new DefaultValidationMessage("newField", Severity.ERROR, "message");
088 vr2.addMessage(vm2);
089
090 vr.addAllMessages(vr2.getMessages());
091 assertEquals(6, vr.getMessageCount());
092 assertEquals(3, vr.getMessageCount(Severity.ERROR));
093 assertEquals(2, vr.getMessageCount(Severity.INFO));
094 assertEquals(2, vr.getMessageCount("newField"));
095 assertContainsMessage(vm, vr.getMessages());
096 assertContainsMessage(vm2, vr.getMessages());
097 assertContainsMessage(vm, vr.getMessages("newField"));
098 assertContainsMessage(vm2, vr.getMessages("newField"));
099 assertContainsMessage(vm, vr.getMessages(Severity.INFO));
100 assertContainsMessage(vm2, vr.getMessages(Severity.ERROR));
101 }
102
103 public void testCanNotAddSameMessage() {
104 ValidationMessage vm = new DefaultValidationMessage("field2", Severity.WARNING, "message");
105 vr.addMessage(vm);
106 assertEquals(1, vr.getMessageCount());
107 assertEquals(1, vr.getMessageCount(Severity.WARNING));
108 assertEquals(1, vr.getMessageCount("field2"));
109
110 vr.addMessage(vm);
111 assertEquals(1, vr.getMessageCount());
112 assertEquals(1, vr.getMessageCount(Severity.WARNING));
113 assertEquals(1, vr.getMessageCount("field2"));
114
115 vm = new DefaultValidationMessage("field2", Severity.WARNING, "message");
116 vr.addMessage(vm);
117 assertEquals(1, vr.getMessageCount());
118 assertEquals(1, vr.getMessageCount(Severity.WARNING));
119 assertEquals(1, vr.getMessageCount("field2"));
120
121 DefaultValidationResults vr2 = new DefaultValidationResults();
122 vr2.addMessage(vm);
123 vr.addAllMessages(vr2);
124 assertEquals(1, vr.getMessageCount());
125 assertEquals(1, vr.getMessageCount(Severity.WARNING));
126 assertEquals(1, vr.getMessageCount("field2"));
127 }
128
129 private void assertContainsMessage(ValidationMessage vm, Set messages) {
130 assertTrue("Set of messages does not contain expected message '" + vm + "'", messages.contains(vm));
131 }
132
133 public void testReturnedListsAreNotModifiable() {
134 vr.addMessage("field1", Severity.ERROR, "what ever!");
135 try {
136 vr.getMessages().clear();
137 fail();
138 }
139 catch (UnsupportedOperationException e) {
140 // expected
141 }
142 try {
143 vr.getMessages("field1").clear();
144 fail();
145 }
146 catch (UnsupportedOperationException e) {
147 // expected
148 }
149 try {
150 vr.getMessages(Severity.ERROR).clear();
151 fail();
152 }
153 catch (UnsupportedOperationException e) {
154 // expected
155 }
156 }
157 }