1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.binding.value.support;
17
18 import junit.framework.TestCase;
19
20 import org.easymock.EasyMock;
21 import org.springframework.binding.value.ValueChangeDetector;
22 import org.springframework.rules.closure.Closure;
23 import org.springframework.richclient.application.ApplicationServices;
24 import org.springframework.richclient.application.ApplicationServicesLocator;
25
26
27
28
29
30
31 public class RefreshableValueHolderTests extends TestCase {
32 public void testWithLazyInitTrueAndAlwaysRefreshFalse() {
33 Object returnValue = new Object();
34
35 Closure refreshFunction = (Closure) EasyMock.createMock(Closure.class);
36 EasyMock.expect(refreshFunction.call(null)).andReturn(returnValue);
37 EasyMock.replay(refreshFunction);
38
39 RefreshableValueHolder valueHolder = new RefreshableValueHolder(refreshFunction);
40
41 assertNull(valueHolder.getValue());
42 valueHolder.refresh();
43 assertSame(returnValue, valueHolder.getValue());
44
45 EasyMock.verify(refreshFunction);
46 }
47
48 public void testWithLazyInitFalseAndAlwaysRefreshFalse() {
49 Object returnValue = new Object();
50
51 Closure refreshFunction = (Closure) EasyMock.createMock(Closure.class);
52 EasyMock.expect(refreshFunction.call(null)).andReturn(returnValue);
53 EasyMock.replay(refreshFunction);
54
55 RefreshableValueHolder valueHolder = new RefreshableValueHolder(refreshFunction, false, false);
56 assertSame(returnValue, valueHolder.getValue());
57
58 EasyMock.verify(refreshFunction);
59 }
60
61 public void testWithLazyInitFalseAndAlwaysRefreshTrue() {
62 Object returnValue1 = new Object();
63 Object returnValue2 = new Object();
64 Object returnValue3 = new Object();
65
66 Closure refreshFunction = (Closure) EasyMock.createMock(Closure.class);
67 EasyMock.expect(refreshFunction.call(null)).andReturn(returnValue1);
68 EasyMock.expect(refreshFunction.call(null)).andReturn(returnValue2);
69 EasyMock.expect(refreshFunction.call(null)).andReturn(returnValue3);
70 EasyMock.replay(refreshFunction);
71
72 RefreshableValueHolder valueHolder = new RefreshableValueHolder(refreshFunction, true, true);
73 assertSame(returnValue1, valueHolder.getValue());
74 assertSame(returnValue2, valueHolder.getValue());
75 assertSame(returnValue3, valueHolder.getValue());
76
77 EasyMock.verify(refreshFunction);
78 }
79
80 protected void setUp() throws Exception {
81 ApplicationServices services = new ApplicationServices() {
82
83 public Object getService(Class serviceType) {
84 return new DefaultValueChangeDetector();
85 }
86
87 public boolean containsService(Class serviceType) {
88 return ValueChangeDetector.class.equals(serviceType);
89 }
90
91 };
92 ApplicationServicesLocator.load(new ApplicationServicesLocator(services));
93 }
94 }