diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9869a86..384227f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,17 +17,17 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: ['8', '11'] + java: ['8', '11','17'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up JDK ${{ matrix.java }} - uses: actions/setup-java@v2 + uses: actions/setup-java@v4 with: java-version: ${{ matrix.java }} - distribution: 'adopt' + distribution: 'temurin' - name: Build with Maven run: mvn --batch-mode --update-snapshots verify - - uses: codecov/codecov-action@v1 + - uses: codecov/codecov-action@v4 with: file: ./**/target/site/jacoco/jacoco.xml name: codecov @@ -41,7 +41,7 @@ jobs: steps: - name: Dependabot metadata id: metadata - uses: dependabot/fetch-metadata@v1.1.1 + uses: dependabot/fetch-metadata@v2.1.0 with: github-token: "${{ secrets.GITHUB_TOKEN }}" - name: Enable auto-merge for Dependabot PRs diff --git a/kool/src/main/java/org/davidmoten/kool/Stream.java b/kool/src/main/java/org/davidmoten/kool/Stream.java index 4906b13..07d42db 100644 --- a/kool/src/main/java/org/davidmoten/kool/Stream.java +++ b/kool/src/main/java/org/davidmoten/kool/Stream.java @@ -635,6 +635,10 @@ default Stream filter(Predicate function) { default Single exists(Predicate function) { return filter(function).isEmpty().map(x -> !x); } + + default Single noneMatch(Predicate function) { + return filter(function).isEmpty(); + } default void forEach() { count().get(); diff --git a/kool/src/test/java/org/davidmoten/kool/StreamTest.java b/kool/src/test/java/org/davidmoten/kool/StreamTest.java index 4114e01..8e2c484 100644 --- a/kool/src/test/java/org/davidmoten/kool/StreamTest.java +++ b/kool/src/test/java/org/davidmoten/kool/StreamTest.java @@ -2014,6 +2014,16 @@ public void testExists() { public void testExistsReturnsFalse() { assertFalse(Stream.of(1, 2, 3).exists(x -> x == 4).get()); } + + @Test + public void testNoneMatch() { + assertTrue(Stream.of(1, 2, 3).noneMatch(x -> x == 4).get()); + } + + @Test + public void testNoneMatchReturnsFalse() { + assertFalse(Stream.of(1, 2, 3).noneMatch(x -> x == 1).get()); + } @SuppressWarnings("unchecked") @Test