blob: 99bcad22c7c6a35d53b41374d4f00221d1b1ed24 [file] [log] [blame]
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab
package org.mariadb.jdbc.integration.codec;
import static org.junit.jupiter.api.Assertions.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.sql.*;
import org.junit.jupiter.api.Assertions;
import org.mariadb.jdbc.integration.Common;
public class CommonCodecTest extends Common {
void assertReaderEquals(Reader expected, Reader result) throws IOException {
int res1 = 0;
int res2 = 0;
while (res1 != -1 && res2 != -1) {
res1 = expected.read();
res2 = result.read();
Assertions.assertEquals(res1, res2);
}
}
void assertStreamEquals(InputStream expected, InputStream result) throws IOException {
int res1 = 0;
int res2 = 0;
while (res1 != -1 && res2 != -1) {
res1 = expected.read();
res2 = result.read();
Assertions.assertEquals(res1, res2);
}
}
void assertStreamEquals(Blob expected, Blob result) throws Exception {
assertStreamEquals(expected.getBinaryStream(), result.getBinaryStream());
}
void assertStreamEquals(Clob expected, Clob result) throws Exception {
assertReaderEquals(expected.getCharacterStream(), result.getCharacterStream());
}
void testObject(ResultSet rs, Class<?> objClass, Object exp) throws Exception {
testObject(rs, objClass, exp, 1);
}
void testObject(ResultSet rs, Class<?> objClass, Object exp, int idx) throws Exception {
if (exp instanceof Blob) {
assertStreamEquals((Blob) exp, (Blob) rs.getObject(idx, objClass));
assertStreamEquals((Blob) exp, (Blob) rs.getObject("t" + idx + "alias", objClass));
assertNull(rs.getObject(4, objClass));
assertNull(rs.getObject("t4alias", objClass));
} else if (exp instanceof Clob) {
assertStreamEquals((Clob) exp, (Clob) rs.getObject(idx, objClass));
assertStreamEquals((Clob) exp, (Clob) rs.getObject("t" + idx + "alias", objClass));
assertNull(rs.getObject(4, objClass));
assertNull(rs.getObject("t4alias", objClass));
} else if (exp instanceof InputStream) {
assertStreamEquals((InputStream) exp, (InputStream) rs.getObject(idx, objClass));
assertNull(rs.getObject(4, objClass));
assertNull(rs.getObject("t4alias", objClass));
} else if (exp instanceof byte[]) {
assertArrayEquals((byte[]) exp, (byte[]) rs.getObject(idx, objClass));
assertNull(rs.getObject(4, objClass));
assertNull(rs.getObject("t4alias", objClass));
} else if (exp instanceof Reader) {
assertReaderEquals((Reader) exp, (Reader) rs.getObject(idx, objClass));
assertNull(rs.getObject(4, objClass));
assertNull(rs.getObject("t4alias", objClass));
} else if (exp instanceof Time) {
assertEquals(((Time) exp).getTime(), ((Time) rs.getObject(idx, objClass)).getTime());
assertEquals(
((Time) exp).getTime(), ((Time) rs.getObject("t" + idx + "alias", objClass)).getTime());
assertNull(rs.getObject(4, objClass));
assertNull(rs.getObject("t4alias", objClass));
} else if (exp instanceof Date) {
assertEquals(((Date) exp).getTime(), ((Date) rs.getObject(idx, objClass)).getTime());
assertEquals(
((Date) exp).getTime(), ((Date) rs.getObject("t" + idx + "alias", objClass)).getTime());
assertNull(rs.getObject(4, objClass));
assertNull(rs.getObject("t4alias", objClass));
} else {
assertEquals(exp, rs.getObject(idx, objClass));
assertEquals(exp, rs.getObject("t" + idx + "alias", objClass));
assertNull(rs.getObject(4, objClass));
assertNull(rs.getObject("t4alias", objClass));
}
}
void testErrObject(ResultSet rs, Class<?> objClass, int index) throws SQLException {
Assertions.assertThrows(SQLException.class, () -> rs.getObject(index, objClass));
Assertions.assertThrows(
SQLException.class, () -> rs.getObject("t" + index + "alias", objClass));
}
void testErrObject(ResultSet rs, Class<?> objClass) throws SQLException {
testErrObject(rs, objClass, 1);
assertNull(rs.getObject(4, objClass));
assertNull(rs.getObject("t4alias", objClass));
}
void testArrObject(ResultSet rs, byte[] exp, int index) throws SQLException {
assertArrayEquals(exp, (byte[]) rs.getObject(index, (Class<?>) byte[].class));
assertArrayEquals(exp, (byte[]) rs.getObject("t" + index + "alias", (Class<?>) byte[].class));
}
void testArrObject(ResultSet rs, byte[] exp) throws SQLException {
testArrObject(rs, exp, 1);
assertNull(rs.getObject(4, (Class<?>) byte[].class));
assertNull(rs.getObject("t4alias", (Class<?>) byte[].class));
}
}