1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.richclient.dialog;
17
18 import java.beans.PropertyChangeEvent;
19 import java.beans.PropertyChangeListener;
20
21 import junit.framework.TestCase;
22
23 import org.springframework.richclient.core.DefaultMessage;
24 import org.springframework.richclient.core.Severity;
25
26
27
28
29 public class DefaultMessageAreaModelTests extends TestCase {
30
31 private TestMessageAreaChangeListener ml1;
32
33 private TestMessageAreaChangeListener ml2;
34
35 public void testAddAndRemoveMessageListener() {
36 DefaultMessageAreaModel buffer = new DefaultMessageAreaModel();
37
38 buffer.addPropertyChangeListener(ml1);
39 buffer.setMessage(new DefaultMessage("Msg"));
40 assertEquals(buffer, ml1.lastUpdated);
41
42 ml1.lastUpdated = null;
43 buffer.removePropertyChangeListener(ml1);
44 buffer.setMessage(new DefaultMessage("Msg1"));
45 assertEquals(null, ml1.lastUpdated);
46
47 buffer.addPropertyChangeListener(Messagable.MESSAGE_PROPERTY, ml1);
48 buffer.setMessage(new DefaultMessage("Msg"));
49 assertEquals(buffer, ml1.lastUpdated);
50
51 ml1.lastUpdated = null;
52 buffer.removePropertyChangeListener(Messagable.MESSAGE_PROPERTY, ml1);
53 buffer.setMessage(new DefaultMessage("Msg1"));
54 assertEquals(null, ml1.lastUpdated);
55
56 buffer.addPropertyChangeListener("Some Other Property", ml1);
57 buffer.setMessage(new DefaultMessage("Msg"));
58 assertEquals(null, ml1.lastUpdated);
59 }
60
61 public void testSetMessage() {
62 String msg = "Info message";
63
64 DefaultMessageAreaModel buffer = new DefaultMessageAreaModel();
65 buffer.addPropertyChangeListener(ml1);
66 buffer.addPropertyChangeListener(ml2);
67
68 buffer.setMessage(new DefaultMessage(msg));
69 assertMessageAndSeveritySet(buffer, msg, Severity.INFO);
70
71
72 DefaultMessageAreaModel delegate = new DefaultMessageAreaModel();
73 buffer = new DefaultMessageAreaModel(delegate);
74 buffer.addPropertyChangeListener(ml1);
75 buffer.addPropertyChangeListener(ml2);
76 buffer.setMessage(new DefaultMessage(msg));
77 assertMessageAndSeveritySet(buffer, msg, Severity.INFO);
78 }
79
80 private void assertMessageAndSeveritySet(DefaultMessageAreaModel buffer, String msg, Severity severity) {
81 assertEquals("message was not set", msg, buffer.getMessage().getMessage());
82 assertEquals("severity must be info", severity, buffer.getMessage().getSeverity());
83 assertEquals("listener not notified", buffer.getDelegateFor(), ml1.lastUpdated);
84 assertEquals("listener not notified", buffer.getDelegateFor(), ml2.lastUpdated);
85 }
86
87 public void testSetErrorMessage() {
88 String msg = "Error message";
89
90 DefaultMessageAreaModel buffer = new DefaultMessageAreaModel();
91 buffer.addPropertyChangeListener(ml1);
92 buffer.addPropertyChangeListener(ml2);
93
94 buffer.setMessage(new DefaultMessage(msg, Severity.ERROR));
95 assertMessageAndSeveritySet(buffer, msg, Severity.ERROR);
96
97
98 DefaultMessageAreaModel delegate = new DefaultMessageAreaModel();
99 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
122 buffer.setMessage(new DefaultMessage(msg, severity));
123 assertNull(ml1.lastUpdated);
124 assertNull(ml2.lastUpdated);
125 }
126
127
128
129
130
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 }