35 36 import static org.testng.Assert.*; 37 import org.testng.annotations.Test; 38 39 public class BasicInt { 40 41 static final int INTVAL = 33_550_336; 42 static final int UNEXPECTED = 0xCAFEBABE; 43 44 /** 45 * Checks a block of assertions over an empty OptionalInt. 46 */ 47 void checkEmpty(OptionalInt empty) { 48 assertTrue(empty.equals(OptionalInt.empty())); 49 assertTrue(OptionalInt.empty().equals(empty)); 50 assertFalse(empty.equals(OptionalInt.of(UNEXPECTED))); 51 assertFalse(OptionalInt.of(UNEXPECTED).equals(empty)); 52 assertFalse(empty.equals("unexpected")); 53 54 assertFalse(empty.isPresent()); 55 assertEquals(empty.hashCode(), 0); 56 assertEquals(empty.orElse(UNEXPECTED), UNEXPECTED); 57 assertEquals(empty.orElseGet(() -> UNEXPECTED), UNEXPECTED); 58 59 assertThrows(NoSuchElementException.class, () -> empty.getAsInt()); 60 assertThrows(NoSuchElementException.class, () -> empty.orElseThrow()); 61 assertThrows(ObscureException.class, () -> empty.orElseThrow(ObscureException::new)); 62 63 var b = new AtomicBoolean(); 64 empty.ifPresent(s -> b.set(true)); 65 assertFalse(b.get()); 66 67 var b1 = new AtomicBoolean(false); 68 var b2 = new AtomicBoolean(false); 69 empty.ifPresentOrElse(s -> b1.set(true), () -> b2.set(true)); 70 assertFalse(b1.get()); 71 assertTrue(b2.get()); 72 73 assertEquals(empty.toString(), "OptionalInt.empty"); 74 } 75 76 /** 77 * Checks a block of assertions over an OptionalInt that is expected to 78 * have a particular value present. 79 */ 80 void checkPresent(OptionalInt opt, int expected) { 81 assertFalse(opt.equals(OptionalInt.empty())); 82 assertFalse(OptionalInt.empty().equals(opt)); 83 assertTrue(opt.equals(OptionalInt.of(expected))); 84 assertTrue(OptionalInt.of(expected).equals(opt)); 85 assertFalse(opt.equals(OptionalInt.of(UNEXPECTED))); 86 assertFalse(OptionalInt.of(UNEXPECTED).equals(opt)); 87 assertFalse(opt.equals("unexpected")); 88 89 assertTrue(opt.isPresent()); 90 assertEquals(opt.hashCode(), Integer.hashCode(expected)); 91 assertEquals(opt.orElse(UNEXPECTED), expected); 92 assertEquals(opt.orElseGet(() -> UNEXPECTED), expected); 93 94 assertEquals(opt.getAsInt(), expected); 95 assertEquals(opt.orElseThrow(), expected); 96 assertEquals(opt.orElseThrow(ObscureException::new), expected); 97 98 var b = new AtomicBoolean(false); 99 opt.ifPresent(s -> b.set(true)); 100 assertTrue(b.get()); 101 102 var b1 = new AtomicBoolean(false); 103 var b2 = new AtomicBoolean(false); 104 opt.ifPresentOrElse(s -> b1.set(true), () -> b2.set(true)); 105 assertTrue(b1.get()); 106 assertFalse(b2.get()); 107 108 assertEquals(opt.toString(), "OptionalInt[" + expected + "]"); 109 } | 35 36 import static org.testng.Assert.*; 37 import org.testng.annotations.Test; 38 39 public class BasicInt { 40 41 static final int INTVAL = 33_550_336; 42 static final int UNEXPECTED = 0xCAFEBABE; 43 44 /** 45 * Checks a block of assertions over an empty OptionalInt. 46 */ 47 void checkEmpty(OptionalInt empty) { 48 assertTrue(empty.equals(OptionalInt.empty())); 49 assertTrue(OptionalInt.empty().equals(empty)); 50 assertFalse(empty.equals(OptionalInt.of(UNEXPECTED))); 51 assertFalse(OptionalInt.of(UNEXPECTED).equals(empty)); 52 assertFalse(empty.equals("unexpected")); 53 54 assertFalse(empty.isPresent()); 55 assertTrue(empty.isEmpty()); 56 assertEquals(empty.hashCode(), 0); 57 assertEquals(empty.orElse(UNEXPECTED), UNEXPECTED); 58 assertEquals(empty.orElseGet(() -> UNEXPECTED), UNEXPECTED); 59 60 assertThrows(NoSuchElementException.class, () -> empty.getAsInt()); 61 assertThrows(NoSuchElementException.class, () -> empty.orElseThrow()); 62 assertThrows(ObscureException.class, () -> empty.orElseThrow(ObscureException::new)); 63 64 var b = new AtomicBoolean(); 65 empty.ifPresent(s -> b.set(true)); 66 assertFalse(b.get()); 67 68 var b1 = new AtomicBoolean(false); 69 var b2 = new AtomicBoolean(false); 70 empty.ifPresentOrElse(s -> b1.set(true), () -> b2.set(true)); 71 assertFalse(b1.get()); 72 assertTrue(b2.get()); 73 74 assertEquals(empty.toString(), "OptionalInt.empty"); 75 } 76 77 /** 78 * Checks a block of assertions over an OptionalInt that is expected to 79 * have a particular value present. 80 */ 81 void checkPresent(OptionalInt opt, int expected) { 82 assertFalse(opt.equals(OptionalInt.empty())); 83 assertFalse(OptionalInt.empty().equals(opt)); 84 assertTrue(opt.equals(OptionalInt.of(expected))); 85 assertTrue(OptionalInt.of(expected).equals(opt)); 86 assertFalse(opt.equals(OptionalInt.of(UNEXPECTED))); 87 assertFalse(OptionalInt.of(UNEXPECTED).equals(opt)); 88 assertFalse(opt.equals("unexpected")); 89 90 assertTrue(opt.isPresent()); 91 assertFalse(opt.isEmpty()); 92 assertEquals(opt.hashCode(), Integer.hashCode(expected)); 93 assertEquals(opt.orElse(UNEXPECTED), expected); 94 assertEquals(opt.orElseGet(() -> UNEXPECTED), expected); 95 96 assertEquals(opt.getAsInt(), expected); 97 assertEquals(opt.orElseThrow(), expected); 98 assertEquals(opt.orElseThrow(ObscureException::new), expected); 99 100 var b = new AtomicBoolean(false); 101 opt.ifPresent(s -> b.set(true)); 102 assertTrue(b.get()); 103 104 var b1 = new AtomicBoolean(false); 105 var b2 = new AtomicBoolean(false); 106 opt.ifPresentOrElse(s -> b1.set(true), () -> b2.set(true)); 107 assertTrue(b1.get()); 108 assertFalse(b2.get()); 109 110 assertEquals(opt.toString(), "OptionalInt[" + expected + "]"); 111 } |