001 /* 002 * Copyright 2002-2004 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.richclient.dialog; 017 018 import java.beans.PropertyChangeEvent; 019 import java.beans.PropertyChangeListener; 020 021 import junit.framework.TestCase; 022 023 import org.springframework.richclient.core.DefaultMessage; 024 import org.springframework.richclient.core.Severity; 025 026 /** 027 * @author Peter De Bruycker 028 */ 029 public class DefaultMessageAreaModelTests extends TestCase { 030 031 private TestMessageAreaChangeListener ml1; 032 033 private TestMessageAreaChangeListener ml2; 034 035 public void testAddAndRemoveMessageListener() { 036 DefaultMessageAreaModel buffer = new DefaultMessageAreaModel(); 037 038 buffer.addPropertyChangeListener(ml1); 039 buffer.setMessage(new DefaultMessage("Msg")); 040 assertEquals(buffer, ml1.lastUpdated); 041 042 ml1.lastUpdated = null; 043 buffer.removePropertyChangeListener(ml1); 044 buffer.setMessage(new DefaultMessage("Msg1")); 045 assertEquals(null, ml1.lastUpdated); 046 047 buffer.addPropertyChangeListener(Messagable.MESSAGE_PROPERTY, ml1); 048 buffer.setMessage(new DefaultMessage("Msg")); 049 assertEquals(buffer, ml1.lastUpdated); 050 051 ml1.lastUpdated = null; 052 buffer.removePropertyChangeListener(Messagable.MESSAGE_PROPERTY, ml1); 053 buffer.setMessage(new DefaultMessage("Msg1")); 054 assertEquals(null, ml1.lastUpdated); 055 056 buffer.addPropertyChangeListener("Some Other Property", ml1); 057 buffer.setMessage(new DefaultMessage("Msg")); 058 assertEquals(null, ml1.lastUpdated); 059 } 060 061 public void testSetMessage() { 062 String msg = "Info message"; 063 064 DefaultMessageAreaModel buffer = new DefaultMessageAreaModel(); 065 buffer.addPropertyChangeListener(ml1); 066 buffer.addPropertyChangeListener(ml2); 067 068 buffer.setMessage(new DefaultMessage(msg)); 069 assertMessageAndSeveritySet(buffer, msg, Severity.INFO); 070 071 // with delegate 072 DefaultMessageAreaModel delegate = new DefaultMessageAreaModel(); 073 buffer = new DefaultMessageAreaModel(delegate); 074 buffer.addPropertyChangeListener(ml1); 075 buffer.addPropertyChangeListener(ml2); 076 buffer.setMessage(new DefaultMessage(msg)); 077 assertMessageAndSeveritySet(buffer, msg, Severity.INFO); 078 } 079 080 private void assertMessageAndSeveritySet(DefaultMessageAreaModel buffer, String msg, Severity severity) { 081 assertEquals("message was not set", msg, buffer.getMessage().getMessage()); 082 assertEquals("severity must be info", severity, buffer.getMessage().getSeverity()); 083 assertEquals("listener not notified", buffer.getDelegateFor(), ml1.lastUpdated); 084 assertEquals("listener not notified", buffer.getDelegateFor(), ml2.lastUpdated); 085 } 086 087 public void testSetErrorMessage() { 088 String msg = "Error message"; 089 090 DefaultMessageAreaModel buffer = new DefaultMessageAreaModel(); 091 buffer.addPropertyChangeListener(ml1); 092 buffer.addPropertyChangeListener(ml2); 093 094 buffer.setMessage(new DefaultMessage(msg, Severity.ERROR)); 095 assertMessageAndSeveritySet(buffer, msg, Severity.ERROR); 096 097 // with delegate 098 DefaultMessageAreaModel delegate = new DefaultMessageAreaModel(); 099 buffer = new DefaultMessageAreaModel(delegate); 100 buffer.addPropertyChangeListener(ml1); 101 buffer.addPropertyChangeListener(ml2); 102 103 buffer.setMessage(new DefaultMessage(msg, Severity.ERROR)); 104 assertMessageAndSeveritySet(buffer, msg, Severity.ERROR); 105 } 106 107 public void testSetSameMessage() { 108 String msg = "Test message"; 109 Severity severity = Severity.WARNING; 110 111 DefaultMessageAreaModel buffer = new DefaultMessageAreaModel(); 112 buffer.addPropertyChangeListener(ml1); 113 buffer.addPropertyChangeListener(ml2); 114 115 buffer.setMessage(new DefaultMessage(msg, severity)); 116 117 assertMessageAndSeveritySet(buffer, msg, severity); 118 ml1.lastUpdated = null; 119 ml2.lastUpdated = null; 120 121 // and again 122 buffer.setMessage(new DefaultMessage(msg, severity)); 123 assertNull(ml1.lastUpdated); 124 assertNull(ml2.lastUpdated); 125 } 126 127 /* 128 * (non-Javadoc) 129 * 130 * @see junit.framework.TestCase#setUp() 131 */ 132 protected void setUp() throws Exception { 133 super.setUp(); 134 135 ml1 = new TestMessageAreaChangeListener(); 136 ml2 = new TestMessageAreaChangeListener(); 137 } 138 139 private static class TestMessageAreaChangeListener implements PropertyChangeListener { 140 141 private Messagable lastUpdated; 142 143 public void propertyChange(PropertyChangeEvent evt) { 144 this.lastUpdated = (Messagable)evt.getSource(); 145 146 } 147 148 } 149 }