1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration2.builder;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertNotSame;
22 import static org.junit.jupiter.api.Assertions.assertSame;
23 import static org.junit.jupiter.api.Assertions.assertThrows;
24 import static org.junit.jupiter.api.Assertions.assertTrue;
25
26 import org.apache.commons.configuration2.Configuration;
27 import org.apache.commons.configuration2.PropertiesConfiguration;
28 import org.apache.commons.configuration2.event.Event;
29 import org.apache.commons.configuration2.event.EventType;
30 import org.apache.commons.configuration2.ex.ConfigurationException;
31 import org.junit.jupiter.api.Test;
32
33
34
35
36 public class TestBasicConfigurationBuilderEvents {
37
38
39
40 @Test
41 public void testBuilderEventType() {
42 final EventType<ConfigurationBuilderEvent> builderEventType = ConfigurationBuilderEvent.ANY;
43 assertEquals(Event.ANY, builderEventType.getSuperType());
44 }
45
46
47
48
49 @Test
50 public void testBuilderResetEvent() {
51 final BuilderEventListenerImpl listener = new BuilderEventListenerImpl();
52 final BasicConfigurationBuilder<PropertiesConfiguration> builder = new BasicConfigurationBuilder<>(PropertiesConfiguration.class);
53 builder.addEventListener(ConfigurationBuilderEvent.RESET, listener);
54
55 builder.reset();
56 builder.resetResult();
57 ConfigurationBuilderEvent event = listener.nextEvent(ConfigurationBuilderEvent.RESET);
58 assertSame(builder, event.getSource());
59 event = listener.nextEvent(ConfigurationBuilderEvent.RESET);
60 assertSame(builder, event.getSource());
61 listener.assertNoMoreEvents();
62 }
63
64
65
66
67 @Test
68 public void testBuilderResetEventType() {
69 final EventType<ConfigurationBuilderEvent> builderResetType = ConfigurationBuilderEvent.RESET;
70 assertEquals(ConfigurationBuilderEvent.ANY, builderResetType.getSuperType());
71 }
72
73
74
75
76 @Test
77 public void testConfigurationRequestEvent() throws ConfigurationException {
78 final BasicConfigurationBuilder<PropertiesConfiguration> builder = new BasicConfigurationBuilder<>(PropertiesConfiguration.class);
79 builder.getConfiguration();
80 final BuilderEventListenerImpl listener = new BuilderEventListenerImpl();
81 builder.addEventListener(ConfigurationBuilderEvent.ANY, listener);
82
83 builder.getConfiguration();
84 final ConfigurationBuilderEvent event = listener.nextEvent(ConfigurationBuilderEvent.CONFIGURATION_REQUEST);
85 assertSame(builder, event.getSource());
86 listener.assertNoMoreEvents();
87 }
88
89
90
91
92 @Test
93 public void testConfigurationRequestEventType() {
94 final EventType<ConfigurationBuilderEvent> eventType = ConfigurationBuilderEvent.CONFIGURATION_REQUEST;
95 assertEquals(ConfigurationBuilderEvent.ANY, eventType.getSuperType());
96 }
97
98
99
100
101 @Test
102 public void testRemoveEventListener() {
103 final BuilderEventListenerImpl listener = new BuilderEventListenerImpl();
104 final BasicConfigurationBuilder<PropertiesConfiguration> builder = new BasicConfigurationBuilder<>(PropertiesConfiguration.class);
105 builder.addEventListener(ConfigurationBuilderEvent.RESET, listener);
106
107 builder.reset();
108 assertTrue(builder.removeEventListener(ConfigurationBuilderEvent.RESET, listener));
109 builder.resetResult();
110 listener.nextEvent(ConfigurationBuilderEvent.RESET);
111 listener.assertNoMoreEvents();
112 }
113
114
115
116
117 @Test
118 public void testRemoveEventListenerNotExisting() {
119 final BasicConfigurationBuilder<PropertiesConfiguration> builder = new BasicConfigurationBuilder<>(PropertiesConfiguration.class);
120 final BuilderEventListenerImpl listener = new BuilderEventListenerImpl();
121 builder.addEventListener(ConfigurationBuilderEvent.RESET, listener);
122 assertFalse(builder.removeEventListener(ConfigurationBuilderEvent.CONFIGURATION_REQUEST, listener));
123 }
124
125
126
127
128 @Test
129 public void testResetOnConfigurationRequestEvent() throws ConfigurationException {
130 final BasicConfigurationBuilder<PropertiesConfiguration> builder = new BasicConfigurationBuilder<>(PropertiesConfiguration.class);
131 final PropertiesConfiguration configuration = builder.getConfiguration();
132 final BuilderEventListenerImpl listener = new BuilderEventListenerImpl();
133 builder.addEventListener(ConfigurationBuilderEvent.RESET, listener);
134 builder.addEventListener(ConfigurationBuilderEvent.CONFIGURATION_REQUEST, event -> builder.resetResult());
135
136 final PropertiesConfiguration configuration2 = builder.getConfiguration();
137 assertNotSame(configuration, configuration2);
138 listener.nextEvent(ConfigurationBuilderEvent.RESET);
139 listener.assertNoMoreEvents();
140 }
141
142
143
144
145 @Test
146 public void testResultCreatedEvent() throws ConfigurationException {
147 final BasicConfigurationBuilder<PropertiesConfiguration> builder = new BasicConfigurationBuilder<>(PropertiesConfiguration.class);
148 final BuilderEventListenerImpl listener = new BuilderEventListenerImpl();
149 builder.addEventListener(ConfigurationBuilderEvent.ANY, listener);
150
151 final PropertiesConfiguration configuration = builder.getConfiguration();
152 listener.nextEvent(ConfigurationBuilderEvent.CONFIGURATION_REQUEST);
153 final ConfigurationBuilderResultCreatedEvent event = listener.nextEvent(ConfigurationBuilderResultCreatedEvent.RESULT_CREATED);
154 assertSame(builder, event.getSource());
155 assertSame(configuration, event.getConfiguration());
156 }
157
158
159
160
161 @Test
162 public void testResultCreatedEventNoConfiguration() {
163 final BasicConfigurationBuilder<Configuration> builder = new BasicConfigurationBuilder<>(Configuration.class);
164 assertThrows(IllegalArgumentException.class,
165 () -> new ConfigurationBuilderResultCreatedEvent(builder, ConfigurationBuilderResultCreatedEvent.RESULT_CREATED, null));
166 }
167
168
169
170
171 @Test
172 public void testResultCreatedEventType() {
173 assertEquals(ConfigurationBuilderEvent.ANY, ConfigurationBuilderResultCreatedEvent.RESULT_CREATED.getSuperType());
174 }
175 }