/*****************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
****************************************************************/
package org.apache.cayenne.access;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.query.MappedSelect;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.testdo.return_types.ReturnTypesMap1;
import org.apache.cayenne.testdo.return_types.ReturnTypesMap2;
import org.apache.cayenne.testdo.return_types.ReturnTypesMapLobs1;
import org.apache.cayenne.unit.PostgresUnitDbAdapter;
import org.apache.cayenne.unit.UnitDbAdapter;
import org.apache.cayenne.unit.di.server.CayenneProjects;
import org.apache.cayenne.unit.di.server.ServerCase;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
import org.junit.Test;
import java.math.BigDecimal;
import java.sql.Time;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import static org.junit.Assert.*;
import static org.junit.Assume.assumeTrue;
/**
* Test Types mapping for selected columns
*/
@UseServerRuntime(CayenneProjects.RETURN_TYPES_PROJECT)
public class ReturnTypesMappingIT extends ServerCase {
@Inject
private DataContext context;
@Inject
private UnitDbAdapter unitDbAdapter;
/*
* TODO: olga: We need divided TYPES_MAPPING_TES2 to 2 schemas with lobs columns and not lobs columns
*/
@Test
public void testBIGINT() throws Exception {
String columnName = "BIGINT_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Long bigintValue = 5326457654783454355l;
test.setBigintColumn(bigintValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
if(unitDbAdapter.onlyGenericNumberType()) {
assertEquals(BigDecimal.class, columnValue.getClass());
assertEquals(BigDecimal.valueOf(bigintValue), columnValue);
} else {
assertEquals(Long.class, columnValue.getClass());
assertEquals(bigintValue, columnValue);
}
}
@Test
public void testBIGINT2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Long bigintValue = 5326457654783454355l;
test.setBigintColumn(bigintValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Long columnValue = testRead.getBigintColumn();
assertNotNull(columnValue);
assertEquals(Long.class, columnValue.getClass());
assertEquals(bigintValue, columnValue);
}
@Test
public void testBINARY() throws Exception {
if (unitDbAdapter.supportsLobs()) {
String columnName = "BINARY_COLUMN";
ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
byte[] binaryValue = {
3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
};
test.setBinaryColumn(binaryValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(byte[].class, columnValue.getClass());
assertTrue(Arrays.equals(binaryValue, (byte[]) columnValue));
}
}
@Test
public void testBINARY2() throws Exception {
if (unitDbAdapter.supportsLobs()) {
ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
byte[] binaryValue = {
3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
};
test.setBinaryColumn(binaryValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
byte[] columnValue = testRead.getBinaryColumn();
assertNotNull(columnValue);
assertEquals(byte[].class, columnValue.getClass());
assertTrue(Arrays.equals(binaryValue, columnValue));
}
}
@Test
public void testBIT() throws Exception {
String columnName = "BIT_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Boolean bitValue = true;
test.setBitColumn(bitValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertTrue(Boolean.class.equals(columnValue.getClass())
|| Short.class.equals(columnValue.getClass())
|| Integer.class.equals(columnValue.getClass()));
assertTrue(bitValue.equals(columnValue) || ((Number) columnValue).intValue() == 1);
}
@Test
public void testBIT2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Boolean bitValue = true;
test.setBitColumn(bitValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Boolean columnValue = testRead.getBitColumn();
assertNotNull(columnValue);
assertEquals(Boolean.class, columnValue.getClass());
assertEquals(bitValue, columnValue);
}
@Test
public void testBLOB() throws Exception {
assumeTrue("In postresql blob_column has OID type, but in JAVA it converts into long not into byte.",
!(unitDbAdapter instanceof PostgresUnitDbAdapter));
if (unitDbAdapter.supportsLobs()) {
String columnName = "BLOB_COLUMN";
ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
byte[] blobValue = {
3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
};
test.setBlobColumn(blobValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(byte[].class, columnValue.getClass());
assertTrue(Arrays.equals(blobValue, (byte[]) columnValue));
}
}
@Test
public void testBLOB2() throws Exception {
if (unitDbAdapter.supportsLobs()) {
ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
byte[] blobValue = {
3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
};
test.setBlobColumn(blobValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
byte[] columnValue = testRead.getBlobColumn();
assertNotNull(columnValue);
assertEquals(byte[].class, columnValue.getClass());
assertTrue(Arrays.equals(blobValue, columnValue));
}
}
@Test
public void testBOOLEAN() throws Exception {
String columnName = "BOOLEAN_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Boolean booleanValue = true;
test.setBooleanColumn(booleanValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertTrue(Boolean.class.equals(columnValue.getClass())
|| Short.class.equals(columnValue.getClass())
|| Integer.class.equals(columnValue.getClass()));
assertTrue(booleanValue.equals(columnValue)
|| ((Number) columnValue).intValue() == 1);
}
@Test
public void testBOOLEAN2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Boolean booleanValue = true;
test.setBooleanColumn(booleanValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Boolean columnValue = testRead.getBooleanColumn();
assertNotNull(columnValue);
assertEquals(Boolean.class, columnValue.getClass());
assertEquals(booleanValue, columnValue);
}
@Test
public void testCHAR() throws Exception {
String columnName = "CHAR_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
String charValue = "Char string for tests!";
test.setCharColumn(charValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(charValue, columnValue);
}
@Test
public void testNCHAR() throws Exception {
String columnName = "NCHAR_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
String charValue = "درختهای جستجوی متوازن، نیازی ندارد که به صورت!";
test.setNcharColumn(charValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(charValue, columnValue);
}
@Test
public void testCHAR2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
String charValue = "Char string for tests!";
test.setCharColumn(charValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
String columnValue = testRead.getCharColumn();
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(charValue, columnValue);
}
@Test
public void testCLOB() throws Exception {
if (unitDbAdapter.supportsLobs()) {
String columnName = "CLOB_COLUMN";
ReturnTypesMapLobs1 test = context.newObject(ReturnTypesMapLobs1.class);
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < 10000; i++) {
buffer.append("CLOB very large string for tests!!!!\n");
}
String clobValue = buffer.toString();
test.setClobColumn(clobValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesLobsMap1")).get(0);
Object columnValue = testRead.get(columnName);
if (columnValue == null && testRead.containsKey(columnName.toLowerCase())) {
columnValue = testRead.get(columnName.toLowerCase());
}
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(clobValue, columnValue);
}
}
@Test
public void testNCLOB() throws Exception {
if (unitDbAdapter.supportsLobs()) {
String columnName = "NCLOB_COLUMN";
ReturnTypesMapLobs1 test = context.newObject(ReturnTypesMapLobs1.class);
StringBuilder buffer = new StringBuilder();
for (int i = 0; i < 1000; i++) {
buffer.append("رودالف بیر و دد مککرِیت درخت بی را زمانی که در شرکت بوئینگ [۱]، مشغول به کار بودند ابداع نمودند، اما حرف B واقعاً\" از کجا آمده؟ داگلاس کامر یک سری از احتمالات را پیشنهاد کرد:\n" +
"\"Balanced,\" \"Broad,\" یا \"Bushy\" ممکن است استفاده شدهباشند [چون همهٔ برگها در یک سطح قرار دارند]. دیگران اظهار داشتند که حرف \"B\" از کلمهٔ بوئینگ گرفته شده است [به این دلیل که پدیدآوردنده درسال 1972 در آزمایشگاههای تحقیقاتی علمی شرکت بوئینگ کار میکرد]. با این وجود پنداشتن درخت بی به عنوان درخت \"بِیِر\" نیز درخور است.[۲]");
}
String clobValue = buffer.toString();
test.setNclobColumn(clobValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesLobsMap1")).get(0);
Object columnValue = testRead.get(columnName);
if (columnValue == null && testRead.containsKey(columnName.toLowerCase())) {
columnValue = testRead.get(columnName.toLowerCase());
}
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(clobValue, columnValue);
}
}
@Test
public void testCLOB2() throws Exception {
if (unitDbAdapter.supportsLobs()) {
ReturnTypesMapLobs1 test = context.newObject(ReturnTypesMapLobs1.class);
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < 10000; i++) {
buffer.append("CLOB very large string for tests!!!!\n");
}
String clobValue = buffer.toString();
test.setClobColumn(clobValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMapLobs1.class);
ReturnTypesMapLobs1 testRead = (ReturnTypesMapLobs1) context.performQuery(q).get(0);
String columnValue = testRead.getClobColumn();
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(clobValue, columnValue);
}
}
@Test
public void testDATE() throws Exception {
String columnName = "DATE_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(2002, 1, 1);
Date dateValue = cal.getTime();
test.setDateColumn(dateValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(Date.class, columnValue.getClass());
assertEquals(dateValue.toString(), columnValue.toString());
}
@Test
public void testDATE2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(2002, 1, 1);
Date dateValue = cal.getTime();
test.setDateColumn(dateValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Date columnValue = testRead.getDateColumn();
assertNotNull(columnValue);
assertEquals(Date.class, columnValue.getClass());
assertEquals(dateValue.toString(), columnValue.toString());
}
@Test
public void testDECIMAL() throws Exception {
String columnName = "DECIMAL_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
BigDecimal decimalValue = new BigDecimal("578438.57843");
test.setDecimalColumn(decimalValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(BigDecimal.class, columnValue.getClass());
assertEquals(decimalValue, columnValue);
}
@Test
public void testDECIMAL2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
BigDecimal decimalValue = new BigDecimal("578438.57843");
test.setDecimalColumn(decimalValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
BigDecimal columnValue = testRead.getDecimalColumn();
assertNotNull(columnValue);
assertEquals(BigDecimal.class, columnValue.getClass());
assertEquals(decimalValue, columnValue);
}
@Test
public void testDOUBLE() throws Exception {
String columnName = "DOUBLE_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Double doubleValue = 3298.4349783d;
test.setDoubleColumn(doubleValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
if(unitDbAdapter.onlyGenericNumberType()) {
assertEquals(BigDecimal.class, columnValue.getClass());
assertEquals(BigDecimal.valueOf(doubleValue), columnValue);
} else {
assertEquals(Double.class, columnValue.getClass());
assertEquals(doubleValue, columnValue);
}
}
@Test
public void testDOUBLE2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Double doubleValue = 3298.4349783d;
test.setDoubleColumn(doubleValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Double columnValue = testRead.getDoubleColumn();
assertNotNull(columnValue);
assertEquals(Double.class, columnValue.getClass());
assertEquals(doubleValue, columnValue);
}
@Test
public void testFLOAT() throws Exception {
String columnName = "FLOAT_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Float floatValue = 375.437f;
test.setFloatColumn(floatValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
if(unitDbAdapter.onlyGenericNumberType()) {
assertEquals(BigDecimal.class, columnValue.getClass());
} else {
assertTrue(Float.class.equals(columnValue.getClass())
|| Double.class.equals(columnValue.getClass()));
}
assertEquals(floatValue.floatValue(), ((Number)columnValue).floatValue(), 0);
}
@Test
public void testFLOAT2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Float floatValue = 375.437f;
test.setFloatColumn(floatValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Float columnValue = testRead.getFloatColumn();
assertNotNull(columnValue);
assertEquals(Float.class, columnValue.getClass());
assertEquals(floatValue, columnValue);
}
@Test
public void testINTEGER() throws Exception {
String columnName = "INTEGER_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Integer integerValue = 54235;
test.setIntegerColumn(integerValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(Integer.class, columnValue.getClass());
assertEquals(integerValue, columnValue);
}
@Test
public void testINTEGER2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Integer integerValue = 54235;
test.setIntegerColumn(integerValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Integer columnValue = testRead.getIntegerColumn();
assertNotNull(columnValue);
assertEquals(Integer.class, columnValue.getClass());
assertEquals(integerValue, columnValue);
}
@Test
public void testLONGVARBINARY() throws Exception {
if (unitDbAdapter.supportsLobs()) {
String columnName = "LONGVARBINARY_COLUMN";
ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
byte[] longvarbinaryValue = {
3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
};
test.setLongvarbinaryColumn(longvarbinaryValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(byte[].class, columnValue.getClass());
assertTrue(Arrays.equals(longvarbinaryValue, (byte[]) columnValue));
}
}
@Test
public void testLONGVARBINARY2() throws Exception {
if (unitDbAdapter.supportsLobs()) {
ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
byte[] longvarbinaryValue = {
3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
};
test.setLongvarbinaryColumn(longvarbinaryValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
byte[] columnValue = testRead.getLongvarbinaryColumn();
assertNotNull(columnValue);
assertEquals(byte[].class, columnValue.getClass());
assertTrue(Arrays.equals(longvarbinaryValue, columnValue));
}
}
@Test
public void testLONGVARCHAR() throws Exception {
String columnName = "LONGVARCHAR_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < 500; i++) {
buffer.append("LONGVARCHAR large string for tests!!!!\n");
}
String longvarcharValue = buffer.toString();
test.setLongvarcharColumn(longvarcharValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(longvarcharValue, columnValue);
}
@Test
public void testLONGNVARCHAR() throws Exception {
String columnName = "LONGNVARCHAR_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < 500; i++) {
buffer.append("ی متوازن، نیازی ندارد که ب large string for tests!!!!\n");
}
String longnvarcharValue = buffer.toString();
test.setLongnvarcharColumn(longnvarcharValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(longnvarcharValue, columnValue);
}
@Test
public void testLONGVARCHAR2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < 500; i++) {
buffer.append("LONGVARCHAR large string for tests!!!!\n");
}
String longvarcharValue = buffer.toString();
test.setLongvarcharColumn(longvarcharValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
String columnValue = testRead.getLongvarcharColumn();
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(longvarcharValue, columnValue);
}
@Test
public void testNUMERIC() throws Exception {
String columnName = "NUMERIC_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
BigDecimal numericValue = new BigDecimal("578438.57843");
test.setNumericColumn(numericValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(BigDecimal.class, columnValue.getClass());
assertEquals(numericValue, columnValue);
}
@Test
public void testNUMERIC2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
BigDecimal numericValue = new BigDecimal("578438.57843");
test.setNumericColumn(numericValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
BigDecimal columnValue = testRead.getNumericColumn();
assertNotNull(columnValue);
assertEquals(BigDecimal.class, columnValue.getClass());
assertEquals(numericValue, columnValue);
}
@Test
public void testREAL() throws Exception {
String columnName = "REAL_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Float realValue = 5788.57843f;
test.setRealColumn(realValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
// MySQL can treat REAL as either DOUBLE or FLOAT depending on the
// engine settings
if(unitDbAdapter.onlyGenericNumberType()) {
assertEquals(BigDecimal.class, columnValue.getClass());
} else {
if (unitDbAdapter.realAsDouble()) {
assertEquals(Double.class, columnValue.getClass());
assertEquals(Double.valueOf(realValue), (Double) columnValue, 0.0001);
} else {
assertEquals(Float.class, columnValue.getClass());
assertEquals(realValue, columnValue);
}
}
}
@Test
public void testREAL2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Float realValue = 5788.57843f;
test.setRealColumn(realValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Float columnValue = testRead.getRealColumn();
assertNotNull(columnValue);
assertEquals(Float.class, columnValue.getClass());
assertEquals(realValue, columnValue);
}
@Test
public void testSMALLINT() throws Exception {
String columnName = "SMALLINT_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Short smallintValue = 32564;
Integer intValue = 32564;
test.setSmallintColumn(smallintValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
if(unitDbAdapter.onlyGenericNumberType()) {
assertEquals(Integer.class, columnValue.getClass());
assertEquals(intValue, columnValue);
} else {
assertEquals(Short.class, columnValue.getClass());
assertEquals(smallintValue, columnValue);
}
}
@Test
public void testSMALLINT2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Short smallintValue = 32564;
test.setSmallintColumn(smallintValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Short columnValue = testRead.getSmallintColumn();
assertNotNull(columnValue);
assertEquals(Short.class, columnValue.getClass());
assertEquals(smallintValue, columnValue);
}
@Test
public void testTIME() throws Exception {
String columnName = "TIME_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(2003, 1, 1, 1, 20, 30);
Date timeValue = new Time(cal.getTime().getTime());
test.setTimeColumn(timeValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(Date.class, columnValue.getClass());
assertEquals(timeValue.toString(), new Time(((Date) columnValue).getTime())
.toString());
}
@Test
public void testTIME2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(2003, 1, 1, 1, 20, 30);
Date timeValue = new Time(cal.getTime().getTime());
test.setTimeColumn(timeValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Date columnValue = testRead.getTimeColumn();
assertNotNull(columnValue);
assertEquals(Date.class, columnValue.getClass());
assertEquals(timeValue.toString(), new Time(columnValue.getTime()).toString());
}
@Test
public void testTIMESTAMP() throws Exception {
String columnName = "TIMESTAMP_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Date timestampValue = Calendar.getInstance().getTime();
test.setTimestampColumn(timestampValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(Date.class, columnValue.getClass());
// some DB's, noteably MySQL, strip the milliseconds from timestamps,
// so comparing within 1 second precision
long delta = timestampValue.getTime() - ((Date) columnValue).getTime();
assertTrue(delta < 1000);
}
@Test
public void testTIMESTAMP2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Date timestampValue = Calendar.getInstance().getTime();
test.setTimestampColumn(timestampValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Date columnValue = testRead.getTimestampColumn();
assertNotNull(columnValue);
assertEquals(Date.class, columnValue.getClass());
// some DB's, noteably MySQL, strip the milliseconds from timestamps,
// so comparing within 1 second precision
long delta = timestampValue.getTime() - ((Date) columnValue).getTime();
assertTrue(delta < 1000); }
@Test
public void testTINYINT() throws Exception {
String columnName = "TINYINT_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Byte tinyintValue = 89;
Integer intValue = 89;
test.setTinyintColumn(tinyintValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
if(unitDbAdapter.onlyGenericNumberType()) {
assertEquals(Integer.class, columnValue.getClass());
} else {
assertEquals(Short.class, columnValue.getClass());
}
assertEquals(tinyintValue.intValue(), ((Number)columnValue).intValue());
}
@Test
public void testTINYINT2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
Byte tinyintValue = 89;
test.setTinyintColumn(tinyintValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
Byte columnValue = testRead.getTinyintColumn();
assertNotNull(columnValue);
assertEquals(Byte.class, columnValue.getClass());
assertEquals(tinyintValue, columnValue);
}
@Test
public void testVARBINARY() throws Exception {
if (unitDbAdapter.supportsLobs()) {
String columnName = "VARBINARY_COLUMN";
ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
byte[] varbinaryValue = {
3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
};
test.setVarbinaryColumn(varbinaryValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(byte[].class, columnValue.getClass());
assertTrue(Arrays.equals(varbinaryValue, (byte[]) columnValue));
}
}
@Test
public void testVARBINARY2() throws Exception {
if (unitDbAdapter.supportsLobs()) {
ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
byte[] varbinaryValue = {
3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
};
test.setVarbinaryColumn(varbinaryValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
byte[] columnValue = testRead.getVarbinaryColumn();
assertNotNull(columnValue);
assertEquals(byte[].class, columnValue.getClass());
assertTrue(Arrays.equals(varbinaryValue, columnValue));
}
}
@Test
public void testVARCHAR() throws Exception {
String columnName = "VARCHAR_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
String varcharValue = "VARChar string for tests!";
test.setVarcharColumn(varcharValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(varcharValue, columnValue);
}
@Test
public void testNVARCHAR() throws Exception {
String columnName = "NVARCHAR_COLUMN";
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
String varcharValue = "ی متوازن، نیازی ندارد که ب";
test.setNvarcharColumn(varcharValue);
context.commitChanges();
DataRow testRead = (DataRow) context.performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
Object columnValue = testRead.get(columnName);
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(varcharValue, columnValue);
}
@Test
public void testVARCHAR2() throws Exception {
ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
String varcharValue = "VARChar string for tests!";
test.setVarcharColumn(varcharValue);
context.commitChanges();
SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
String columnValue = testRead.getVarcharColumn();
assertNotNull(columnValue);
assertEquals(String.class, columnValue.getClass());
assertEquals(varcharValue, columnValue);
}
}