< prev index next >

test/java/util/Optional/BasicLong.java

Print this page
rev 11381 : 8071670: java.util.Optional: please add a way to specify if-else behavior
Reviewed-by: dfuchs

*** 27,36 **** --- 27,37 ---- * @run testng BasicLong */ import java.util.NoSuchElementException; import java.util.OptionalLong; + import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.LongStream; import static org.testng.Assert.*; import org.testng.annotations.Test;
*** 47,61 **** --- 48,103 ---- assertTrue(empty.equals(OptionalLong.empty())); assertTrue(!empty.equals(present)); assertTrue(0 == empty.hashCode()); assertTrue(!empty.toString().isEmpty()); assertTrue(!empty.isPresent()); + empty.ifPresent(v -> { fail(); }); + + AtomicBoolean emptyCheck = new AtomicBoolean(); + empty.ifPresentOrElse(v -> fail(), () -> emptyCheck.set(true)); + assertTrue(emptyCheck.get()); + + try { + empty.ifPresentOrElse(v -> fail(), () -> { throw new ObscureException(); }); + fail(); + } catch (ObscureException expected) { + } catch (AssertionError e) { + throw e; + } catch (Throwable t) { + fail(); + } + assertEquals(2, empty.orElse(2)); assertEquals(2, empty.orElseGet(()-> 2)); } + @Test(groups = "unit") + public void testIfPresentAndOrElseAndNull() { + OptionalLong empty = OptionalLong.empty(); + OptionalLong present = OptionalLong.of(1); + + // No NPE + present.ifPresentOrElse(v -> {}, null); + empty.ifPresent(null); + empty.ifPresentOrElse(null, () -> {}); + + // NPE + try { + present.ifPresent(null); + fail(); + } catch (NullPointerException ex) {} + try { + present.ifPresentOrElse(null, () -> {}); + fail(); + } catch (NullPointerException ex) {} + try { + empty.ifPresentOrElse(v -> {}, null); + fail(); + } catch (NullPointerException ex) {} + } + @Test(expectedExceptions=NoSuchElementException.class) public void testEmptyGet() { OptionalLong empty = OptionalLong.empty(); long got = empty.getAsLong();
*** 94,109 **** assertFalse(present.equals(empty)); assertTrue(Long.hashCode(1) == present.hashCode()); assertFalse(present.toString().isEmpty()); assertTrue(-1 != present.toString().indexOf(Long.toString(present.getAsLong()).toString())); assertEquals(1L, present.getAsLong()); try { present.ifPresent(v -> { throw new ObscureException(); }); fail(); ! } catch(ObscureException expected) { ! } assertEquals(1, present.orElse(2)); assertEquals(1, present.orElseGet(null)); assertEquals(1, present.orElseGet(()-> 2)); assertEquals(1, present.orElseGet(()-> 3)); assertEquals(1, present.<RuntimeException>orElseThrow(null)); --- 136,174 ---- assertFalse(present.equals(empty)); assertTrue(Long.hashCode(1) == present.hashCode()); assertFalse(present.toString().isEmpty()); assertTrue(-1 != present.toString().indexOf(Long.toString(present.getAsLong()).toString())); assertEquals(1L, present.getAsLong()); + + AtomicBoolean presentCheck = new AtomicBoolean(); + present.ifPresent(v -> presentCheck.set(true)); + assertTrue(presentCheck.get()); + presentCheck.set(false); + present.ifPresentOrElse(v -> presentCheck.set(true), () -> fail()); + assertTrue(presentCheck.get()); + try { present.ifPresent(v -> { throw new ObscureException(); }); fail(); ! } catch (ObscureException expected) { ! } catch (AssertionError e) { ! throw e; ! } catch (Throwable t) { ! fail(); } + try { + present.ifPresentOrElse(v -> { + throw new ObscureException(); + }, () -> fail()); + fail(); + } catch (ObscureException expected) { + } catch (AssertionError e) { + throw e; + } catch (Throwable t) { + fail(); + } + assertEquals(1, present.orElse(2)); assertEquals(1, present.orElseGet(null)); assertEquals(1, present.orElseGet(()-> 2)); assertEquals(1, present.orElseGet(()-> 3)); assertEquals(1, present.<RuntimeException>orElseThrow(null));
< prev index next >