blob: d927ab7951d8fddb4dbba5281aeedf6e62f8b42f [file] [log] [blame]
/* Copyright (c) 2001-2010, The HSQL Development Group
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of the HSQL Development Group nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.hsqldb.test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.io.*;
public class TestTypeConversion extends TestBase {
Connection connection;
Statement statement;
public TestTypeConversion(String name) {
super(name);
// super(name, "jdbc:hsqldb:file:test3", false, false);
// super(name, "jdbc:hsqldb:mem:test3", false, false);
}
protected void setUp() {
super.setUp();
try {
connection = super.newConnection();
statement = connection.createStatement();
} catch (Exception e) {
System.out.println(e);
}
}
public void testStreams() {
try {
String ddl0 = "DROP TABLE BSTREAM IF EXISTS";
String ddl1 =
"CREATE TABLE BSTREAM(A INT IDENTITY PRIMARY KEY, B VARBINARY(20))";
statement.execute(ddl0);
statement.execute(ddl1);
} catch (SQLException e) {
e.printStackTrace();
fail("ddl failure");
}
try {
String dml0 = "insert into bstream values(default, ?)";
String dql0 = "select * from bstream where a = ?";
PreparedStatement ps1 = connection.prepareStatement(dml0);
PreparedStatement ps2 = connection.prepareStatement(dql0);
byte[] data = new byte[] {
0x10, 0x11, 0x12, 0x13, 0x14, 0x15
};
InputStream is = new ByteArrayInputStream(data);
ps1.setBinaryStream(1, is);
ps1.execute();
ps1.setObject(1, data);
ps1.execute();
ps2.setInt(1, 1);
ResultSet rs = ps2.executeQuery();
rs.next();
InputStream isr = rs.getBinaryStream(2);
for(int i =0; i < data.length ; i++) {
int val = isr.read();
assertTrue(val == data[i]);
}
} catch (Exception e) {
e.printStackTrace();
fail("dml failure");
}
}
public void testBitA() {
try {
String ddl0 = "DROP TABLE BITTEST IF EXISTS";
String ddl1 =
"CREATE TABLE BITTEST(BITA BIT(1), BITB BIT(2), "
+ "BITVA BIT VARYING(1), BITVB BIT VARYING(2), ID IDENTITY)";
statement.execute(ddl0);
statement.execute(ddl1);
} catch (SQLException e) {
e.printStackTrace();
fail("ddl failure");
}
try {
String dml0 = "insert into bittest values(?, ?, ?, ?, default)";
String dql0 = "select * from bittest;";
PreparedStatement ps = connection.prepareStatement(dml0);
byte[] data = new byte[]{ -0x80 };
ps.setBoolean(1, true);
ps.setBytes(2, data);
ps.setBytes(3, data);
ps.setBytes(4, data);
ps.executeUpdate();
//
data = new byte[]{ 0 };
ps.setBoolean(1, false);
ps.setBytes(2, data);
ps.setBytes(3, data);
ps.setBytes(4, data);
ps.executeUpdate();
ps.close();
ps = connection.prepareStatement(dql0);
ResultSet rs = ps.executeQuery();
rs.next();
boolean boole = rs.getBoolean(1);
assertTrue(boole);
boole = rs.getBoolean(1);
assertTrue(boole);
rs.next();
boole = rs.getBoolean(1);
assertFalse(boole);
boole = rs.getBoolean(1);
assertFalse(boole);
} catch (SQLException e) {
e.printStackTrace();
fail("dml failure");
}
}
}