1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.commons.digester3.plugins;
20
21 import static org.junit.Assert.*;
22
23 import java.util.List;
24
25 import org.apache.commons.digester3.Digester;
26 import org.apache.commons.digester3.plugins.PluginCreateRule;
27 import org.apache.commons.digester3.plugins.PluginDeclarationRule;
28 import org.apache.commons.digester3.plugins.PluginRules;
29 import org.junit.Test;
30
31
32
33
34
35 public class TestLocalRules
36 {
37
38
39 @Test
40 public void testLocalRules()
41 throws Exception
42 {
43
44
45 Digester digester = new Digester();
46 PluginRules rc = new PluginRules();
47 digester.setRules( rc );
48
49 PluginDeclarationRule pdr = new PluginDeclarationRule();
50 digester.addRule( "root/plugin", pdr );
51
52 PluginCreateRule pcr2 = new PluginCreateRule( Widget.class );
53 digester.addRule( "root/widget", pcr2 );
54 digester.addSetNext( "root/widget", "addChild" );
55
56 Container root = new Container();
57 digester.push( root );
58
59 try
60 {
61 digester.parse( Utils.getInputStream( this, "test4a.xml" ) );
62 }
63 catch ( Exception e )
64 {
65 throw e;
66 }
67
68 Object child;
69 List<Widget> children = root.getChildren();
70 assertNotNull( children );
71 assertEquals( 3, children.size() );
72
73
74
75 child = children.get( 0 );
76 assertNotNull( child );
77 assertEquals( Slider.class, child.getClass() );
78 Slider slider1 = (Slider) child;
79 assertEquals( "slider1", slider1.getLabel() );
80 assertEquals( 1, slider1.getMin() );
81 assertEquals( 2, slider1.getMax() );
82
83
84
85 child = children.get( 1 );
86 assertNotNull( child );
87 assertEquals( Slider.class, child.getClass() );
88 Slider slider2 = (Slider) child;
89 assertEquals( "slider2", slider2.getLabel() );
90 assertEquals( 0, slider2.getMin() );
91 assertEquals( 0, slider2.getMax() );
92
93
94 child = children.get( 2 );
95 assertNotNull( child );
96 assertEquals( TextLabel.class, child.getClass() );
97 assertEquals( "text1", ( (TextLabel) child ).getLabel() );
98 }
99
100 @Test
101 public void testNonStandardLocalRules()
102 throws Exception
103 {
104
105
106
107
108
109
110
111
112 Digester digester = new Digester();
113 PluginRules rc = new PluginRules();
114 digester.setRules( rc );
115
116 PluginDeclarationRule pdr = new PluginDeclarationRule();
117 digester.addRule( "root/plugin", pdr );
118
119 PluginCreateRule pcr2 = new PluginCreateRule( Widget.class );
120 digester.addRule( "root/widget", pcr2 );
121 digester.addSetNext( "root/widget", "addChild" );
122
123 Container root = new Container();
124 digester.push( root );
125
126 try
127 {
128 digester.parse( Utils.getInputStream( this, "test4b.xml" ) );
129 }
130 catch ( Exception e )
131 {
132 throw e;
133 }
134
135 Object child;
136 List<Widget> children = root.getChildren();
137 assertNotNull( children );
138 assertEquals( 3, children.size() );
139
140
141
142 child = children.get( 0 );
143 assertNotNull( child );
144 assertEquals( Slider.class, child.getClass() );
145 Slider slider1 = (Slider) child;
146 assertEquals( "nolabel", slider1.getLabel() );
147 assertEquals( 0, slider1.getMin() );
148 assertEquals( 0, slider1.getMax() );
149
150
151
152 child = children.get( 1 );
153 assertNotNull( child );
154 assertEquals( Slider.class, child.getClass() );
155 Slider slider2 = (Slider) child;
156 assertEquals( "nolabel", slider2.getLabel() );
157 assertEquals( 10, slider2.getMin() );
158 assertEquals( 20, slider2.getMax() );
159
160
161 child = children.get( 2 );
162 assertNotNull( child );
163 assertEquals( TextLabel.class, child.getClass() );
164 assertEquals( "text1", ( (TextLabel) child ).getLabel() );
165 }
166 }