Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4506611

Browse files
authored
fix(values): Add support for multiple iterations over values of List Value (#1716)
1 parent b432eb0 commit 4506611

2 files changed

Lines changed: 28 additions & 10 deletions

File tree

driver/src/main/java/org/neo4j/driver/internal/value/ListValue.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -112,17 +112,19 @@ public Value get(int index) {
112112

113113
@Override
114114
public <T> Iterable<T> values(final Function<Value, T> mapFunction) {
115-
var iterator = values.iterator();
116-
return () -> new Iterator<>() {
117-
@Override
118-
public boolean hasNext() {
119-
return iterator.hasNext();
120-
}
115+
return () -> {
116+
var iterator = values.iterator();
117+
return new Iterator<>() {
118+
@Override
119+
public boolean hasNext() {
120+
return iterator.hasNext();
121+
}
121122

122-
@Override
123-
public T next() {
124-
return mapFunction.apply(iterator.next());
125-
}
123+
@Override
124+
public T next() {
125+
return mapFunction.apply(iterator.next());
126+
}
127+
};
126128
};
127129
}
128130

driver/src/test/java/org/neo4j/driver/internal/value/ListValueTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import static org.hamcrest.MatcherAssert.assertThat;
2121
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
2222
import static org.junit.jupiter.api.Assertions.assertEquals;
23+
import static org.junit.jupiter.api.Assertions.assertFalse;
24+
import static org.junit.jupiter.api.Assertions.assertTrue;
2325
import static org.neo4j.driver.Values.value;
2426

2527
import java.time.LocalDateTime;
@@ -157,6 +159,20 @@ void shouldMapMatrixValuesToArrays() {
157159
assertArrayEquals(array, values.as(long[][].class));
158160
}
159161

162+
@Test
163+
void shouldSupportMultipleIterations() {
164+
var list = Values.value("a", "b");
165+
var values = list.values();
166+
for (var i = 0; i < 2; i++) {
167+
var iterator = values.iterator();
168+
assertTrue(iterator.hasNext());
169+
assertEquals("a", iterator.next().asString());
170+
assertTrue(iterator.hasNext());
171+
assertEquals("b", iterator.next().asString());
172+
assertFalse(iterator.hasNext());
173+
}
174+
}
175+
160176
private ListValue listValue(Value... values) {
161177
return new ListValue(Arrays.asList(values));
162178
}

0 commit comments

Comments
 (0)