|
14 | 14 | import org.junit.jupiter.params.ParameterizedTest; |
15 | 15 | import org.junit.jupiter.params.provider.ValueSource; |
16 | 16 |
|
| 17 | +import java.math.BigDecimal; |
17 | 18 | import java.net.URLEncoder; |
18 | 19 | import java.nio.charset.StandardCharsets; |
| 20 | +import java.time.LocalDate; |
19 | 21 | import java.time.LocalTime; |
| 22 | +import java.time.OffsetDateTime; |
20 | 23 | import java.time.format.DateTimeParseException; |
21 | 24 | import java.util.List; |
22 | 25 | import java.util.UUID; |
@@ -135,4 +138,153 @@ void testInvalidOffsetDateTimeStringThrowsException(final String dateTimeString) |
135 | 138 | assertTrue(ex.getMessage().contains(dateTimeString)); |
136 | 139 | } |
137 | 140 | } |
| 141 | + |
| 142 | + @Test |
| 143 | + public void getCollectionOfStringPrimitiveValuesFromForm() { |
| 144 | + final String testFormData = "names=Alice&names=Bob"; |
| 145 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("names"); |
| 146 | + final List<String> result = node.getCollectionOfPrimitiveValues(String.class); |
| 147 | + assertNotNull(result); |
| 148 | + assertEquals(2, result.size()); |
| 149 | + assertEquals("Alice", result.get(0)); |
| 150 | + assertEquals("Bob", result.get(1)); |
| 151 | + } |
| 152 | + |
| 153 | + @Test |
| 154 | + public void getCollectionOfIntegerPrimitiveValuesFromForm() { |
| 155 | + final String testFormData = "nums=1&nums=2&nums=3"; |
| 156 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("nums"); |
| 157 | + final List<Integer> result = node.getCollectionOfPrimitiveValues(Integer.class); |
| 158 | + assertNotNull(result); |
| 159 | + assertEquals(3, result.size()); |
| 160 | + assertEquals(1, result.get(0)); |
| 161 | + assertEquals(2, result.get(1)); |
| 162 | + assertEquals(3, result.get(2)); |
| 163 | + } |
| 164 | + |
| 165 | + @Test |
| 166 | + public void getCollectionOfLongPrimitiveValuesFromForm() { |
| 167 | + final String testFormData = "vals=100&vals=200"; |
| 168 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("vals"); |
| 169 | + final List<Long> result = node.getCollectionOfPrimitiveValues(Long.class); |
| 170 | + assertNotNull(result); |
| 171 | + assertEquals(2, result.size()); |
| 172 | + assertEquals(100L, result.get(0)); |
| 173 | + assertEquals(200L, result.get(1)); |
| 174 | + } |
| 175 | + |
| 176 | + @Test |
| 177 | + public void getCollectionOfDoublePrimitiveValuesFromForm() { |
| 178 | + final String testFormData = "vals=1.5&vals=2.5"; |
| 179 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("vals"); |
| 180 | + final List<Double> result = node.getCollectionOfPrimitiveValues(Double.class); |
| 181 | + assertNotNull(result); |
| 182 | + assertEquals(2, result.size()); |
| 183 | + assertEquals(1.5, result.get(0)); |
| 184 | + assertEquals(2.5, result.get(1)); |
| 185 | + } |
| 186 | + |
| 187 | + @Test |
| 188 | + public void getCollectionOfFloatPrimitiveValuesFromForm() { |
| 189 | + final String testFormData = "vals=1.5&vals=2.5"; |
| 190 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("vals"); |
| 191 | + final List<Float> result = node.getCollectionOfPrimitiveValues(Float.class); |
| 192 | + assertNotNull(result); |
| 193 | + assertEquals(2, result.size()); |
| 194 | + assertEquals(1.5f, result.get(0)); |
| 195 | + assertEquals(2.5f, result.get(1)); |
| 196 | + } |
| 197 | + |
| 198 | + @Test |
| 199 | + public void getCollectionOfShortPrimitiveValuesFromForm() { |
| 200 | + final String testFormData = "vals=10&vals=20"; |
| 201 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("vals"); |
| 202 | + final List<Short> result = node.getCollectionOfPrimitiveValues(Short.class); |
| 203 | + assertNotNull(result); |
| 204 | + assertEquals(2, result.size()); |
| 205 | + assertEquals((short) 10, result.get(0)); |
| 206 | + assertEquals((short) 20, result.get(1)); |
| 207 | + } |
| 208 | + |
| 209 | + @Test |
| 210 | + public void getCollectionOfBytePrimitiveValuesFromForm() { |
| 211 | + final String testFormData = "vals=1&vals=2"; |
| 212 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("vals"); |
| 213 | + final List<Byte> result = node.getCollectionOfPrimitiveValues(Byte.class); |
| 214 | + assertNotNull(result); |
| 215 | + assertEquals(2, result.size()); |
| 216 | + assertEquals((byte) 1, result.get(0)); |
| 217 | + assertEquals((byte) 2, result.get(1)); |
| 218 | + } |
| 219 | + |
| 220 | + @Test |
| 221 | + public void getCollectionOfBigDecimalPrimitiveValuesFromForm() { |
| 222 | + final String testFormData = "vals=123.45&vals=678.90"; |
| 223 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("vals"); |
| 224 | + final List<BigDecimal> result = node.getCollectionOfPrimitiveValues(BigDecimal.class); |
| 225 | + assertNotNull(result); |
| 226 | + assertEquals(2, result.size()); |
| 227 | + assertEquals(new BigDecimal("123.45"), result.get(0)); |
| 228 | + assertEquals(new BigDecimal("678.90"), result.get(1)); |
| 229 | + } |
| 230 | + |
| 231 | + @Test |
| 232 | + public void getCollectionOfOffsetDateTimePrimitiveValuesFromForm() { |
| 233 | + final String dt1 = "2024-01-01T00:00:00Z"; |
| 234 | + final String dt2 = "2024-06-15T12:30:00Z"; |
| 235 | + final String testFormData = |
| 236 | + "vals=" |
| 237 | + + URLEncoder.encode(dt1, StandardCharsets.UTF_8) |
| 238 | + + "&vals=" |
| 239 | + + URLEncoder.encode(dt2, StandardCharsets.UTF_8); |
| 240 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("vals"); |
| 241 | + final List<OffsetDateTime> result = |
| 242 | + node.getCollectionOfPrimitiveValues(OffsetDateTime.class); |
| 243 | + assertNotNull(result); |
| 244 | + assertEquals(2, result.size()); |
| 245 | + assertEquals(OffsetDateTime.parse(dt1), result.get(0)); |
| 246 | + assertEquals(OffsetDateTime.parse(dt2), result.get(1)); |
| 247 | + } |
| 248 | + |
| 249 | + @Test |
| 250 | + public void getCollectionOfLocalDatePrimitiveValuesFromForm() { |
| 251 | + final String testFormData = "vals=2024-01-01&vals=2024-06-15"; |
| 252 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("vals"); |
| 253 | + final List<LocalDate> result = node.getCollectionOfPrimitiveValues(LocalDate.class); |
| 254 | + assertNotNull(result); |
| 255 | + assertEquals(2, result.size()); |
| 256 | + assertEquals(LocalDate.parse("2024-01-01"), result.get(0)); |
| 257 | + assertEquals(LocalDate.parse("2024-06-15"), result.get(1)); |
| 258 | + } |
| 259 | + |
| 260 | + @Test |
| 261 | + public void getCollectionOfLocalTimePrimitiveValuesFromForm() { |
| 262 | + final String testFormData = "vals=08:00:00&vals=17:30:00"; |
| 263 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("vals"); |
| 264 | + final List<LocalTime> result = node.getCollectionOfPrimitiveValues(LocalTime.class); |
| 265 | + assertNotNull(result); |
| 266 | + assertEquals(2, result.size()); |
| 267 | + assertEquals(LocalTime.of(8, 0, 0), result.get(0)); |
| 268 | + assertEquals(LocalTime.of(17, 30, 0), result.get(1)); |
| 269 | + } |
| 270 | + |
| 271 | + @Test |
| 272 | + public void getCollectionOfPeriodAndDurationPrimitiveValuesFromForm() { |
| 273 | + final String testFormData = "vals=P1M&vals=PT2H"; |
| 274 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("vals"); |
| 275 | + final List<PeriodAndDuration> result = |
| 276 | + node.getCollectionOfPrimitiveValues(PeriodAndDuration.class); |
| 277 | + assertNotNull(result); |
| 278 | + assertEquals(2, result.size()); |
| 279 | + assertEquals(PeriodAndDuration.parse("P1M"), result.get(0)); |
| 280 | + assertEquals(PeriodAndDuration.parse("PT2H"), result.get(1)); |
| 281 | + } |
| 282 | + |
| 283 | + @Test |
| 284 | + public void getCollectionOfPrimitiveValuesThrowsForUnknownType() { |
| 285 | + final String testFormData = "vals=foo"; |
| 286 | + final ParseNode node = new FormParseNode(testFormData).getChildNode("vals"); |
| 287 | + assertThrows( |
| 288 | + RuntimeException.class, () -> node.getCollectionOfPrimitiveValues(Object.class)); |
| 289 | + } |
138 | 290 | } |
0 commit comments