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 }