/* * Copyright 2004-2011 H2 Group. Multiple-Licensed under the H2 License, * Version 1.0, and under the Eclipse Public License, Version 1.0 * (http://h2database.com/html/license.html). * Initial Developer: H2 Group */ package org.h2.test.db; import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import org.h2.test.TestBase; import org.h2.util.ScriptReader; /** * This test runs a simple SQL script file and compares the output with the * expected output. */ public class TestScriptSimple extends TestBase { private Connection conn; /** * Run just this test. * * @param a ignored */ public static void main(String... a) throws Exception { TestBase.createCaller().init().test(); } public void test() throws Exception { if (config.memory || config.big || config.networked) { return; } deleteDb("scriptSimple"); reconnect(); String inFile = "org/h2/test/testSimple.in.txt"; InputStream is = getClass().getClassLoader().getResourceAsStream(inFile); LineNumberReader lineReader = new LineNumberReader(new InputStreamReader(is, "Cp1252")); ScriptReader reader = new ScriptReader(lineReader); while (true) { String sql = reader.readStatement(); if (sql == null) { break; } sql = sql.trim(); try { if ("@reconnect".equals(sql.toLowerCase())) { reconnect(); } else if (sql.length() == 0) { // ignore } else if (sql.toLowerCase().startsWith("select")) { ResultSet rs = conn.createStatement().executeQuery(sql); while (rs.next()) { String expected = reader.readStatement().trim(); String got = "> " + rs.getString(1); assertEquals(sql, expected, got); } } else { conn.createStatement().execute(sql); } } catch (SQLException e) { System.out.println(sql); throw e; } } is.close(); conn.close(); deleteDb("scriptSimple"); } private void reconnect() throws SQLException { if (conn != null) { conn.close(); } conn = getConnection("scriptSimple"); } }