< prev index next >
test/jdk/java/util/Optional/BasicDouble.java
Print this page
rev 49492 : 8195649: reorganize tests for java.util.Optional
Reviewed-by: XXX
*** 1,7 ****
/*
! * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 20,208 ****
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/* @test
* @summary Basic functional test of OptionalDouble
* @author Mike Duigou
* @run testng BasicDouble
*/
import java.util.NoSuchElementException;
import java.util.OptionalDouble;
import java.util.concurrent.atomic.AtomicBoolean;
- import java.util.stream.DoubleStream;
import static org.testng.Assert.*;
import org.testng.annotations.Test;
-
public class BasicDouble {
! @Test(groups = "unit")
! public void testEmpty() {
! OptionalDouble empty = OptionalDouble.empty();
! OptionalDouble present = OptionalDouble.of(1.0);
!
! // empty
! assertTrue(empty.equals(empty));
assertTrue(empty.equals(OptionalDouble.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.0, empty.orElse(2.0));
! assertEquals(2.0, empty.orElseGet(()-> 2.0));
}
@Test(groups = "unit")
! public void testIfPresentAndOrElseAndNull() {
! OptionalDouble empty = OptionalDouble.empty();
! OptionalDouble present = OptionalDouble.of(1.0);
!
! // 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() {
! OptionalDouble empty = OptionalDouble.empty();
!
! double got = empty.getAsDouble();
! }
!
! @Test(expectedExceptions=NullPointerException.class)
! public void testEmptyOrElseGetNull() {
! OptionalDouble empty = OptionalDouble.empty();
!
! double got = empty.orElseGet(null);
! }
!
! @Test(expectedExceptions=NullPointerException.class)
! public void testEmptyOrElseThrowNull() throws Throwable {
! OptionalDouble empty = OptionalDouble.empty();
!
! double got = empty.orElseThrow(null);
! }
!
! @Test(expectedExceptions=ObscureException.class)
! public void testEmptyOrElseThrow() throws Exception {
! OptionalDouble empty = OptionalDouble.empty();
!
! double got = empty.orElseThrow(ObscureException::new);
! }
!
! @Test(expectedExceptions=NoSuchElementException.class)
! public void testEmptyOrElseThrowNoArg() throws Exception {
! OptionalDouble empty = OptionalDouble.empty();
!
! double got = empty.orElseThrow();
}
@Test(groups = "unit")
public void testPresent() {
! OptionalDouble empty = OptionalDouble.empty();
! OptionalDouble present = OptionalDouble.of(1.0);
!
! // present
! assertTrue(present.equals(present));
! assertFalse(present.equals(OptionalDouble.of(0.0)));
! assertTrue(present.equals(OptionalDouble.of(1.0)));
! assertTrue(!present.equals(empty));
! assertTrue(Double.hashCode(1.0) == present.hashCode());
! assertFalse(present.toString().isEmpty());
! assertTrue(-1 != present.toString().indexOf(Double.toString(present.getAsDouble()).toString()));
! assertTrue(-1 != present.toString().indexOf(Double.toString(present.orElseThrow()).toString()));
! assertEquals(1.0, present.getAsDouble());
! assertEquals(1.0, present.orElseThrow());
!
! 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.0, present.orElse(2.0));
! assertEquals(1.0, present.orElseGet(null));
! assertEquals(1.0, present.orElseGet(()-> 2.0));
! assertEquals(1.0, present.orElseGet(()-> 3.0));
! assertEquals(1.0, present.<RuntimeException>orElseThrow(null));
! assertEquals(1.0, present.<RuntimeException>orElseThrow(ObscureException::new));
}
@Test(groups = "unit")
! public void testStream() {
! {
! DoubleStream s = OptionalDouble.empty().stream();
! assertFalse(s.isParallel());
!
! double[] es = s.toArray();
! assertEquals(es.length, 0);
! }
!
! {
! DoubleStream s = OptionalDouble.of(42.0).stream();
! assertFalse(s.isParallel());
!
! double[] es = s.toArray();
! assertEquals(es.length, 1);
! assertEquals(es[0], 42.0);
! }
}
! private static class ObscureException extends RuntimeException {
!
}
}
--- 20,129 ----
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/* @test
+ * @bug 8195649
* @summary Basic functional test of OptionalDouble
* @author Mike Duigou
+ * @build ObscureException
* @run testng BasicDouble
*/
import java.util.NoSuchElementException;
import java.util.OptionalDouble;
import java.util.concurrent.atomic.AtomicBoolean;
import static org.testng.Assert.*;
import org.testng.annotations.Test;
public class BasicDouble {
+ static final double DOUBLEVAL = Math.PI;
+ static final double UNEXPECTED = 6.62607004E-34;
! /**
! * Checks a block of assertions over an empty OptionalDouble.
! */
! void checkEmpty(OptionalDouble empty) {
assertTrue(empty.equals(OptionalDouble.empty()));
! assertTrue(OptionalDouble.empty().equals(empty));
! assertFalse(empty.equals(OptionalDouble.of(UNEXPECTED)));
! assertFalse(OptionalDouble.of(UNEXPECTED).equals(empty));
! assertFalse(empty.equals("unexpected"));
!
! assertFalse(empty.isPresent());
! assertEquals(empty.hashCode(), 0);
! assertEquals(empty.orElse(UNEXPECTED), UNEXPECTED);
! assertEquals(empty.orElseGet(() -> UNEXPECTED), UNEXPECTED);
!
! assertThrows(NoSuchElementException.class, () -> empty.getAsDouble());
! assertThrows(NoSuchElementException.class, () -> empty.orElseThrow());
! assertThrows(ObscureException.class, () -> empty.orElseThrow(ObscureException::new));
!
! var b = new AtomicBoolean();
! empty.ifPresent(s -> b.set(true));
! assertFalse(b.get());
!
! var b1 = new AtomicBoolean(false);
! var b2 = new AtomicBoolean(false);
! empty.ifPresentOrElse(s -> b1.set(true), () -> b2.set(true));
! assertFalse(b1.get());
! assertTrue(b2.get());
!
! assertEquals(empty.toString(), "OptionalDouble.empty");
! }
!
! /**
! * Checks a block of assertions over an OptionalDouble that is expected to
! * have a particular value present.
! */
! void checkPresent(OptionalDouble opt, double expected) {
! assertFalse(opt.equals(OptionalDouble.empty()));
! assertFalse(OptionalDouble.empty().equals(opt));
! assertTrue(opt.equals(OptionalDouble.of(expected)));
! assertTrue(OptionalDouble.of(expected).equals(opt));
! assertFalse(opt.equals(OptionalDouble.of(UNEXPECTED)));
! assertFalse(OptionalDouble.of(UNEXPECTED).equals(opt));
! assertFalse(opt.equals("unexpected"));
!
! assertTrue(opt.isPresent());
! assertEquals(opt.hashCode(), Double.hashCode(expected));
! assertEquals(opt.orElse(UNEXPECTED), expected);
! assertEquals(opt.orElseGet(() -> UNEXPECTED), expected);
!
! assertEquals(opt.getAsDouble(), expected);
! assertEquals(opt.orElseThrow(), expected);
! assertEquals(opt.orElseThrow(ObscureException::new), expected);
!
! var b = new AtomicBoolean(false);
! opt.ifPresent(s -> b.set(true));
! assertTrue(b.get());
!
! var b1 = new AtomicBoolean(false);
! var b2 = new AtomicBoolean(false);
! opt.ifPresentOrElse(s -> b1.set(true), () -> b2.set(true));
! assertTrue(b1.get());
! assertFalse(b2.get());
! assertEquals(opt.toString(), "OptionalDouble[" + expected + "]");
}
@Test(groups = "unit")
! public void testEmpty() {
! checkEmpty(OptionalDouble.empty());
}
@Test(groups = "unit")
public void testPresent() {
! checkPresent(OptionalDouble.of(DOUBLEVAL), DOUBLEVAL);
}
@Test(groups = "unit")
! public void testStreamEmpty() {
! assertEquals(OptionalDouble.empty().stream().toArray(), new double[] { });
}
! @Test(groups = "unit")
! public void testStreamPresent() {
! assertEquals(OptionalDouble.of(DOUBLEVAL).stream().toArray(), new double[] { DOUBLEVAL });
}
}
< prev index next >