diff --git a/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/Tuples.swift b/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/Tuples.swift index d92ad184..728d7ce0 100644 --- a/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/Tuples.swift +++ b/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/Tuples.swift @@ -28,6 +28,10 @@ public func echoTriple(triple: (Bool, Double, Int64)) -> (Bool, Double, Int64) { triple } +public func echoOptionalTriple(triple: (Int64?, String?, Alignment?)) -> (Int64?, String?, Alignment?) { + triple +} + public func makeBigTuple() -> ( Bool, Int8, Int16, UInt16, Int32, Int64, Float, Double, diff --git a/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/TupleTest.java b/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/TupleTest.java index cc89e124..3eb36209 100644 --- a/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/TupleTest.java +++ b/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/TupleTest.java @@ -22,6 +22,9 @@ import static org.junit.jupiter.api.Assertions.*; +import java.util.Optional; +import java.util.OptionalLong; + public class TupleTest { @Test void returnPair() { @@ -62,6 +65,32 @@ void echoTriple() { assertEquals(100L, result.$2); } + @Test + void echoOptionalTriple() { + try (var arena = SwiftArena.ofConfined()) { + Tuple3, Optional> input = new Tuple3<>( + OptionalLong.of(100L), + Optional.of("hello"), + Optional.of(Alignment.horizontal(arena)) + ); + Tuple3, Optional> result = MySwiftLibrary.echoOptionalTriple(input, arena); + assertEquals(input.$0, result.$0); + assertEquals(input.$1, result.$1); + assertEquals(input.$2.map(Alignment::getDiscriminator), result.$2.map(Alignment::getDiscriminator)); + } + try (var arena = SwiftArena.ofConfined()) { + Tuple3, Optional> input = new Tuple3<>( + OptionalLong.empty(), + Optional.empty(), + Optional.empty() + ); + Tuple3, Optional> result = MySwiftLibrary.echoOptionalTriple(input, arena); + assertEquals(input.$0, result.$0); + assertEquals(input.$1, result.$1); + assertEquals(input.$2.map(Alignment::getDiscriminator), result.$2.map(Alignment::getDiscriminator)); + } + } + @Test void makeBigTuple() { Tuple16