RFR 8169808 Stream returning methods should specify if they are late binding (original) (raw)
Martin Buchholz martinrb at google.com
Wed Nov 23 00:24:05 UTC 2016
- Previous message: RFR 8169808 Stream returning methods should specify if they are late binding
- Next message: RFR 8169808 Stream returning methods should specify if they are late binding
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Nov 21, 2016 at 1:06 PM, Paul Sandoz <paul.sandoz at oracle.com> wrote:
See the SpliteratorLateBindingFailFastTest. That could be refactored out as it’s conflating two concepts and is too collection/map focused.
Here's my own attempt, for the pending jsr166 integration:
--- src/test/tck/Collection8Test.java 22 Nov 2016 01:08:14 -0000 1.29 +++ src/test/tck/Collection8Test.java 23 Nov 2016 00:20:43 -0000 @@ -606,6 +606,39 @@ assertNull(future.get(0L, MILLISECONDS)); }
- /**
* Spliterators are either IMMUTABLE or truly late-binding or, if
* concurrent, use the same "late-binding style" of returning
* elements added between creation and first use.
*/
- public void testLateBinding() throws Throwable {
if (!testImplementationDetails) return;
// Immutable (snapshot) spliterators are exempt
if (impl.emptyCollection().spliterator()
.hasCharacteristics(Spliterator.IMMUTABLE))
return;
final Object one = impl.makeElement(1);
{
final Collection c = impl.emptyCollection();
final Spliterator split = c.spliterator();
c.add(one);
assertTrue(split.tryAdvance(e -> { assertSame(e, one); }));
assertFalse(split.tryAdvance(e -> { throw new
AssertionError(); }));
assertTrue(c.contains(one));
}
{
final AtomicLong count = new AtomicLong(0);
final Collection c = impl.emptyCollection();
final Spliterator split = c.spliterator();
c.add(one);
split.forEachRemaining(
e -> { assertSame(e, one); count.getAndIncrement(); });
assertEquals(1L, count.get());
assertFalse(split.tryAdvance(e -> { throw new
AssertionError(); }));
assertTrue(c.contains(one));
}
- }
- Previous message: RFR 8169808 Stream returning methods should specify if they are late binding
- Next message: RFR 8169808 Stream returning methods should specify if they are late binding
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]