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 }