I agree, I'll make the change unless you plan to do it.

On Mon, Oct 10, 2011 at 5:15 PM, Rainer Döbele <[email protected]> wrote:
>
> Ok looks like a comparision of an int and a long is always false, no matter 
> whether the underlying value is the same or not.
> From a technical point of view this is understandable but not from a logical 
> point of view.
>
> Still, I think the problem here is out test code that uses an int on one side 
> and an object on the other:
>
>        int id = department.getInt(db.DEPARTMENT.ID);
>        ...
>        assertEquals(id, r.getValue(DEP.ID));
>
> Hence we should eighter use int, long or objects on both sides.
>
> Either this:
>
>        Object id = department.getValue(db.DEPARTMENT.ID);
>        ...
>        assertEquals(id, r.getValue(DEP.ID));
>
> or something like this:
>
>        int id = department.getValue(db.DEPARTMENT.ID);
>        ...
>        assertEquals(id, r.getInt(DEP.ID));
>
> (int or long doesn't matter)
>
> Regards
> Rainer
>
>> from: Francis De Brabandere [mailto:[email protected]]
>> to: [email protected]
>> Re: Failure of PreparedStatementTest
>>
>> On Mon, Oct 10, 2011 at 4:51 PM, Rainer Döbele <[email protected]>
>> wrote:
>> > Hi Francis,
>> >
>> > it took me a while to find the cause for this bug.
>> > Obviously it's the following line in the test that is the problem:
>> >            assertEquals(id, r.getValue(DEP.ID)); This assert fails if
>> > id is int and getValue() returns a long.
>> >
>> > Strangely  it does not fail if id is a long and you write:
>> >            assertEquals(id, r.getInt(DEP.ID)); which will also compare
>> > a long with an int, but the other way round.
>> >
>> > In both cases the value is 1 - hence there are effectively equal.
>> > (Is this a bug in JUnit?)
>>
>> Don't think this is a bug. I just think that assertEquals(int, int) has a 
>> specific
>> behavior that assertEquals(Object, Object) does not have. What does java
>> Long#equals(Integer) do?
>>
>> Cheers,
>> Francis
>>
>> >
>> > The reason why this error occurs now, is that previously in HSQLDB all
>> integer columns were declared as BIGINT.
>> > However all other drivers created integer columns as INT.
>> > Now, there is a way to specify the size in the table definition:
>> >
>> >            // DEFAULT (usually 4 bytes = 32bit)
>> >            DEPARTMENT_ID   = addColumn("DEPARTMENT_ID",
>> > DataType.INTEGER,      DEFAULT,  true);
>> >
>> >            // SMALLINT (usually 2 bytes = 16bit)
>> >            DEPARTMENT_ID   = addColumn("DEPARTMENT_ID",
>> > DataType.INTEGER,      SMALLINT,  true);
>> >
>> >            // BIGINT (usually 8 bytes = 64bit)
>> >            DEPARTMENT_ID   = addColumn("DEPARTMENT_ID",
>> > DataType.INTEGER,      BIGINT,  true);
>> >
>> > This is consistent over all drivers.
>> > However the exact interpretation of INT, SMALLINT an BIGINT is left to the
>> database.
>> >
>> > That also solves EMPIREDB-105.
>> >
>> > Regards
>> > Rainer
>> >
>> >> from: [email protected] [mailto:[email protected]]
>> >> to: [email protected]
>> >> re: svn commit: r1180840 - /incubator/empire-db/trunk/empire-
>> >> db/src/test/java/org/apache/empire/db/PreparedStatementTest.java
>> >>
>> >> Author: francisdb
>> >> Date: Mon Oct 10 09:27:18 2011
>> >> New Revision: 1180840
>> >>
>> >> URL: http://svn.apache.org/viewvc?rev=1180840&view=rev
>> >> Log:
>> >> This id field is now int instead of long (is this expected?)
>> >>
>> >> Modified:
>> >>     incubator/empire-db/trunk/empire-
>> >> db/src/test/java/org/apache/empire/db/PreparedStatementTest.java
>> >>
>> >> Modified: incubator/empire-db/trunk/empire-
>> >> db/src/test/java/org/apache/empire/db/PreparedStatementTest.java
>> >> URL: http://svn.apache.org/viewvc/incubator/empire-db/trunk/empire-
>> >>
>> db/src/test/java/org/apache/empire/db/PreparedStatementTest.java?rev=
>> >> 1180840&r1=1180839&r2=1180840&view=diff
>> >>
>> ==========================================================
>> >> ====================
>> >> --- incubator/empire-db/trunk/empire-
>> >> db/src/test/java/org/apache/empire/db/PreparedStatementTest.java
>> >> (original)
>> >> +++ incubator/empire-db/trunk/empire-
>> >> db/src/test/java/org/apache/empire/db/PreparedStatementTest.java
>> Mon
>> >> Oct 10 09:27:18 2011 @@ -54,7 +54,7 @@ public class
>> >> PreparedStatementTest{
>> >>          department.setValue(db.DEPARTMENT.BUSINESS_UNIT, "test");
>> >>          department.update(conn);
>> >>
>> >> -        long id = department.getInt(db.DEPARTMENT.ID);
>> >> +        int id = department.getInt(db.DEPARTMENT.ID);
>> >>          assertTrue("Department add failed", id > 0);
>> >>
>> >>
>> >>
>> >
>> >
>>
>>
>>
>> --
>> http://www.somatik.be
>> Microsoft gives you windows, Linux gives you the whole house.
>



-- 
http://www.somatik.be
Microsoft gives you windows, Linux gives you the whole house.

Reply via email to