// Path: src/main/java/com/pgasync/Connectible.java
// public interface Connectible extends QueryExecutor {
// 
//     CompletableFuture<Connection> getConnection();
// 
//     CompletableFuture<Void> close();
// }
// 
// Path: src/main/java/com/pgasync/ResultSet.java
// public interface ResultSet extends Iterable<Row> {
// 
//     Map<String, PgColumn> getColumnsByName();
// 
//     List<PgColumn> getOrderedColumns();
// 
//     /**
//      * @param index Row index starting from 0
//      * @return Row, never null
//      */
//     Row at(int index);
// 
//     /**
//      * @return Amount of result rows.
//      */
//     int size();
// 
//     /**
//      * @return Amount of modified rows.
//      */
//     int affectedRows();
// 
// }
// 
// Path: src/main/java/com/pgasync/SqlException.java
// public class SqlException extends RuntimeException {
// 
//     private static final long serialVersionUID = 1L;
//     private static final int MAX_CAUSE_DEPTH = 100;
// 
//     final String code;
// 
//     public SqlException(String level, String code, String message) {
//         super(level + ": SQLSTATE=" + code + ", MESSAGE=" + message);
//         this.code = code;
//     }
// 
//     public SqlException(String message) {
//         super(message);
//         this.code = null;
//     }
// 
//     public SqlException(Throwable cause) {
//         super(cause);
//         this.code = null;
//     }
// 
//     public String getCode() {
//         return code;
//     }
// 
//     @FunctionalInterface
//     public interface CheckedRunnable {
// 
//         void run() throws Exception;
//     }
// 
//     public static boolean ifCause(Throwable th, Consumer<SqlException> action, CheckedRunnable others) throws Exception {
//         int depth = 1;
//         while (depth++ < MAX_CAUSE_DEPTH && th != null && !(th instanceof SqlException)) {
//             th = th.getCause();
//         }
//         if (th instanceof SqlException) {
//             action.accept((SqlException) th);
//             return true;
//         } else {
//             others.run();
//             return false;
//         }
//     }
// }
// 
// Path: src/test/java/com/github/pgasync/DatabaseRule.java
// static NettyConnectibleBuilder createPoolBuilder(int size) {
//     String db = getenv("PG_DATABASE");
//     String user = getenv("PG_USERNAME");
//     String pass = getenv("PG_PASSWORD");
// 
//     if (db == null && user == null && pass == null) {
//         return new EmbeddedConnectionPoolBuilder().maxConnections(size);
//     } else {
//         return new EmbeddedConnectionPoolBuilder()
//                 .database(envOrDefault("PG_DATABASE", "postgres"))
//                 .username(envOrDefault("PG_USERNAME", "postgres"))
//                 .password(envOrDefault("PG_PASSWORD", "postgres"))
//                 .ssl(true)
//                 .maxConnections(size);
//     }
// }


import com.pgasync.Connectible;
import com.pgasync.ResultSet;
import com.pgasync.SqlException;
import org.junit.ClassRule;
import org.junit.Test;
import static com.github.pgasync.DatabaseRule.createPoolBuilder;
import static org.junit.Assert.assertEquals;
package com.github.pgasync;



public class AuthenticationTest {

    @ClassRule
// Path: src/main/java/com/pgasync/Connectible.java
// public interface Connectible extends QueryExecutor {
// 
//     CompletableFuture<Connection> getConnection();
// 
//     CompletableFuture<Void> close();
// }
// 
// Path: src/main/java/com/pgasync/ResultSet.java
// public interface ResultSet extends Iterable<Row> {
// 
//     Map<String, PgColumn> getColumnsByName();
// 
//     List<PgColumn> getOrderedColumns();
// 
//     /**
//      * @param index Row index starting from 0
//      * @return Row, never null
//      */
//     Row at(int index);
// 
//     /**
//      * @return Amount of result rows.
//      */
//     int size();
// 
//     /**
//      * @return Amount of modified rows.
//      */
//     int affectedRows();
// 
// }
// 
// Path: src/main/java/com/pgasync/SqlException.java
// public class SqlException extends RuntimeException {
// 
//     private static final long serialVersionUID = 1L;
//     private static final int MAX_CAUSE_DEPTH = 100;
// 
//     final String code;
// 
//     public SqlException(String level, String code, String message) {
//         super(level + ": SQLSTATE=" + code + ", MESSAGE=" + message);
//         this.code = code;
//     }
// 
//     public SqlException(String message) {
//         super(message);
//         this.code = null;
//     }
// 
//     public SqlException(Throwable cause) {
//         super(cause);
//         this.code = null;
//     }
// 
//     public String getCode() {
//         return code;
//     }
// 
//     @FunctionalInterface
//     public interface CheckedRunnable {
// 
//         void run() throws Exception;
//     }
// 
//     public static boolean ifCause(Throwable th, Consumer<SqlException> action, CheckedRunnable others) throws Exception {
//         int depth = 1;
//         while (depth++ < MAX_CAUSE_DEPTH && th != null && !(th instanceof SqlException)) {
//             th = th.getCause();
//         }
//         if (th instanceof SqlException) {
//             action.accept((SqlException) th);
//             return true;
//         } else {
//             others.run();
//             return false;
//         }
//     }
// }
// 
// Path: src/test/java/com/github/pgasync/DatabaseRule.java
// static NettyConnectibleBuilder createPoolBuilder(int size) {
//     String db = getenv("PG_DATABASE");
//     String user = getenv("PG_USERNAME");
//     String pass = getenv("PG_PASSWORD");
// 
//     if (db == null && user == null && pass == null) {
//         return new EmbeddedConnectionPoolBuilder().maxConnections(size);
//     } else {
//         return new EmbeddedConnectionPoolBuilder()
//                 .database(envOrDefault("PG_DATABASE", "postgres"))
//                 .username(envOrDefault("PG_USERNAME", "postgres"))
//                 .password(envOrDefault("PG_PASSWORD", "postgres"))
//                 .ssl(true)
//                 .maxConnections(size);
//     }
// }


// Path: src/test/java/com/github/pgasync/AuthenticationTest.java
import com.pgasync.Connectible;
import com.pgasync.ResultSet;
import com.pgasync.SqlException;
import org.junit.ClassRule;
import org.junit.Test;
import static com.github.pgasync.DatabaseRule.createPoolBuilder;
import static org.junit.Assert.assertEquals;

package com.github.pgasync;



public class AuthenticationTest {

    @ClassRule
    public static DatabaseRule dbr = new DatabaseRule(createPoolBuilder(1));