// Path: src/test/java/com/github/mjdbc/test/asset/sql/DbValueSql.java
// public interface DbValueSql {
// 
//     @Sql("SELECT integer_field FROM custom_types")
//     Integer getNullableInt();
// 
//     @Sql("UPDATE custom_types SET integer_field = :value")
//     void setNullableDbInt(@Bind("value") @Nullable DbInt value);
// 
// 
//     @Sql("SELECT long_field FROM custom_types")
//     Long getNullableLong();
// 
//     @Sql("UPDATE custom_types SET long_field = :value")
//     void setNullableDbLong(@Bind("value") @Nullable DbLong value);
// 
// 
//     @Sql("SELECT varchar_field FROM custom_types")
//     String getNullableString();
// 
//     @Sql("UPDATE custom_types SET varchar_field = :value")
//     void setNullableDbString(@Bind("value") @Nullable DbString value);
// 
// 
//     @Sql("SELECT timestamp_field FROM custom_types")
//     Timestamp getNullableTimestamp();
// 
//     @Sql("UPDATE custom_types SET timestamp_field = :value")
//     void setNullableDbTimestamp(@Bind("value") @Nullable DbTimestamp value);
// }
// 
// Path: src/test/java/com/github/mjdbc/test/asset/types/DbIntValue.java
// public class DbIntValue extends AbstractDbInt {
//     protected int value;
// 
//     public DbIntValue(int value) {
//         this.value = value;
//     }
// 
//     public final int getDbValue() {
//         return value;
//     }
// 
//     public String toString() {
//         return getClass().getSimpleName() + "[" + value + "]";
//     }
// }
// 
// Path: src/test/java/com/github/mjdbc/test/asset/types/DbLongValue.java
// public class DbLongValue extends AbstractDbLong {
//     protected long value;
// 
//     public DbLongValue(int value) {
//         this.value = value;
//     }
// 
//     public final long getDbValue() {
//         return value;
//     }
// 
//     public String toString() {
//         return getClass().getSimpleName() + "[" + value + "]";
//     }
// }


import com.github.mjdbc.test.asset.sql.DbValueSql;
import com.github.mjdbc.test.asset.types.DbIntValue;
import com.github.mjdbc.test.asset.types.DbLongValue;
import java.sql.Timestamp;
import org.junit.Before;
import org.junit.Test;
package com.github.mjdbc.test;


/**
 * Tests for DbValue (Int,Long..) support.
 */
public class DbValuesSqlTest extends DbTest {
    private DbValueSql sql;

    public DbValuesSqlTest() {
        super("types");
    }

    @Before
    public void setUp() {
        super.setUp();
        sql = db.attachSql(DbValueSql.class);
    }

    @Test
    public void checkDbIntValueSql() {
        sql.setNullableDbInt(null);
        Integer v1 = sql.getNullableInt();
        assertNull(v1);

// Path: src/test/java/com/github/mjdbc/test/asset/sql/DbValueSql.java
// public interface DbValueSql {
// 
//     @Sql("SELECT integer_field FROM custom_types")
//     Integer getNullableInt();
// 
//     @Sql("UPDATE custom_types SET integer_field = :value")
//     void setNullableDbInt(@Bind("value") @Nullable DbInt value);
// 
// 
//     @Sql("SELECT long_field FROM custom_types")
//     Long getNullableLong();
// 
//     @Sql("UPDATE custom_types SET long_field = :value")
//     void setNullableDbLong(@Bind("value") @Nullable DbLong value);
// 
// 
//     @Sql("SELECT varchar_field FROM custom_types")
//     String getNullableString();
// 
//     @Sql("UPDATE custom_types SET varchar_field = :value")
//     void setNullableDbString(@Bind("value") @Nullable DbString value);
// 
// 
//     @Sql("SELECT timestamp_field FROM custom_types")
//     Timestamp getNullableTimestamp();
// 
//     @Sql("UPDATE custom_types SET timestamp_field = :value")
//     void setNullableDbTimestamp(@Bind("value") @Nullable DbTimestamp value);
// }
// 
// Path: src/test/java/com/github/mjdbc/test/asset/types/DbIntValue.java
// public class DbIntValue extends AbstractDbInt {
//     protected int value;
// 
//     public DbIntValue(int value) {
//         this.value = value;
//     }
// 
//     public final int getDbValue() {
//         return value;
//     }
// 
//     public String toString() {
//         return getClass().getSimpleName() + "[" + value + "]";
//     }
// }
// 
// Path: src/test/java/com/github/mjdbc/test/asset/types/DbLongValue.java
// public class DbLongValue extends AbstractDbLong {
//     protected long value;
// 
//     public DbLongValue(int value) {
//         this.value = value;
//     }
// 
//     public final long getDbValue() {
//         return value;
//     }
// 
//     public String toString() {
//         return getClass().getSimpleName() + "[" + value + "]";
//     }
// }


// Path: src/test/java/com/github/mjdbc/test/DbValuesSqlTest.java
import com.github.mjdbc.test.asset.sql.DbValueSql;
import com.github.mjdbc.test.asset.types.DbIntValue;
import com.github.mjdbc.test.asset.types.DbLongValue;
import java.sql.Timestamp;
import org.junit.Before;
import org.junit.Test;

package com.github.mjdbc.test;


/**
 * Tests for DbValue (Int,Long..) support.
 */
public class DbValuesSqlTest extends DbTest {
    private DbValueSql sql;

    public DbValuesSqlTest() {
        super("types");
    }

    @Before
    public void setUp() {
        super.setUp();
        sql = db.attachSql(DbValueSql.class);
    }

    @Test
    public void checkDbIntValueSql() {
        sql.setNullableDbInt(null);
        Integer v1 = sql.getNullableInt();
        assertNull(v1);

        sql.setNullableDbInt(new DbIntValue(1));