|
8 | 8 | import static org.assertj.core.api.Assertions.assertThat; |
9 | 9 |
|
10 | 10 | import java.util.Set; |
| 11 | +import java.util.stream.Stream; |
11 | 12 | import javax.management.MBeanServer; |
12 | 13 | import javax.management.MBeanServerFactory; |
13 | 14 | import javax.management.ObjectName; |
|
16 | 17 | import org.junit.jupiter.api.BeforeEach; |
17 | 18 | import org.junit.jupiter.api.Test; |
18 | 19 | import org.junit.jupiter.params.ParameterizedTest; |
| 20 | +import org.junit.jupiter.params.provider.Arguments; |
| 21 | +import org.junit.jupiter.params.provider.MethodSource; |
19 | 22 | import org.junit.jupiter.params.provider.ValueSource; |
20 | 23 |
|
21 | 24 | class AttributeExtractorTest { |
@@ -127,100 +130,30 @@ void testSetup() { |
127 | 130 | assertThat(set).isNotNull().hasSize(1).contains(objectName); |
128 | 131 | } |
129 | 132 |
|
130 | | - @Test |
131 | | - void testByteAttribute() { |
132 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("ByteAttribute"); |
133 | | - AttributeInfo info = extractor.getAttributeInfo(theServer, objectName); |
134 | | - assertThat(info).isNotNull(); |
135 | | - assertThat(info.usesDoubleValues()).isFalse(); |
136 | | - } |
137 | | - |
138 | | - @Test |
139 | | - void testByteAttributeValue() { |
140 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("ByteAttribute"); |
141 | | - Number number = extractor.extractNumericalAttribute(theServer, objectName); |
142 | | - assertThat(number).isNotNull(); |
143 | | - assertThat(number.longValue()).isEqualTo(10); |
144 | | - } |
145 | | - |
146 | | - @Test |
147 | | - void testShortAttribute() { |
148 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("ShortAttribute"); |
149 | | - AttributeInfo info = extractor.getAttributeInfo(theServer, objectName); |
150 | | - assertThat(info).isNotNull(); |
151 | | - assertThat(info.usesDoubleValues()).isFalse(); |
152 | | - } |
153 | | - |
154 | | - @Test |
155 | | - void testShortAttributeValue() { |
156 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("ShortAttribute"); |
157 | | - Number number = extractor.extractNumericalAttribute(theServer, objectName); |
158 | | - assertThat(number).isNotNull(); |
159 | | - assertThat(number.longValue()).isEqualTo(11); |
160 | | - } |
161 | | - |
162 | | - @Test |
163 | | - void testIntAttribute() { |
164 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("IntAttribute"); |
165 | | - AttributeInfo info = extractor.getAttributeInfo(theServer, objectName); |
166 | | - assertThat(info).isNotNull(); |
167 | | - assertThat(info.usesDoubleValues()).isFalse(); |
168 | | - } |
169 | | - |
170 | | - @Test |
171 | | - void testIntAttributeValue() { |
172 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("IntAttribute"); |
173 | | - Number number = extractor.extractNumericalAttribute(theServer, objectName); |
174 | | - assertThat(number).isNotNull(); |
175 | | - assertThat(number.longValue()).isEqualTo(12); |
176 | | - } |
177 | | - |
178 | | - @Test |
179 | | - void testLongAttribute() { |
180 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("LongAttribute"); |
| 133 | + @ParameterizedTest |
| 134 | + @MethodSource("numericAttributeArgs") |
| 135 | + void testNumericAttributeInfo( |
| 136 | + String attributeName, boolean usesDoubleValues, Number expectedValue) { |
| 137 | + BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName(attributeName); |
181 | 138 | AttributeInfo info = extractor.getAttributeInfo(theServer, objectName); |
182 | | - assertThat(info).isNotNull(); |
183 | | - assertThat(info.usesDoubleValues()).isFalse(); |
184 | | - } |
185 | | - |
186 | | - @Test |
187 | | - void testLongAttributeValue() { |
188 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("LongAttribute"); |
189 | | - Number number = extractor.extractNumericalAttribute(theServer, objectName); |
190 | | - assertThat(number).isNotNull(); |
191 | | - assertThat(number.longValue()).isEqualTo(13); |
192 | | - } |
193 | 139 |
|
194 | | - @Test |
195 | | - void testFloatAttribute() { |
196 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("FloatAttribute"); |
197 | | - AttributeInfo info = extractor.getAttributeInfo(theServer, objectName); |
198 | 140 | assertThat(info).isNotNull(); |
199 | | - assertThat(info.usesDoubleValues()).isTrue(); |
| 141 | + assertThat(info.usesDoubleValues()).isEqualTo(usesDoubleValues); |
200 | 142 | } |
201 | 143 |
|
202 | | - @Test |
203 | | - void testFloatAttributeValue() { |
204 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("FloatAttribute"); |
| 144 | + @ParameterizedTest |
| 145 | + @MethodSource("numericAttributeArgs") |
| 146 | + void testNumericAttributeValue( |
| 147 | + String attributeName, boolean usesDoubleValues, Number expectedValue) { |
| 148 | + BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName(attributeName); |
205 | 149 | Number number = extractor.extractNumericalAttribute(theServer, objectName); |
206 | | - assertThat(number).isNotNull(); |
207 | | - assertThat(number.doubleValue()).isEqualTo(14.0); // accurate representation |
208 | | - } |
209 | 150 |
|
210 | | - @Test |
211 | | - void testDoubleAttribute() { |
212 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("DoubleAttribute"); |
213 | | - AttributeInfo info = extractor.getAttributeInfo(theServer, objectName); |
214 | | - assertThat(info).isNotNull(); |
215 | | - assertThat(info.usesDoubleValues()).isTrue(); |
216 | | - } |
217 | | - |
218 | | - @Test |
219 | | - void testDoubleAttributeValue() { |
220 | | - BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("DoubleAttribute"); |
221 | | - Number number = extractor.extractNumericalAttribute(theServer, objectName); |
222 | 151 | assertThat(number).isNotNull(); |
223 | | - assertThat(number.doubleValue()).isEqualTo(15.0); // accurate representation |
| 152 | + if (usesDoubleValues) { |
| 153 | + assertThat(number.doubleValue()).isEqualTo(expectedValue.doubleValue()); |
| 154 | + } else { |
| 155 | + assertThat(number.longValue()).isEqualTo(expectedValue.longValue()); |
| 156 | + } |
224 | 157 | } |
225 | 158 |
|
226 | 159 | @Test |
@@ -266,4 +199,14 @@ void testNegativeFilter(String attributeName) { |
266 | 199 | .describedAs("negative value should be filtered") |
267 | 200 | .isNull(); |
268 | 201 | } |
| 202 | + |
| 203 | + private static Stream<Arguments> numericAttributeArgs() { |
| 204 | + return Stream.of( |
| 205 | + Arguments.of("ByteAttribute", false, 10L), |
| 206 | + Arguments.of("ShortAttribute", false, 11L), |
| 207 | + Arguments.of("IntAttribute", false, 12L), |
| 208 | + Arguments.of("LongAttribute", false, 13L), |
| 209 | + Arguments.of("FloatAttribute", true, 14.0), |
| 210 | + Arguments.of("DoubleAttribute", true, 15.0)); |
| 211 | + } |
269 | 212 | } |
0 commit comments