|
11 | 11 | import org.junit.jupiter.api.Test; |
12 | 12 |
|
13 | 13 | import java.util.Iterator; |
| 14 | +import java.util.List; |
14 | 15 |
|
15 | 16 | import static io.lettuce.TestTags.UNIT_TEST; |
16 | 17 | import static org.assertj.core.api.Assertions.assertThat; |
@@ -214,4 +215,68 @@ void asAnythingElse() { |
214 | 215 | assertThat(underTest.asNumber()).isNull(); |
215 | 216 | } |
216 | 217 |
|
| 218 | + @Test |
| 219 | + void asListWithNestedObjects() { |
| 220 | + ObjectMapper objectMapper = new ObjectMapper(); |
| 221 | + DefaultJsonParser parser = new DefaultJsonParser(objectMapper); |
| 222 | + |
| 223 | + // Create an array containing nested objects |
| 224 | + DelegateJsonArray underTest = new DelegateJsonArray(objectMapper); |
| 225 | + underTest.add(parser.createJsonValue("{\"name\": \"Alice\", \"age\": 30}")); |
| 226 | + underTest.add(parser.createJsonValue("{\"name\": \"Bob\", \"age\": 25}")); |
| 227 | + |
| 228 | + // Test that asList() returns proper DelegateJsonObject instances for nested objects |
| 229 | + List<JsonValue> list = underTest.asList(); |
| 230 | + assertThat(list).hasSize(2); |
| 231 | + |
| 232 | + // Verify that elements from asList() behave consistently with get() |
| 233 | + for (int i = 0; i < list.size(); i++) { |
| 234 | + JsonValue listElement = list.get(i); |
| 235 | + JsonValue getElement = underTest.get(i); |
| 236 | + |
| 237 | + // Both should be DelegateJsonObject instances |
| 238 | + assertThat(listElement.isJsonObject()).isTrue(); |
| 239 | + assertThat(getElement.isJsonObject()).isTrue(); |
| 240 | + |
| 241 | + // Both should have the same behavior |
| 242 | + assertThat(listElement.asJsonObject()).isNotNull(); |
| 243 | + assertThat(getElement.asJsonObject()).isNotNull(); |
| 244 | + |
| 245 | + // Both should return the same string representation |
| 246 | + assertThat(listElement.toString()).isEqualTo(getElement.toString()); |
| 247 | + } |
| 248 | + } |
| 249 | + |
| 250 | + @Test |
| 251 | + void asListWithNestedArrays() { |
| 252 | + ObjectMapper objectMapper = new ObjectMapper(); |
| 253 | + DefaultJsonParser parser = new DefaultJsonParser(objectMapper); |
| 254 | + |
| 255 | + // Create an array containing nested arrays |
| 256 | + DelegateJsonArray underTest = new DelegateJsonArray(objectMapper); |
| 257 | + underTest.add(parser.createJsonValue("[1, 2, 3]")); |
| 258 | + underTest.add(parser.createJsonValue("[\"a\", \"b\", \"c\"]")); |
| 259 | + |
| 260 | + // Test that asList() returns proper DelegateJsonArray instances for nested arrays |
| 261 | + List<JsonValue> list = underTest.asList(); |
| 262 | + assertThat(list).hasSize(2); |
| 263 | + |
| 264 | + // Verify that elements from asList() behave consistently with get() |
| 265 | + for (int i = 0; i < list.size(); i++) { |
| 266 | + JsonValue listElement = list.get(i); |
| 267 | + JsonValue getElement = underTest.get(i); |
| 268 | + |
| 269 | + // Both should be DelegateJsonArray instances |
| 270 | + assertThat(listElement.isJsonArray()).isTrue(); |
| 271 | + assertThat(getElement.isJsonArray()).isTrue(); |
| 272 | + |
| 273 | + // Both should have the same behavior |
| 274 | + assertThat(listElement.asJsonArray()).isNotNull(); |
| 275 | + assertThat(getElement.asJsonArray()).isNotNull(); |
| 276 | + |
| 277 | + // Both should return the same string representation |
| 278 | + assertThat(listElement.toString()).isEqualTo(getElement.toString()); |
| 279 | + } |
| 280 | + } |
| 281 | + |
217 | 282 | } |
0 commit comments