1 /***
2 * Redistribution and use in source and binary forms, with or without
3 * modification, are permitted provided that the following conditions are
4 * met :
5 *
6 * . Redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer.
8 *
9 * . Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * . The name of the author may not be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
24 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
25 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 *
28 * $Id$
29 */
30
31 package jtge.engine.data;
32
33 import jtge.util.EasyMockTestCase;
34
35 /***
36 * Context test case.
37 *
38 * @author Mathieu Champlon
39 * @version $Revision$ $Date$
40 */
41 public class ContextTest extends EasyMockTestCase
42 {
43 private interface IData
44 {
45 }
46
47 private class Data
48 {
49 }
50
51 private interface ICallback
52 {
53 void update( IData data );
54
55 void update( Data data );
56
57 void update( Object data );
58
59 void update( String string );
60 }
61
62 /***
63 * Tested object.
64 */
65 private Context context;
66 /***
67 * Mock objects.
68 */
69 private ICallback mockCallback;
70
71 protected void setUp()
72 {
73 mockCallback = (ICallback)createMock( ICallback.class );
74 context = new Context();
75 context.register( mockCallback );
76 }
77
78 public void testSetterCalledWhenPuttingCustomData()
79 {
80 final Data data = new Data();
81 mockCallback.update( data );
82 mockCallback.update( (Object)data );
83 replay();
84 context.put( Data.class, data );
85 }
86
87 public void testInterfaceSetterCalledWhenPuttingCustomData()
88 {
89 IData data = new IData()
90 {
91 };
92 mockCallback.update( data );
93 mockCallback.update( (Object)data );
94 replay();
95 context.put( IData.class, data );
96 }
97
98 public void testRegisterNullKeyThrowsException()
99 {
100 Data data = new Data();
101 try
102 {
103 context.put( null, data );
104 }
105 catch( IllegalArgumentException e )
106 {
107 return;
108 }
109 fail();
110 }
111
112 public void testRegisterNullDataIsNoOp()
113 {
114 context.put( "key_does_not_matter", null );
115 }
116 }