### Question:
SimonDataSource extends AbstractSimonDataSource implements DataSource { @Override public Connection getConnection() throws SQLException { return new SimonConnection(datasource().getConnection(), getPrefix(), sqlNormalizerFactory); }  @Override Connection getConnection(); @Override Connection getConnection(String user, String password); @Override T unwrap(Class<T> iface); @Override boolean isWrapperFor(Class<?> iface); @Override Logger getParentLogger();  }### Answer:
@Test public void testSimple() throws SQLException { SimonDataSource simonDataSource = new SimonDataSource(); simonDataSource.setUrl("jdbc:h2:mem:SimonDataSourceTest"); simonDataSource.setRealDataSourceClassName(JdbcDataSource.class.getName()); simonDataSource.setUser("sa"); Connection connection = simonDataSource.getConnection(); assertEquals(connection.getMetaData().getDatabaseProductName(), "H2"); assertEquals(connection.getMetaData().getUserName(), "SA"); }
@Test public void testFromUrl() throws SQLException { SimonDataSource simonDataSource = new SimonDataSource(); simonDataSource.setUrl("jdbc:simon:h2:mem:SimonDataSourceTest"); simonDataSource.setUser("sa"); Connection connection = simonDataSource.getConnection(); assertEquals(connection.getMetaData().getDatabaseProductName(), "H2"); assertEquals(connection.getMetaData().getUserName(), "SA"); }