Code review comment: This is probably a bit tricky. I faced an issue that time is always considered as `TIME(0)` even after `CAST(TIME'11:22:33.123' AS TIME(3))` it will be casted to `TIME(0)`. So, probably first need to solve this issue with `TIME`

Code under review:
private Stream<TestSetSpec> ceilTestCases() {
        return Stream.of(
                TestSetSpec.forFunction(BuiltInFunctionDefinitions.FLOOR)
                        .onFieldsWithData(
                                LocalTime.of(11, 22, 33),
                                LocalDate.of(1990, 10, 14),
                                LocalDateTime.of(2020, 2, 29, 1, 56, 59, 987654321))
                        .andDataTypes(TIME(), DATE(), TIMESTAMP())
                        .testResult(
                                $("f0").ceil(TimeIntervalUnit.MILLISECOND),
                                "CEIL(f0 TO MILLISECOND)",
                                LocalTime.of(11, 22, 33),
                                TIME().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.MILLISECOND),
                                "CEIL(f1 TO MILLISECOND)",
                                LocalDate.of(1990, 10, 14),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.MILLISECOND),
                                "CEIL(f2 TO MILLISECOND)",
                                LocalDateTime.of(2020, 2, 29, 1, 56, 59, 987_000_000),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f0").ceil(TimeIntervalUnit.SECOND),
                                "CEIL(f0 TO SECOND)",
                                LocalTime.of(11, 22, 33),
                                TIME().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.SECOND),
                                "CEIL(f1 TO SECOND)",
                                LocalDate.of(1990, 10, 14),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.SECOND),
                                "CEIL(f2 TO SECOND)",
                                LocalDateTime.of(2020, 2, 29, 1, 57),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f0").ceil(TimeIntervalUnit.MINUTE),
                                "CEIL(f0 TO MINUTE)",
                                LocalTime.of(11, 23),
                                TIME().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.MINUTE),
                                "CEIL(f1 TO MINUTE)",
                                LocalDate.of(1990, 10, 14),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.MINUTE),
                                "CEIL(f2 TO MINUTE)",
                                LocalDateTime.of(2020, 2, 29, 1, 57),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f0").ceil(TimeIntervalUnit.HOUR),
                                "CEIL(f0 TO HOUR)",
                                LocalTime.of(12, 0),
                                TIME().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.HOUR),
                                "CEIL(f1 TO HOUR)",
                                LocalDate.of(1990, 10, 14),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.HOUR),
                                "CEIL(f2 TO HOUR)",
                                LocalDateTime.of(2020, 2, 29, 2, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.DAY),
                                "CEIL(f1 TO DAY)",
                                LocalDate.of(1990, 10, 15),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.DAY),
                                "CEIL(f2 TO DAY)",
                                LocalDateTime.of(2020, 3, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.WEEK),
                                "CEIL(f1 TO WEEK)",
                                LocalDate.of(1990, 10, 14),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.WEEK),
                                "CEIL(f2 TO WEEK)",
                                LocalDateTime.of(2020, 3, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.MONTH),
                                "CEIL(f1 TO MONTH)",
                                LocalDate.of(1990, 11, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.MONTH),
                                "CEIL(f2 TO MONTH)",
                                LocalDateTime.of(2020, 3, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.QUARTER),
                                "CEIL(f1 TO QUARTER)",
                                LocalDate.of(1991, 1, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.QUARTER),
                                "CEIL(f2 TO QUARTER)",
                                LocalDateTime.of(2020, 4, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.YEAR),
                                "CEIL(f1 TO YEAR)",
                                LocalDate.of(1991, 1, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.YEAR),
                                "CEIL(f2 TO YEAR)",
                                LocalDateTime.of(2021, 1, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.DECADE),
                                "CEIL(f1 TO DECADE)",
                                LocalDate.of(2000, 1, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.DECADE),
                                "CEIL(f2 TO DECADE)",
                                LocalDateTime.of(2030, 1, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.CENTURY),
                                "CEIL(f1 TO CENTURY)",
                                LocalDate.of(2001, 1, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.CENTURY),
                                "CEIL(f2 TO CENTURY)",
                                LocalDateTime.of(2101, 1, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.MILLENNIUM),
                                "CEIL(f1 TO MILLENNIUM)",
                                LocalDate.of(2001, 1, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.MILLENNIUM),
                                "CEIL(f2 TO MILLENNIUM)",
                                LocalDateTime.of(3001, 1, 1, 0, 0),
                                TIMESTAMP().nullable()));
    }

Line commented on: LocalDateTime.of(2020, 2, 29, 1, 56, 59, 987654321))

Revised code:
private Stream<TestSetSpec> ceilTestCases() {
        return Stream.of(
                TestSetSpec.forFunction(BuiltInFunctionDefinitions.FLOOR)
                        .onFieldsWithData(
                                
                                
                                LocalTime.of(11, 22, 33),
                                LocalDate.of(1990, 10, 14),
                                LocalDateTime.of(2020, 2, 29, 1, 56, 59, 987654321))
                        .andDataTypes(TIME(), DATE(), TIMESTAMP())
                        .testResult(
                                $("f0").ceil(TimeIntervalUnit.MILLISECOND),
                                "CEIL(f0 TO MILLISECOND)",
                                LocalTime.of(11, 22, 33),
                                TIME().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.MILLISECOND),
                                "CEIL(f1 TO MILLISECOND)",
                                LocalDate.of(1990, 10, 14),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.MILLISECOND),
                                "CEIL(f2 TO MILLISECOND)",
                                LocalDateTime.of(2020, 2, 29, 1, 56, 59, 988_000_000),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f0").ceil(TimeIntervalUnit.SECOND),
                                "CEIL(f0 TO SECOND)",
                                LocalTime.of(11, 22, 33),
                                TIME().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.SECOND),
                                "CEIL(f1 TO SECOND)",
                                LocalDate.of(1990, 10, 14),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.SECOND),
                                "CEIL(f2 TO SECOND)",
                                LocalDateTime.of(2020, 2, 29, 1, 57),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f0").ceil(TimeIntervalUnit.MINUTE),
                                "CEIL(f0 TO MINUTE)",
                                LocalTime.of(11, 23),
                                TIME().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.MINUTE),
                                "CEIL(f1 TO MINUTE)",
                                LocalDate.of(1990, 10, 14),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.MINUTE),
                                "CEIL(f2 TO MINUTE)",
                                LocalDateTime.of(2020, 2, 29, 1, 57),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f0").ceil(TimeIntervalUnit.HOUR),
                                "CEIL(f0 TO HOUR)",
                                LocalTime.of(12, 0),
                                TIME().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.HOUR),
                                "CEIL(f1 TO HOUR)",
                                LocalDate.of(1990, 10, 14),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.HOUR),
                                "CEIL(f2 TO HOUR)",
                                LocalDateTime.of(2020, 2, 29, 2, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.DAY),
                                "CEIL(f1 TO DAY)",
                                LocalDate.of(1990, 10, 15),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.DAY),
                                "CEIL(f2 TO DAY)",
                                LocalDateTime.of(2020, 3, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.WEEK),
                                "CEIL(f1 TO WEEK)",
                                LocalDate.of(1990, 10, 14),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.WEEK),
                                "CEIL(f2 TO WEEK)",
                                LocalDateTime.of(2020, 3, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.MONTH),
                                "CEIL(f1 TO MONTH)",
                                LocalDate.of(1990, 11, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.MONTH),
                                "CEIL(f2 TO MONTH)",
                                LocalDateTime.of(2020, 3, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.QUARTER),
                                "CEIL(f1 TO QUARTER)",
                                LocalDate.of(1991, 1, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.QUARTER),
                                "CEIL(f2 TO QUARTER)",
                                LocalDateTime.of(2020, 4, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.YEAR),
                                "CEIL(f1 TO YEAR)",
                                LocalDate.of(1991, 1, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.YEAR),
                                "CEIL(f2 TO YEAR)",
                                LocalDateTime.of(2021, 1, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.DECADE),
                                "CEIL(f1 TO DECADE)",
                                LocalDate.of(2000, 1, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.DECADE),
                                "CEIL(f2 TO DECADE)",
                                LocalDateTime.of(2030, 1, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.CENTURY),
                                "CEIL(f1 TO CENTURY)",
                                LocalDate.of(2001, 1, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.CENTURY),
                                "CEIL(f2 TO CENTURY)",
                                LocalDateTime.of(2101, 1, 1, 0, 0),
                                TIMESTAMP().nullable())
                        .testResult(
                                $("f1").ceil(TimeIntervalUnit.MILLENNIUM),
                                "CEIL(f1 TO MILLENNIUM)",
                                LocalDate.of(2001, 1, 1),
                                DATE().nullable())
                        .testResult(
                                $("f2").ceil(TimeIntervalUnit.MILLENNIUM),
                                "CEIL(f2 TO MILLENNIUM)",
                                LocalDateTime.of(3001, 1, 1, 0, 0),
                                TIMESTAMP().nullable()));
    }