1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration;
18
19 import java.io.File;
20
21 import junit.framework.Test;
22 import junit.framework.TestCase;
23 import junit.framework.TestSuite;
24
25 import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
26 import org.apache.commons.configuration.tree.xpath.XPathExpressionEngine;
27
28 /***
29 * Unit test for simple MultiConfigurationTest.
30 */
31 public class TestPatternSubtreeConfiguration extends TestCase
32 {
33 private static String CONFIG_FILE = "target/test-classes/testPatternSubtreeConfig.xml";
34 private static String PATTERN = "BusinessClient[@name='${sys:Id}']";
35 private XMLConfiguration conf;
36
37 /***
38 * Create the test case
39 *
40 * @param testName name of the test case
41 */
42 public TestPatternSubtreeConfiguration( String testName )
43 {
44 super( testName );
45 }
46
47 /***
48 * @return the suite of tests being tested
49 */
50 public static Test suite() throws Exception
51 {
52 return new TestSuite(TestPatternSubtreeConfiguration.class );
53 }
54
55 protected void setUp() throws Exception
56 {
57 conf = new XMLConfiguration();
58 conf.setFile(new File(CONFIG_FILE));
59 conf.load();
60 }
61
62 /***
63 * Rigourous Test :-)
64 */
65 public void testMultiConfiguration()
66 {
67
68 FileChangedReloadingStrategy strategy = new FileChangedReloadingStrategy();
69 strategy.setRefreshDelay(10000);
70
71 PatternSubtreeConfigurationWrapper config = new PatternSubtreeConfigurationWrapper(this.conf, PATTERN);
72 config.setReloadingStrategy(strategy);
73 config.setExpressionEngine(new XPathExpressionEngine());
74
75 System.setProperty("Id", "1001");
76 assertTrue(config.getInt("rowsPerPage") == 15);
77
78 System.setProperty("Id", "1002");
79 assertTrue(config.getInt("rowsPerPage") == 25);
80
81 System.setProperty("Id", "1003");
82 assertTrue(config.getInt("rowsPerPage") == 35);
83 }
84 }