@Test
void testUnwrap() throws SQLException {

    Assertions.assertSame(dataSource, dataSource.unwrap(DataSource.class));
    Assertions.assertSame(dataSource, dataSource.unwrap(TracingDataSource.class));
    Assertions.assertSame(delegate, dataSource.unwrap(OtherWrapper.class));
    Assertions.assertSame(delegate, dataSource.unwrap(ExtraInterface.class));
    boolean exceptionThrown = false;
    try {
        dataSource.unwrap(Long.class);
    } catch (final SQLException e) {
        exceptionThrown = true;
    }
    Assertions.assertTrue(exceptionThrown);
    verify(delegate, never()).unwrap(DataSource.class);
    verify(delegate, never()).unwrap(TracingDataSource.class);
    verify(delegate).unwrap(OtherWrapper.class);
    verify(delegate).unwrap(ExtraInterface.class);
    verify(delegate).unwrap(Long.class);
}