diff --git a/libsql-jdbc/src/test/java/com/github/magnusp/libsql/jdbc/LibsqlResultSetNavigationTest.java b/libsql-jdbc/src/test/java/com/github/magnusp/libsql/jdbc/LibsqlResultSetNavigationTest.java index aeda4b5..c003068 100644 --- a/libsql-jdbc/src/test/java/com/github/magnusp/libsql/jdbc/LibsqlResultSetNavigationTest.java +++ b/libsql-jdbc/src/test/java/com/github/magnusp/libsql/jdbc/LibsqlResultSetNavigationTest.java @@ -118,6 +118,41 @@ void isLastAlwaysThrowsLikeXerial() throws SQLException { .hasMessage("not supported by sqlite"); } + @Test + void isFirstIsTrueOnlyOnTheFirstRow() throws SQLException { + LibsqlResultSet resultSet = resultSet(TWO_ROWS); + + assertThat(resultSet.isFirst()).isFalse(); + assertThat(resultSet.next()).isTrue(); + assertThat(resultSet.isFirst()).isTrue(); + assertThat(resultSet.next()).isTrue(); + assertThat(resultSet.isFirst()).isFalse(); + assertThat(resultSet.next()).isFalse(); + assertThat(resultSet.isFirst()).isFalse(); + assertThat(resultSet.next()).isFalse(); + assertThat(resultSet.isFirst()).isFalse(); + } + + @Test + void isFirstIsTrueOnTheSingleRowAndFalseAfterTheEnd() throws SQLException { + LibsqlResultSet resultSet = resultSet(DUPLICATE_LABELS); + + assertThat(resultSet.isFirst()).isFalse(); + assertThat(resultSet.next()).isTrue(); + assertThat(resultSet.isFirst()).isTrue(); + assertThat(resultSet.next()).isFalse(); + assertThat(resultSet.isFirst()).isFalse(); + } + + @Test + void isFirstIsFalseForAnEmptyResultSet() throws SQLException { + LibsqlResultSet resultSet = resultSet(NO_ROWS); + + assertThat(resultSet.isFirst()).isFalse(); + assertThat(resultSet.next()).isFalse(); + assertThat(resultSet.isFirst()).isFalse(); + } + @Test void wasNullThrowsBeforeAnyGetterAndAfterTheEndWithoutAGetter() throws SQLException { LibsqlResultSet beforeFirst = resultSet(DUPLICATE_LABELS);