// Path: src/main/java/com/pgasync/Row.java
// public interface Row {
// 
//     String getString(int index);
// 
//     String getString(String column);
// 
//     Byte getByte(int index);
// 
//     Byte getByte(String column);
// 
//     Character getChar(int index);
// 
//     Character getChar(String column);
// 
//     Short getShort(int index);
// 
//     Short getShort(String column);
// 
//     Integer getInt(int index);
// 
//     Integer getInt(String column);
// 
//     Long getLong(int index);
// 
//     Long getLong(String column);
// 
//     BigInteger getBigInteger(int index);
// 
//     BigInteger getBigInteger(String column);
// 
//     BigDecimal getBigDecimal(int index);
// 
//     BigDecimal getBigDecimal(String column);
// 
//     Double getDouble(int index);
// 
//     Double getDouble(String column);
// 
//     Date getDate(int index);
// 
//     Date getDate(String column);
// 
//     Time getTime(int index);
// 
//     Time getTime(String column);
// 
//     Timestamp getTimestamp(int index);
// 
//     Timestamp getTimestamp(String column);
// 
//     byte[] getBytes(int index);
// 
//     byte[] getBytes(String column);
// 
//     Boolean getBoolean(int index);
// 
//     Boolean getBoolean(String column);
// 
//     <T> T get(int index, Class<T> type);
// 
//     <T> T get(String column, Class<T> type);
// 
//     <TArray> TArray getArray(String column, Class<TArray> arrayType);
// 
//     <TArray> TArray getArray(int index, Class<TArray> arrayType);
// 
// }


import com.pgasync.Row;
import org.junit.*;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
    }

    @After
    public void empty() {
        dbr.query("DELETE FROM CA_TEST");
    }

    private Row getRow() {
        return dbr.query("SELECT * FROM CA_TEST").at(0);
    }

    @Test
    public void selectShorts() {
        dbr.query("INSERT INTO CA_TEST (SHORTA) VALUES ('{0, 1, 2, null, 4}')");

        assertArrayEquals(
                new Short[]{0, 1, 2, null, 4},
                getRow().getArray("shorta", Short[].class));
    }

    @Test
    public void selectInts() {
        dbr.query("INSERT INTO CA_TEST (INTA) VALUES ('{0, null, 2, 3}')");

        assertArrayEquals(
                new Integer[]{0, null, 2, 3},
                getRow().getArray("inta", Integer[].class));
    }

    @Test
// Path: src/main/java/com/pgasync/Row.java
// public interface Row {
// 
//     String getString(int index);
// 
//     String getString(String column);
// 
//     Byte getByte(int index);
// 
//     Byte getByte(String column);
// 
//     Character getChar(int index);
// 
//     Character getChar(String column);
// 
//     Short getShort(int index);
// 
//     Short getShort(String column);
// 
//     Integer getInt(int index);
// 
//     Integer getInt(String column);
// 
//     Long getLong(int index);
// 
//     Long getLong(String column);
// 
//     BigInteger getBigInteger(int index);
// 
//     BigInteger getBigInteger(String column);
// 
//     BigDecimal getBigDecimal(int index);
// 
//     BigDecimal getBigDecimal(String column);
// 
//     Double getDouble(int index);
// 
//     Double getDouble(String column);
// 
//     Date getDate(int index);
// 
//     Date getDate(String column);
// 
//     Time getTime(int index);
// 
//     Time getTime(String column);
// 
//     Timestamp getTimestamp(int index);
// 
//     Timestamp getTimestamp(String column);
// 
//     byte[] getBytes(int index);
// 
//     byte[] getBytes(String column);
// 
//     Boolean getBoolean(int index);
// 
//     Boolean getBoolean(String column);
// 
//     <T> T get(int index, Class<T> type);
// 
//     <T> T get(String column, Class<T> type);
// 
//     <TArray> TArray getArray(String column, Class<TArray> arrayType);
// 
//     <TArray> TArray getArray(int index, Class<TArray> arrayType);
// 
// }


// Path: src/test/java/com/github/pgasync/ArrayConversionsTest.java
import com.pgasync.Row;
import org.junit.*;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;

    }

    @After
    public void empty() {
        dbr.query("DELETE FROM CA_TEST");
    }

    private Row getRow() {
        return dbr.query("SELECT * FROM CA_TEST").at(0);
    }

    @Test
    public void selectShorts() {
        dbr.query("INSERT INTO CA_TEST (SHORTA) VALUES ('{0, 1, 2, null, 4}')");

        assertArrayEquals(
                new Short[]{0, 1, 2, null, 4},
                getRow().getArray("shorta", Short[].class));
    }

    @Test
    public void selectInts() {
        dbr.query("INSERT INTO CA_TEST (INTA) VALUES ('{0, null, 2, 3}')");

        assertArrayEquals(
                new Integer[]{0, null, 2, 3},
                getRow().getArray("inta", Integer[].class));
    }

    @Test
    public void selectLongs() {