/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.operation.treatment; import net.codjo.utils.TestEnvironnement; import fakedb.FakeDriver; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * DOCUMENT ME! * * @author $Author: blazart $ * @version $Revision: 1.3 $ */ public class BreakDetectorTest extends TestCase { TestEnvironnement testEnv; /** * Constructor for the UtilsTest object * * @param name Description of Parameter */ public BreakDetectorTest(String name) { super(name); } /** * A unit test suite for JUnit * * @return The test suite */ public static Test suite() { return new TestSuite(BreakDetectorTest.class); } /** * A unit test for JUnit * * @exception SQLException Description of Exception */ public void test_isBreakPoint_NoAggregate() throws SQLException { BreakDetector breakDetectorNoAggregate = new BreakDetector(); fakeTable(3); Connection con = testEnv.getConnectionManager().getConnection(); PreparedStatement stmt = con.prepareStatement("select * from A_TABLE"); ResultSet rs = stmt.executeQuery(); assertTrue(rs.next()); assertTrue(breakDetectorNoAggregate.isBreakPoint(rs) == false); assertTrue(rs.next()); assertTrue(breakDetectorNoAggregate.isBreakPoint(rs) == true); assertTrue(rs.next()); assertTrue(breakDetectorNoAggregate.isBreakPoint(rs) == true); assertTrue("Fin", rs.next() == false); } /** * A unit test for JUnit * * @exception SQLException Description of Exception */ public void test_isBreakPoint_Aggregate() throws SQLException { String[] pk = {"COL_A", "COL_B"}; BreakDetector breakDetector = new BreakDetector(pk); runTestAggregate(breakDetector); } /** * A unit test for JUnit * * @exception SQLException Description of Exception */ public void test_clear() throws SQLException { String[] pk = {"COL_A", "COL_B"}; BreakDetector breakDetector = new BreakDetector(pk); runTestAggregate(breakDetector); breakDetector.clear(); runTestAggregate(breakDetector); } /** * The JUnit setup method */ protected void setUp() { TestEnvironnement.forceFakeDriver(); testEnv = TestEnvironnement.newEnvironment(); } /** * The teardown method for JUnit */ protected void tearDown() { testEnv.close(); } /** * Overview. * * @param nbRow Description of Parameter */ private void fakeTable(int nbRow) { Object[][] matrix = new Object[nbRow + 1][3]; matrix[0][0] = "COL_A"; matrix[0][1] = "COL_B"; matrix[0][2] = "COL_C"; for (int i = 1; i <= nbRow; i++) { matrix[i][0] = "ROW_" + i / 100 + "_A"; matrix[i][1] = "ROW_" + i / 10 + "_B"; matrix[i][2] = "ROW_" + i + "_C"; } FakeDriver.getDriver().pushResultSet(matrix, "select * from A_TABLE"); } private void runTestAggregate(BreakDetector breakDetector) throws SQLException { fakeTable(20); Connection con = testEnv.getConnectionManager().getConnection(); // "order by" non specifie PreparedStatement stmt = con.prepareStatement("select * from A_TABLE"); ResultSet rs = stmt.executeQuery(); int i = 1; while (rs.next()) { // APP.debug(" ligne " + i + " : " // + "\n COL_A = " + rs.getString("COL_A") // + "\n COL_B = " + rs.getString("COL_B") // + "\n COL_C = " + rs.getString("COL_C") // ); if (i == 10) { assertEquals("Ligne " + i, breakDetector.isBreakPoint(rs), true); return; } else { assertEquals("Ligne " + i, breakDetector.isBreakPoint(rs), false); } i++; } } }