Skip to content
Snippets Groups Projects
Commit f6cbb949 authored by Raphael GIRARDOT's avatar Raphael GIRARDOT
Browse files

bug correction + tests fix

parent ad93add1
No related branches found
No related tags found
No related merge requests found
......@@ -199,7 +199,7 @@ public abstract class GenericExtractorMethods implements DBExtractionConst {
Object write = extractData(rset, 3, dataType, nullElementsWrite);
Array.set(writeValue, 0, write);
writeData.setValue(writeValue, nullElementsWrite);
writeList.add(readData);
writeList.add(writeData);
}
} // end while (rset.next())
......
......@@ -434,11 +434,11 @@ public abstract class DataGetters extends DataExtractor {
final IDbUtils dbUtils = DbUtilsFactory.getInstance(connector);
if ((connector == null) || (att == null) || (dbUtils == null) || (dbData == null) || (dbData.length < 2)
|| ((dbData[0] == null) && (dbData[1] == null))) {
result = null;
result = DbData.initExtractionResult(attributeName);
} else {
result = dbData;
int writable = -1;
for (DbData data : dbData) {
for (DbData data : result) {
if (data != null) {
writable = data.getWritable();
break;
......
......@@ -8,6 +8,7 @@ import org.junit.Before;
import fr.esrf.Tango.DevFailed;
import fr.soleil.archiving.common.api.ConnectionFactory;
import fr.soleil.archiving.common.api.exception.ArchivingException;
import fr.soleil.database.DBExtractionConst;
import fr.soleil.database.connection.AbstractDataBaseConnector;
import fr.soleil.database.connection.DataBaseParameters;
import liquibase.Liquibase;
......@@ -15,7 +16,7 @@ import liquibase.database.jvm.HsqlConnection;
import liquibase.exception.LiquibaseException;
import liquibase.resource.ClassLoaderResourceAccessor;
abstract public class OracleConnectorTest {
abstract public class OracleConnectorTest implements DBExtractionConst {
protected static AbstractDataBaseConnector hdbConnector;
protected static final String DEFAULT = "liquibase/tangotest/member/";
......
......@@ -26,107 +26,161 @@ public class DbUtilsTest extends OracleConnectorTest {
DbUtils dbUtils = new OracleDbUtils(hdbConnector);
NullableData<boolean[]>[] result = dbUtils.getScalarValue("3", "5", TangoConst.Tango_DEV_DOUBLE,
AttrWriteType._READ_WRITE);
assertTrue(Arrays.equals(new double[] { 3, 5 }, (double[]) result[0].getValue()));
assertArrayEquals(new boolean[] { false, false }, result[0].getNullElements());
assertTrue(Arrays.equals(new double[] { 3 }, (double[]) result[READ_INDEX].getValue()));
assertTrue(Arrays.equals(new double[] { 5 }, (double[]) result[WRITE_INDEX].getValue()));
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("3", "NaN", TangoConst.Tango_DEV_DOUBLE, AttrWriteType._READ_WRITE);
assertTrue(Arrays.equals(new double[] { 3, MathConst.NAN_FOR_NULL }, (double[]) result[0].getValue()));
assertArrayEquals(new boolean[] { false, true }, result[0].getNullElements());
assertArrayEquals(new double[] { 3 }, (double[]) result[READ_INDEX].getValue(), 0);
assertArrayEquals(new double[] { MathConst.NAN_FOR_NULL }, (double[]) result[WRITE_INDEX].getValue(), 0);
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("3", "true", TangoConst.Tango_DEV_BOOLEAN, AttrWriteType._READ_WRITE);
assertArrayEquals(new boolean[] { true, true }, (boolean[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false }, result[0].getNullElements());
assertArrayEquals(new boolean[] { true }, (boolean[]) result[READ_INDEX].getValue());
assertArrayEquals(new boolean[] { true }, (boolean[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("0", null, TangoConst.Tango_DEV_BOOLEAN, AttrWriteType._READ_WRITE);
assertArrayEquals(new boolean[] { false, false }, (boolean[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, true }, result[0].getNullElements());
assertArrayEquals(new boolean[] { false }, (boolean[]) result[READ_INDEX].getValue());
assertArrayEquals(new boolean[] { false }, (boolean[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("3", "5", TangoConst.Tango_DEV_LONG, AttrWriteType._READ_WRITE);
assertArrayEquals(new int[] { 3, 5 }, (int[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false }, result[0].getNullElements());
assertArrayEquals(new int[] { 3 }, (int[]) result[READ_INDEX].getValue());
assertArrayEquals(new int[] { 5 }, (int[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("0.1", "NaN", TangoConst.Tango_DEV_LONG, AttrWriteType._READ_WRITE);
assertArrayEquals(new int[] { 0, 0 }, (int[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, true }, result[0].getNullElements());
assertArrayEquals(new int[] { 0 }, (int[]) result[READ_INDEX].getValue());
assertArrayEquals(new int[] { 0 }, (int[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("3", "5", TangoConst.Tango_DEV_LONG64, AttrWriteType._READ_WRITE);
assertArrayEquals(new long[] { 3, 5 }, (long[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false }, result[0].getNullElements());
assertArrayEquals(new long[] { 3 }, (long[]) result[READ_INDEX].getValue());
assertArrayEquals(new long[] { 5 }, (long[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("0.1", "NaN", TangoConst.Tango_DEV_LONG64, AttrWriteType._READ_WRITE);
assertArrayEquals(new long[] { 0, 0 }, (long[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, true }, result[0].getNullElements());
assertArrayEquals(new long[] { 0 }, (long[]) result[READ_INDEX].getValue());
assertArrayEquals(new long[] { 0, }, (long[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("3", "5", TangoConst.Tango_DEV_SHORT, AttrWriteType._READ_WRITE);
assertArrayEquals(new short[] { 3, 5 }, (short[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false }, result[0].getNullElements());
assertArrayEquals(new short[] { 3 }, (short[]) result[READ_INDEX].getValue());
assertArrayEquals(new short[] { 5 }, (short[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("0.1", "NaN", TangoConst.Tango_DEV_SHORT, AttrWriteType._READ_WRITE);
assertArrayEquals(new short[] { 0, 0 }, (short[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, true }, result[0].getNullElements());
assertArrayEquals(new short[] { 0 }, (short[]) result[READ_INDEX].getValue());
assertArrayEquals(new short[] { 0 }, (short[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("3", "5", TangoConst.Tango_DEV_FLOAT, AttrWriteType._READ_WRITE);
assertTrue(Arrays.equals(new float[] { 3, 5 }, (float[]) result[0].getValue()));
assertArrayEquals(new boolean[] { false, false }, result[0].getNullElements());
assertTrue(Arrays.equals(new float[] { 3 }, (float[]) result[READ_INDEX].getValue()));
assertTrue(Arrays.equals(new float[] { 5 }, (float[]) result[WRITE_INDEX].getValue()));
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("0.1", "NaN", TangoConst.Tango_DEV_FLOAT, AttrWriteType._READ_WRITE);
assertTrue(Arrays.equals(new float[] { 0.1f, Float.NaN }, (float[]) result[0].getValue()));
assertArrayEquals(new boolean[] { false, true }, result[0].getNullElements());
assertTrue(Arrays.equals(new float[] { 0.1f }, (float[]) result[READ_INDEX].getValue()));
assertTrue(Arrays.equals(new float[] { Float.NaN }, (float[]) result[WRITE_INDEX].getValue()));
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("SomeString", null, TangoConst.Tango_DEV_STRING, AttrWriteType._READ_WRITE);
assertArrayEquals(new String[] { "SomeString", null }, (String[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, true }, result[0].getNullElements());
assertArrayEquals(new String[] { "SomeString" }, (String[]) result[READ_INDEX].getValue());
assertArrayEquals(new String[] { null }, (String[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getScalarValue("#91#", "null", TangoConst.Tango_DEV_STRING, AttrWriteType._READ_WRITE);
assertArrayEquals(new String[] { "[", null }, (String[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, true }, result[0].getNullElements());
assertArrayEquals(new String[] { "[" }, (String[]) result[READ_INDEX].getValue());
assertArrayEquals(new String[] { null }, (String[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true }, result[WRITE_INDEX].getNullElements());
}
@Test
public void getSpectrumValueTest() {
DbUtils dbUtils = new OracleDbUtils(null);
NullableData<boolean[]>[] result = dbUtils.getSpectrumValue("3,4", "5,6", TangoConst.Tango_DEV_DOUBLE);
assertTrue(Arrays.equals(new double[] { 3, 4, 5, 6 }, (double[]) result[0].getValue()));
assertArrayEquals(new boolean[] { false, false, false, false }, result[0].getNullElements());
assertArrayEquals(new double[] { 3, 4 }, (double[]) result[READ_INDEX].getValue(), 0);
assertArrayEquals(new double[] { 5, 6 }, (double[]) result[WRITE_INDEX].getValue(), 0);
assertArrayEquals(new boolean[] { false, false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false, false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("3,4", "NaN,6", TangoConst.Tango_DEV_DOUBLE);
assertTrue(Arrays.equals(new double[] { 3, 4, MathConst.NAN_FOR_NULL, 6 }, (double[]) result[0].getValue()));
assertArrayEquals(new boolean[] { false, false, true, false }, result[0].getNullElements());
assertArrayEquals(new double[] { 3, 4 }, (double[]) result[READ_INDEX].getValue(), 0);
assertArrayEquals(new double[] { MathConst.NAN_FOR_NULL, 6 }, (double[]) result[WRITE_INDEX].getValue(), 0);
assertArrayEquals(new boolean[] { false, false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true, false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("3,0,true", "true,null", TangoConst.Tango_DEV_BOOLEAN);
assertArrayEquals(new boolean[] { true, false, true, true, false }, (boolean[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false, false, false, true }, result[0].getNullElements());
assertArrayEquals(new boolean[] { true, false, true }, (boolean[]) result[READ_INDEX].getValue());
assertArrayEquals(new boolean[] { true, false }, (boolean[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false, false, false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false, true }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("0,", null, TangoConst.Tango_DEV_BOOLEAN);
assertArrayEquals(new boolean[] { false }, (boolean[]) result[0].getValue());
assertArrayEquals(new boolean[] { false }, result[0].getNullElements());
assertArrayEquals(new boolean[] { false }, (boolean[]) result[READ_INDEX].getValue());
assertNull(result[WRITE_INDEX]);
assertArrayEquals(new boolean[] { false }, result[READ_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("3,4", "5,6", TangoConst.Tango_DEV_LONG);
assertArrayEquals(new int[] { 3, 4, 5, 6 }, (int[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false, false, false }, result[0].getNullElements());
assertArrayEquals(new int[] { 3, 4 }, (int[]) result[READ_INDEX].getValue());
assertArrayEquals(new int[] { 5, 6 }, (int[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false, false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false, false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("3,4.1,NaN", "NaN,6", TangoConst.Tango_DEV_LONG);
assertArrayEquals(new int[] { 3, 4, 0, 0, 6 }, (int[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false, true, true, false }, result[0].getNullElements());
assertArrayEquals(new int[] { 3, 4, 0 }, (int[]) result[READ_INDEX].getValue());
assertArrayEquals(new int[] { 0, 6 }, (int[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false, false, true }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true, false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("3,4", "5,6", TangoConst.Tango_DEV_LONG64);
assertArrayEquals(new long[] { 3, 4, 5, 6 }, (long[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false, false, false }, result[0].getNullElements());
assertArrayEquals(new long[] { 3, 4 }, (long[]) result[READ_INDEX].getValue());
assertArrayEquals(new long[] { 5, 6 }, (long[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false, false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false, false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("3,4.1,NaN", "NaN,6", TangoConst.Tango_DEV_LONG64);
assertArrayEquals(new long[] { 3, 4, 0, 0, 6 }, (long[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false, true, true, false }, result[0].getNullElements());
assertArrayEquals(new long[] { 3, 4, 0 }, (long[]) result[READ_INDEX].getValue());
assertArrayEquals(new long[] { 0, 6 }, (long[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false, false, true }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true, false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("3,4", "5,6", TangoConst.Tango_DEV_SHORT);
assertArrayEquals(new short[] { 3, 4, 5, 6 }, (short[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false, false, false }, result[0].getNullElements());
assertArrayEquals(new short[] { 3, 4 }, (short[]) result[READ_INDEX].getValue());
assertArrayEquals(new short[] { 5, 6 }, (short[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false, false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false, false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("3,4.1,NaN", "NaN,6", TangoConst.Tango_DEV_SHORT);
assertArrayEquals(new short[] { 3, 4, 0, 0, 6 }, (short[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false, true, true, false }, result[0].getNullElements());
assertArrayEquals(new short[] { 3, 4, 0, }, (short[]) result[READ_INDEX].getValue());
assertArrayEquals(new short[] { 0, 6 }, (short[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false, false, true }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true, false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("3,4", "5,6", TangoConst.Tango_DEV_FLOAT);
assertTrue(Arrays.equals(new float[] { 3, 4, 5, 6 }, (float[]) result[0].getValue()));
assertArrayEquals(new boolean[] { false, false, false, false }, result[0].getNullElements());
assertArrayEquals(new float[] { 3, 4 }, (float[]) result[READ_INDEX].getValue(), 0);
assertArrayEquals(new float[] { 5, 6 }, (float[]) result[WRITE_INDEX].getValue(), 0);
assertArrayEquals(new boolean[] { false, false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false, false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("3,4.1", "NaN,6", TangoConst.Tango_DEV_FLOAT);
assertTrue(Arrays.equals(new float[] { 3, 4.1f, Float.NaN, 6 }, (float[]) result[0].getValue()));
assertArrayEquals(new boolean[] { false, false, true, false }, result[0].getNullElements());
assertArrayEquals(new float[] { 3, 4.1f }, (float[]) result[READ_INDEX].getValue(), 0);
assertArrayEquals(new float[] { Float.NaN, 6 }, (float[]) result[WRITE_INDEX].getValue(), 0);
assertArrayEquals(new boolean[] { false, false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true, false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("SomeString,SomeString", "SomeString,", TangoConst.Tango_DEV_STRING);
assertArrayEquals(new String[] { "SomeString", "SomeString", "SomeString" }, (String[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false, false }, result[0].getNullElements());
assertArrayEquals(new String[] { "SomeString", "SomeString" }, (String[]) result[READ_INDEX].getValue());
assertArrayEquals(new String[] { "SomeString" }, (String[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false, false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { false }, result[WRITE_INDEX].getNullElements());
result = dbUtils.getSpectrumValue("#91#,SomeString", ",SomeString,null", TangoConst.Tango_DEV_STRING);
assertArrayEquals(new String[] { "[", "SomeString", null, "SomeString", null },
(String[]) result[0].getValue());
assertArrayEquals(new boolean[] { false, false, true, false, true }, result[0].getNullElements());
assertArrayEquals(new String[] { "[", "SomeString" }, (String[]) result[READ_INDEX].getValue());
assertArrayEquals(new String[] { null, "SomeString", null }, (String[]) result[WRITE_INDEX].getValue());
assertArrayEquals(new boolean[] { false, false }, result[READ_INDEX].getNullElements());
assertArrayEquals(new boolean[] { true, false, true }, result[WRITE_INDEX].getNullElements());
}
@Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment