package org.teiid.translator.loopback; import java.util.List; import org.junit.Assert; import org.teiid.cdk.api.ConnectorHost; import org.teiid.cdk.api.TranslationUtility; import org.teiid.translator.TranslatorException; public class TestHelper { public static LoopbackExecutionFactory exampleProperties(boolean incrementRows,int waitTime, int rowCount) { LoopbackExecutionFactory config = new LoopbackExecutionFactory(); config.setWaitTime(waitTime); config.setRowCount(rowCount); config.setIncrementRows(incrementRows); return config; } public static void helpTestQuery(boolean incrementRows, String sql, TranslationUtility metadata, int waitTime, int rowCount, Object[][] expectedResults) throws TranslatorException { ConnectorHost host = new ConnectorHost(exampleProperties(incrementRows,waitTime, rowCount), null, metadata); List actualResults = host.executeCommand(sql); // Compare actual and expected results Assert.assertEquals("Did not get expected number of rows", expectedResults.length, actualResults.size()); //$NON-NLS-1$ if(expectedResults.length > 0) { // Compare column sizes Assert.assertEquals("Did not get expected number of columns", expectedResults[0].length, ((List)actualResults.get(0)).size()); //$NON-NLS-1$ // Compare results for(int r=0; r<expectedResults.length; r++) { Object[] expectedRow = expectedResults[r]; List actualRow = (List) actualResults.get(r); for(int c=0; c<expectedRow.length; c++) { Object expectedValue = expectedRow[c]; Object actualValue = actualRow.get(c); if(expectedValue == null) { if(actualValue != null) { Assert.fail("Row " + r + ", Col " + c + ": Expected null but got " + actualValue + " of type " + actualValue.getClass().getName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } } else if(actualValue == null) { Assert.fail("Row " + r + ", Col " + c + ": Expected " + expectedValue + " but got null"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } else if (expectedValue.getClass().isArray() && !expectedValue.getClass().getComponentType().isPrimitive()) { Assert.assertArrayEquals("Row " + r + ", Col " + c + ": Expected " + expectedValue + " but got " + actualValue, (Object[])expectedValue, (Object[])actualValue); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } else { Assert.assertEquals("Row " + r + ", Col " + c + ": Expected " + expectedValue + " but got " + actualValue, expectedValue, actualValue); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } } } } } }