Unit tests for all supported field types (including null versions).
This commit is contained in:
@@ -0,0 +1,194 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// Depot library - a Java relational persistence library
|
||||
// Copyright (C) 2006-2010 Michael Bayne and Pär Winzell
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it
|
||||
// under the terms of the GNU Lesser General Public License as published
|
||||
// by the Free Software Foundation; either version 2.1 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
package com.samskivert.depot.tests;
|
||||
|
||||
import java.sql.Date;
|
||||
import java.sql.Time;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.samskivert.depot.Key;
|
||||
import com.samskivert.depot.PersistentRecord;
|
||||
import com.samskivert.depot.expression.ColumnExp;
|
||||
import com.samskivert.depot.annotation.Column;
|
||||
import com.samskivert.depot.annotation.Id;
|
||||
|
||||
/**
|
||||
* Tests all of the supported Depot field types.
|
||||
*/
|
||||
public class AllTypesRecord extends PersistentRecord
|
||||
{
|
||||
// AUTO-GENERATED: FIELDS START
|
||||
public static final Class<AllTypesRecord> _R = AllTypesRecord.class;
|
||||
public static final ColumnExp RECORD_ID = colexp(_R, "recordId");
|
||||
public static final ColumnExp BOOLEAN_VALUE = colexp(_R, "booleanValue");
|
||||
public static final ColumnExp BYTE_VALUE = colexp(_R, "byteValue");
|
||||
public static final ColumnExp SHORT_VALUE = colexp(_R, "shortValue");
|
||||
public static final ColumnExp INT_VALUE = colexp(_R, "intValue");
|
||||
public static final ColumnExp LONG_VALUE = colexp(_R, "longValue");
|
||||
public static final ColumnExp FLOAT_VALUE = colexp(_R, "floatValue");
|
||||
public static final ColumnExp DOUBLE_VALUE = colexp(_R, "doubleValue");
|
||||
public static final ColumnExp BOXED_BYTE = colexp(_R, "boxedByte");
|
||||
public static final ColumnExp BOXED_SHORT = colexp(_R, "boxedShort");
|
||||
public static final ColumnExp BOXED_INT = colexp(_R, "boxedInt");
|
||||
public static final ColumnExp BOXED_LONG = colexp(_R, "boxedLong");
|
||||
public static final ColumnExp BOXED_FLOAT = colexp(_R, "boxedFloat");
|
||||
public static final ColumnExp BOXED_DOUBLE = colexp(_R, "boxedDouble");
|
||||
public static final ColumnExp BYTE_ARRAY = colexp(_R, "byteArray");
|
||||
public static final ColumnExp INT_ARRAY = colexp(_R, "intArray");
|
||||
public static final ColumnExp STRING = colexp(_R, "string");
|
||||
public static final ColumnExp DATE = colexp(_R, "date");
|
||||
public static final ColumnExp TIME = colexp(_R, "time");
|
||||
public static final ColumnExp TIMESTAMP = colexp(_R, "timestamp");
|
||||
public static final ColumnExp NULL_BOXED_BYTE = colexp(_R, "nullBoxedByte");
|
||||
public static final ColumnExp NULL_BOXED_SHORT = colexp(_R, "nullBoxedShort");
|
||||
public static final ColumnExp NULL_BOXED_INT = colexp(_R, "nullBoxedInt");
|
||||
public static final ColumnExp NULL_BOXED_LONG = colexp(_R, "nullBoxedLong");
|
||||
public static final ColumnExp NULL_BOXED_FLOAT = colexp(_R, "nullBoxedFloat");
|
||||
public static final ColumnExp NULL_BOXED_DOUBLE = colexp(_R, "nullBoxedDouble");
|
||||
public static final ColumnExp NULL_BYTE_ARRAY = colexp(_R, "nullByteArray");
|
||||
public static final ColumnExp NULL_INT_ARRAY = colexp(_R, "nullIntArray");
|
||||
public static final ColumnExp NULL_STRING = colexp(_R, "nullString");
|
||||
public static final ColumnExp NULL_DATE = colexp(_R, "nullDate");
|
||||
public static final ColumnExp NULL_TIME = colexp(_R, "nullTime");
|
||||
public static final ColumnExp NULL_TIMESTAMP = colexp(_R, "nullTimestamp");
|
||||
// AUTO-GENERATED: FIELDS END
|
||||
|
||||
public static final int SCHEMA_VERSION = 1;
|
||||
|
||||
@Id public int recordId;
|
||||
|
||||
public boolean booleanValue;
|
||||
public byte byteValue;
|
||||
public short shortValue;
|
||||
public int intValue;
|
||||
public long longValue;
|
||||
public float floatValue;
|
||||
public double doubleValue;
|
||||
|
||||
public Byte boxedByte;
|
||||
public Short boxedShort;
|
||||
public Integer boxedInt;
|
||||
public Long boxedLong;
|
||||
public Float boxedFloat;
|
||||
public Double boxedDouble;
|
||||
public byte[] byteArray;
|
||||
public int[] intArray;
|
||||
|
||||
public String string;
|
||||
|
||||
public Date date;
|
||||
public Time time;
|
||||
public Timestamp timestamp;
|
||||
// public Blob blob; // tested by byte[]
|
||||
// public Clob clob; // not clear how to test this
|
||||
|
||||
@Column(nullable=true) public Byte nullBoxedByte;
|
||||
@Column(nullable=true) public Short nullBoxedShort;
|
||||
@Column(nullable=true) public Integer nullBoxedInt;
|
||||
@Column(nullable=true) public Long nullBoxedLong;
|
||||
@Column(nullable=true) public Float nullBoxedFloat;
|
||||
@Column(nullable=true) public Double nullBoxedDouble;
|
||||
@Column(nullable=true) public byte[] nullByteArray;
|
||||
@Column(nullable=true) public int[] nullIntArray;
|
||||
@Column(nullable=true) public String nullString;
|
||||
@Column(nullable=true) public Date nullDate;
|
||||
@Column(nullable=true) public Time nullTime;
|
||||
@Column(nullable=true) public Timestamp nullTimestamp;
|
||||
|
||||
@Override public boolean equals (Object other) {
|
||||
if (!(other instanceof AllTypesRecord)) {
|
||||
return false;
|
||||
}
|
||||
AllTypesRecord orec = (AllTypesRecord)other;
|
||||
return (booleanValue == orec.booleanValue) &&
|
||||
(byteValue == orec.byteValue) &&
|
||||
(shortValue == orec.shortValue) &&
|
||||
(intValue == orec.intValue) &&
|
||||
(longValue == orec.longValue) &&
|
||||
(floatValue == orec.floatValue) &&
|
||||
(doubleValue == orec.doubleValue) &&
|
||||
boxedByte.equals(orec.boxedByte) &&
|
||||
boxedShort.equals(orec.boxedShort) &&
|
||||
boxedInt.equals(orec.boxedInt) &&
|
||||
boxedLong.equals(orec.boxedLong) &&
|
||||
boxedFloat.equals(orec.boxedFloat) &&
|
||||
boxedDouble.equals(orec.boxedDouble) &&
|
||||
Arrays.equals(byteArray, orec.byteArray) &&
|
||||
Arrays.equals(intArray, orec.intArray) &&
|
||||
string.equals(orec.string) &&
|
||||
date.equals(orec.date) &&
|
||||
time.equals(orec.time) &&
|
||||
timestamp.equals(orec.timestamp) &&
|
||||
(nullBoxedByte == orec.nullBoxedByte) &&
|
||||
(nullBoxedShort == orec.nullBoxedShort) &&
|
||||
(nullBoxedInt == orec.nullBoxedInt) &&
|
||||
(nullBoxedLong == orec.nullBoxedLong) &&
|
||||
(nullBoxedFloat == orec.nullBoxedFloat) &&
|
||||
(nullBoxedDouble == orec.nullBoxedDouble) &&
|
||||
(nullByteArray == orec.nullByteArray) &&
|
||||
(nullIntArray == orec.nullIntArray) &&
|
||||
(nullString == orec.nullString) &&
|
||||
(nullDate == orec.nullDate) &&
|
||||
(nullTime == orec.nullTime) &&
|
||||
(nullTimestamp == orec.nullTimestamp);
|
||||
}
|
||||
|
||||
public static AllTypesRecord createRecord (int recordId)
|
||||
{
|
||||
AllTypesRecord rec = new AllTypesRecord();
|
||||
rec.recordId = recordId;
|
||||
rec.booleanValue = true;
|
||||
rec.byteValue = 1;
|
||||
rec.shortValue = 2;
|
||||
rec.intValue = 3;
|
||||
rec.longValue = 4;
|
||||
rec.floatValue = 5.5f;
|
||||
rec.doubleValue = 6.6;
|
||||
rec.boxedByte = 7;
|
||||
rec.boxedShort = 8;
|
||||
rec.boxedInt = 9;
|
||||
rec.boxedLong = 10l;
|
||||
rec.boxedFloat = 11.11f;
|
||||
rec.boxedDouble = 12.12;
|
||||
rec.byteArray = new byte[] { 13, 14 };
|
||||
rec.intArray = new int[] { 15, 16 };
|
||||
rec.string = "seventeen";
|
||||
rec.date = Date.valueOf("2010-01-18");
|
||||
rec.time = Time.valueOf("19:19:19");
|
||||
rec.timestamp = new Timestamp(System.currentTimeMillis()+20);
|
||||
return rec;
|
||||
}
|
||||
|
||||
// AUTO-GENERATED: METHODS START
|
||||
/**
|
||||
* Create and return a primary {@link Key} to identify a {@link AllTypesRecord}
|
||||
* with the supplied key values.
|
||||
*/
|
||||
public static Key<AllTypesRecord> getKey (int recordId)
|
||||
{
|
||||
return newKey(_R, recordId);
|
||||
}
|
||||
|
||||
/** Register the key fields in an order matching the getKey() factory. */
|
||||
static { registerKeyFields(RECORD_ID); }
|
||||
// AUTO-GENERATED: METHODS END
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// Depot library - a Java relational persistence library
|
||||
// Copyright (C) 2006-2010 Michael Bayne and Pär Winzell
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it
|
||||
// under the terms of the GNU Lesser General Public License as published
|
||||
// by the Free Software Foundation; either version 2.1 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
package com.samskivert.depot.tests;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import com.samskivert.depot.DepotRepository;
|
||||
import com.samskivert.depot.PersistenceContext;
|
||||
import com.samskivert.depot.PersistentRecord;
|
||||
|
||||
/**
|
||||
* Tests the handling of our various supported field types.
|
||||
*/
|
||||
public class AllTypesTest extends TestBase
|
||||
{
|
||||
@Test public void testCreateReadDelete ()
|
||||
{
|
||||
AllTypesRecord in = AllTypesRecord.createRecord(1);
|
||||
_repo.insert(in);
|
||||
|
||||
AllTypesRecord out = _repo.loadNoCache(in.recordId);
|
||||
assertNotNull(out != null); // we got a result
|
||||
assertTrue(in != out); // it didn't come from the cache
|
||||
|
||||
// make sure all of the fields were marshalled and unmarshalled correctly
|
||||
assertEquals(in, out);
|
||||
|
||||
// finally clean up after ourselves
|
||||
_repo.delete(AllTypesRecord.getKey(in.recordId));
|
||||
assertNull(_repo.loadNoCache(in.recordId));
|
||||
}
|
||||
|
||||
protected static class TestRepository extends DepotRepository
|
||||
{
|
||||
public AllTypesRecord loadNoCache (int recordId)
|
||||
{
|
||||
return load(AllTypesRecord.getKey(recordId), CacheStrategy.NONE);
|
||||
}
|
||||
|
||||
public TestRepository (PersistenceContext perCtx)
|
||||
{
|
||||
super(perCtx);
|
||||
}
|
||||
|
||||
@Override // from DepotRepository
|
||||
protected void getManagedRecords (Set<Class<? extends PersistentRecord>> classes)
|
||||
{
|
||||
classes.add(AllTypesRecord.class);
|
||||
}
|
||||
}
|
||||
|
||||
// the HSQL in-memory database persists for the lifetime of the VM, which means we have to
|
||||
// clean up after ourselves in every test; thus we go ahead and share a repository
|
||||
protected TestRepository _repo = new TestRepository(createPersistenceContext());
|
||||
}
|
||||
Reference in New Issue
Block a user