Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
java: [ '8', '11', '17']
java: [ '8', '11', '17', '21' ]
architecture: [ 'x64' ]
name: Build with JDK ${{ matrix.java }} on ${{ matrix.architecture }}
steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
java: [ '8', '11', '17' ]
java: [ '8', '11', '17', '21' ]
architecture: [ 'x64' ]
name: Build with JDK ${{ matrix.java }} on ${{ matrix.architecture }}
steps:
Expand Down
10 changes: 8 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ plugins {
ext.ammoniteScalaVersion = '2.13'
ext.ammoniteVersion = '2.5.11'
ext.assertjVersion = '3.26.3'
ext.junitVersion = '4.13.2'
ext.junitVersion = '5.11.0'

// JAVA_VERSION used for CI build matrix, may be provided as env variable
def javaVersion = Integer.parseInt(System.getenv('JAVA_VERSION') ?: '8')
Expand All @@ -57,10 +57,16 @@ repositories {
// -- --

dependencies {
testImplementation "junit:junit:$junitVersion"
testImplementation "org.junit.jupiter:junit-jupiter:$junitVersion"
testImplementation "org.assertj:assertj-core:$assertjVersion"
}

tasks.withType(Test).configureEach {
useJUnitPlatform()

maxHeapSize = '1G'
}

java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(javaVersion))
Expand Down
29 changes: 17 additions & 12 deletions generator/Generator.sc
Original file line number Diff line number Diff line change
Expand Up @@ -2627,7 +2627,7 @@ def generateTestClasses(): Unit = {
genVavrFile("io.vavr", s"APITest", baseDir = TARGET_TEST)((im: ImportManager, packageName, className) => {

val assertThat = im.getStatic("org.assertj.core.api.Assertions.assertThat")
val test = im.getType("org.junit.Test")
val test = im.getType("org.junit.jupiter.api.Test")

val API = im.getType("io.vavr.API")
val AssertionsExtensions = im.getType("io.vavr.AssertionsExtensions")
Expand Down Expand Up @@ -2844,7 +2844,7 @@ def generateTestClasses(): Unit = {

def genShortcutsTests(im: ImportManager, packageName: String, className: String): String = {

val fail = im.getStatic("org.junit.Assert.fail")
val fail = im.getStatic("org.junit.jupiter.api.Assertions.fail")
val captureStdOut = im.getStatic("io.vavr.OutputTester.captureStdOut")

xs"""
Expand Down Expand Up @@ -3090,7 +3090,8 @@ def generateTestClasses(): Unit = {
val functionArgs = (1 to i).gen(j => s"o$j")(", ")
val generics = (1 to i + 1).gen(j => "Object")(", ")

val test = im.getType("org.junit.Test")
val test = im.getType("org.junit.jupiter.api.Test")
val assertThrows = im.getStatic("org.junit.jupiter.api.Assertions.assertThrows")
val assertThat = im.getStatic("org.assertj.core.api.Assertions.assertThat")
val recFuncF1 = if (i == 0) "11;" else s"i1 <= 0 ? i1 : $className.recurrent2.apply(${(1 to i).gen(j => s"i$j" + (j == 1).gen(s" - 1"))(", ")}) + 1;"

Expand Down Expand Up @@ -3315,11 +3316,13 @@ def generateTestClasses(): Unit = {
assertThat(md5.getDigestLength()).isEqualTo(16);
}

@$test(expected = ${im.getType("java.security.NoSuchAlgorithmException")}.class)
@$test
public void shouldThrowCheckedExceptionWhenUnchecked() {
$name$i<MessageDigest> digest = () -> ${im.getType("java.security.MessageDigest")}.getInstance("Unknown");
Function$i<MessageDigest> unchecked = digest.unchecked();
unchecked.apply(); // Look ma, we throw an undeclared checked exception!
$assertThrows(${im.getType("java.security.NoSuchAlgorithmException")}.class, () -> {
$name$i<MessageDigest> digest = () -> ${im.getType("java.security.MessageDigest")}.getInstance("Unknown");
Function$i<MessageDigest> unchecked = digest.unchecked();
unchecked.apply(); // Look ma, we throw an undeclared checked exception!
});
}

@$test
Expand Down Expand Up @@ -3381,10 +3384,12 @@ def generateTestClasses(): Unit = {
assertThat(md5.getDigestLength()).isEqualTo(16);
}

@$test(expected = ${im.getType("java.security.NoSuchAlgorithmException")}.class)
@$test
public void shouldUncheckedThrowIllegalState() {
final Function$i<${(1 to i).gen(j => "String")(", ")}, MessageDigest> unchecked = digest.unchecked();
unchecked.apply(${toArgList("Unknown")}); // Look ma, we throw an undeclared checked exception!
$assertThrows(${im.getType("java.security.NoSuchAlgorithmException")}.class, () -> {
final Function$i<${(1 to i).gen(j => "String")(", ")}, MessageDigest> unchecked = digest.unchecked();
unchecked.apply(${toArgList("Unknown")}); // Look ma, we throw an undeclared checked exception!
});
}

@$test
Expand Down Expand Up @@ -3464,7 +3469,7 @@ def generateTestClasses(): Unit = {
def genAllArity(im: ImportManager,
mapName: String, mapBuilder: String,
builderComparator: Boolean, keyComparator: Boolean): String = {
val test = im.getType("org.junit.Test")
val test = im.getType("org.junit.jupiter.api.Test")
val assertThat = im.getStatic("org.assertj.core.api.Assertions.assertThat")
val naturalComparator = if (builderComparator || keyComparator) im.getStatic(s"io.vavr.collection.Comparators.naturalComparator") else null
val map = im.getType(s"io.vavr.collection.$mapName")
Expand Down Expand Up @@ -3523,7 +3528,7 @@ def generateTestClasses(): Unit = {

genVavrFile("io.vavr", s"Tuple${i}Test", baseDir = TARGET_TEST)((im: ImportManager, packageName, className) => {

val test = im.getType("org.junit.Test")
val test = im.getType("org.junit.jupiter.api.Test")
val seq = im.getType("io.vavr.collection.Seq")
val list = im.getType("io.vavr.collection.List")
val stream = if (i == 0) "" else im.getType("io.vavr.collection.Stream")
Expand Down
4 changes: 2 additions & 2 deletions src-gen/test/java/io/vavr/APITest.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import static io.vavr.OutputTester.captureStdOut;
import static io.vavr.Patterns.*;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.fail;
import static org.junit.jupiter.api.Assertions.fail;

import io.vavr.collection.List;
import io.vavr.collection.Map;
Expand All @@ -47,7 +47,7 @@
import java.util.Arrays;
import java.util.Comparator;
import java.util.concurrent.Executors;
import org.junit.Test;
import org.junit.jupiter.api.Test;

@SuppressWarnings("deprecation")
public class APITest {
Expand Down
13 changes: 8 additions & 5 deletions src-gen/test/java/io/vavr/CheckedFunction0Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@
\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;

import io.vavr.control.Try;
import java.lang.CharSequence;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
import org.junit.jupiter.api.Test;

public class CheckedFunction0Test {

Expand Down Expand Up @@ -158,11 +159,13 @@ public void shouldUncheckedWork() {
assertThat(md5.getDigestLength()).isEqualTo(16);
}

@Test(expected = NoSuchAlgorithmException.class)
@Test
public void shouldThrowCheckedExceptionWhenUnchecked() {
CheckedFunction0<MessageDigest> digest = () -> MessageDigest.getInstance("Unknown");
Function0<MessageDigest> unchecked = digest.unchecked();
unchecked.apply(); // Look ma, we throw an undeclared checked exception!
assertThrows(NoSuchAlgorithmException.class, () -> {
CheckedFunction0<MessageDigest> digest = () -> MessageDigest.getInstance("Unknown");
Function0<MessageDigest> unchecked = digest.unchecked();
unchecked.apply(); // Look ma, we throw an undeclared checked exception!
});
}

@Test
Expand Down
11 changes: 7 additions & 4 deletions src-gen/test/java/io/vavr/CheckedFunction1Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@
\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;

import io.vavr.control.Try;
import java.lang.CharSequence;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
import org.junit.jupiter.api.Test;

public class CheckedFunction1Test {

Expand Down Expand Up @@ -168,10 +169,12 @@ public void shouldUncheckedWork() {
assertThat(md5.getDigestLength()).isEqualTo(16);
}

@Test(expected = NoSuchAlgorithmException.class)
@Test
public void shouldUncheckedThrowIllegalState() {
final Function1<String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("Unknown"); // Look ma, we throw an undeclared checked exception!
assertThrows(NoSuchAlgorithmException.class, () -> {
final Function1<String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("Unknown"); // Look ma, we throw an undeclared checked exception!
});
}

@Test
Expand Down
11 changes: 7 additions & 4 deletions src-gen/test/java/io/vavr/CheckedFunction2Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@
\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;

import io.vavr.control.Try;
import java.lang.CharSequence;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
import org.junit.jupiter.api.Test;

public class CheckedFunction2Test {

Expand Down Expand Up @@ -167,10 +168,12 @@ public void shouldUncheckedWork() {
assertThat(md5.getDigestLength()).isEqualTo(16);
}

@Test(expected = NoSuchAlgorithmException.class)
@Test
public void shouldUncheckedThrowIllegalState() {
final Function2<String, String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("U", "nknown"); // Look ma, we throw an undeclared checked exception!
assertThrows(NoSuchAlgorithmException.class, () -> {
final Function2<String, String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("U", "nknown"); // Look ma, we throw an undeclared checked exception!
});
}

@Test
Expand Down
11 changes: 7 additions & 4 deletions src-gen/test/java/io/vavr/CheckedFunction3Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@
\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;

import io.vavr.control.Try;
import java.lang.CharSequence;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
import org.junit.jupiter.api.Test;

public class CheckedFunction3Test {

Expand Down Expand Up @@ -168,10 +169,12 @@ public void shouldUncheckedWork() {
assertThat(md5.getDigestLength()).isEqualTo(16);
}

@Test(expected = NoSuchAlgorithmException.class)
@Test
public void shouldUncheckedThrowIllegalState() {
final Function3<String, String, String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("U", "n", "known"); // Look ma, we throw an undeclared checked exception!
assertThrows(NoSuchAlgorithmException.class, () -> {
final Function3<String, String, String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("U", "n", "known"); // Look ma, we throw an undeclared checked exception!
});
}

@Test
Expand Down
11 changes: 7 additions & 4 deletions src-gen/test/java/io/vavr/CheckedFunction4Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@
\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;

import io.vavr.control.Try;
import java.lang.CharSequence;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
import org.junit.jupiter.api.Test;

public class CheckedFunction4Test {

Expand Down Expand Up @@ -169,10 +170,12 @@ public void shouldUncheckedWork() {
assertThat(md5.getDigestLength()).isEqualTo(16);
}

@Test(expected = NoSuchAlgorithmException.class)
@Test
public void shouldUncheckedThrowIllegalState() {
final Function4<String, String, String, String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("U", "n", "k", "nown"); // Look ma, we throw an undeclared checked exception!
assertThrows(NoSuchAlgorithmException.class, () -> {
final Function4<String, String, String, String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("U", "n", "k", "nown"); // Look ma, we throw an undeclared checked exception!
});
}

@Test
Expand Down
11 changes: 7 additions & 4 deletions src-gen/test/java/io/vavr/CheckedFunction5Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@
\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;

import io.vavr.control.Try;
import java.lang.CharSequence;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
import org.junit.jupiter.api.Test;

public class CheckedFunction5Test {

Expand Down Expand Up @@ -170,10 +171,12 @@ public void shouldUncheckedWork() {
assertThat(md5.getDigestLength()).isEqualTo(16);
}

@Test(expected = NoSuchAlgorithmException.class)
@Test
public void shouldUncheckedThrowIllegalState() {
final Function5<String, String, String, String, String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("U", "n", "k", "n", "own"); // Look ma, we throw an undeclared checked exception!
assertThrows(NoSuchAlgorithmException.class, () -> {
final Function5<String, String, String, String, String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("U", "n", "k", "n", "own"); // Look ma, we throw an undeclared checked exception!
});
}

@Test
Expand Down
11 changes: 7 additions & 4 deletions src-gen/test/java/io/vavr/CheckedFunction6Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@
\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;

import io.vavr.control.Try;
import java.lang.CharSequence;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
import org.junit.jupiter.api.Test;

public class CheckedFunction6Test {

Expand Down Expand Up @@ -171,10 +172,12 @@ public void shouldUncheckedWork() {
assertThat(md5.getDigestLength()).isEqualTo(16);
}

@Test(expected = NoSuchAlgorithmException.class)
@Test
public void shouldUncheckedThrowIllegalState() {
final Function6<String, String, String, String, String, String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("U", "n", "k", "n", "o", "wn"); // Look ma, we throw an undeclared checked exception!
assertThrows(NoSuchAlgorithmException.class, () -> {
final Function6<String, String, String, String, String, String, MessageDigest> unchecked = digest.unchecked();
unchecked.apply("U", "n", "k", "n", "o", "wn"); // Look ma, we throw an undeclared checked exception!
});
}

@Test
Expand Down
Loading