Factor out transaction unit tests to base class

Change-Id: I24f36ba55cb5ab2db2c6cb977aad4d27463b0d70
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java b/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java
index c46f86b..9991b6f 100644
--- a/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java
+++ b/src/test/java/com/google/gwtorm/schema/sql/DialectH2Test.java
@@ -32,22 +32,13 @@
 import org.junit.Before;
 import org.junit.Test;
 
-import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
-import java.util.ArrayList;
 import java.util.Collections;
-import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
-public class DialectH2Test {
-  private Connection db;
-  private JdbcExecutor executor;
-  private SqlDialect dialect;
-  private Database<PhoneBookDb> phoneBook;
-  private Database<PhoneBookDb2> phoneBook2;
-
+public class DialectH2Test extends SqlDialectTest {
   @Before
   public void setUp() throws Exception {
     org.h2.Driver.load();
@@ -209,43 +200,4 @@
     assertTrue(s.contains("bar"));
     assertFalse(s.contains("for"));
   }
-
-  @Test
-  public void testRollbackTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    schema.people().beginTransaction(null);
-    ArrayList<Person> all = new ArrayList<>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.rollback();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(0, r.size());
-  }
-
-  @Test
-  public void testRollbackNoTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    ArrayList<Person> all = new ArrayList<Person>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.commit();
-    schema.rollback();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(1, r.size());
-  }
-
-  @Test
-  public void testCommitTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    schema.people().beginTransaction(null);
-    ArrayList<Person> all = new ArrayList<>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.commit();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(1, r.size());
-  }
 }
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java
index a1f6676..c193719 100644
--- a/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java
+++ b/src/test/java/com/google/gwtorm/schema/sql/DialectMaxDBTest.java
@@ -37,24 +37,16 @@
 import org.junit.Before;
 import org.junit.Test;
 
-import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
-public class DialectMaxDBTest {
+public class DialectMaxDBTest extends SqlDialectTest {
   private static final String MAXDB_URL_KEY = "maxdb.url";
   private static final String MAXDB_USER_KEY = "maxdb.user";
   private static final String MAXDB_PASSWORD_KEY = "maxdb.password";
   private static final String MAXDB_DRIVER = "com.sap.dbtech.jdbc.DriverSapDB";
-  private Connection db;
-  private JdbcExecutor executor;
-  private SqlDialect dialect;
-  private Database<PhoneBookDb> phoneBook;
-  private Database<PhoneBookDb2> phoneBook2;
 
   @Before
   public void setUp() throws Exception {
@@ -333,43 +325,4 @@
       p.close();
     }
   }
-
-  @Test
-  public void testRollbackTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    schema.people().beginTransaction(null);
-    ArrayList<Person> all = new ArrayList<>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.rollback();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(0, r.size());
-  }
-
-  @Test
-  public void testRollbackNoTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    ArrayList<Person> all = new ArrayList<Person>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.commit();
-    schema.rollback();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(1, r.size());
-  }
-
-  @Test
-  public void testCommitTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    schema.people().beginTransaction(null);
-    ArrayList<Person> all = new ArrayList<>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.commit();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(1, r.size());
-  }
 }
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java
index e092e56..3b31595 100644
--- a/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java
+++ b/src/test/java/com/google/gwtorm/schema/sql/DialectMySQLTest.java
@@ -20,10 +20,10 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeNoException;
 
-import com.google.gwtorm.data.PhoneBookDb;
-import com.google.gwtorm.data.PhoneBookDb2;
 import com.google.gwtorm.data.Address;
 import com.google.gwtorm.data.Person;
+import com.google.gwtorm.data.PhoneBookDb;
+import com.google.gwtorm.data.PhoneBookDb2;
 import com.google.gwtorm.jdbc.Database;
 import com.google.gwtorm.jdbc.JdbcExecutor;
 import com.google.gwtorm.jdbc.JdbcSchema;
@@ -34,22 +34,13 @@
 import org.junit.Before;
 import org.junit.Test;
 
-import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
-import java.util.ArrayList;
 import java.util.Collections;
-import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
-public class DialectMySQLTest {
-  private Connection db;
-  private JdbcExecutor executor;
-  private SqlDialect dialect;
-  private Database<PhoneBookDb> phoneBook;
-  private Database<PhoneBookDb2> phoneBook2;
-
+public class DialectMySQLTest extends SqlDialectTest {
   @Before
   public void setUp() throws Exception {
     Class.forName(com.mysql.jdbc.Driver.class.getName());
@@ -228,43 +219,4 @@
     assertTrue(s.contains("bar"));
     assertFalse(s.contains("for"));
   }
-
-  @Test
-  public void testRollbackTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    schema.people().beginTransaction(null);
-    ArrayList<Person> all = new ArrayList<>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.rollback();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(0, r.size());
-  }
-
-  @Test
-  public void testRollbackNoTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    ArrayList<Person> all = new ArrayList<Person>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.commit();
-    schema.rollback();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(1, r.size());
-  }
-
-  @Test
-  public void testCommitTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    schema.people().beginTransaction(null);
-    ArrayList<Person> all = new ArrayList<>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.commit();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(1, r.size());
-  }
 }
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java
index f0ced86..5e39c9b 100644
--- a/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java
+++ b/src/test/java/com/google/gwtorm/schema/sql/DialectOracleSQLTest.java
@@ -33,22 +33,14 @@
 import org.junit.Before;
 import org.junit.Test;
 
-import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
-import java.util.ArrayList;
 import java.util.Collections;
-import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
-public class DialectOracleSQLTest {
+public class DialectOracleSQLTest extends SqlDialectTest {
   private final static String ORACLE_DRIVER = "oracle.jdbc.driver.OracleDriver";
-  private Connection db;
-  private JdbcExecutor executor;
-  private SqlDialect dialect;
-  private Database<PhoneBookDb> phoneBook;
-  private Database<PhoneBookDb2> phoneBook2;
 
   @Before
   public void setUp() throws Exception {
@@ -229,43 +221,4 @@
     assertTrue(s.contains("bar"));
     assertFalse(s.contains("for"));
   }
-
-  @Test
-  public void testRollbackTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    schema.people().beginTransaction(null);
-    ArrayList<Person> all = new ArrayList<>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.rollback();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(0, r.size());
-  }
-
-  @Test
-  public void testRollbackNoTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    ArrayList<Person> all = new ArrayList<Person>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.commit();
-    schema.rollback();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(1, r.size());
-  }
-
-  @Test
-  public void testCommitTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    schema.people().beginTransaction(null);
-    ArrayList<Person> all = new ArrayList<>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.commit();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(1, r.size());
-  }
 }
diff --git a/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java b/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java
index ef0a067..ca9326c 100644
--- a/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java
+++ b/src/test/java/com/google/gwtorm/schema/sql/DialectPostgreSQLTest.java
@@ -20,10 +20,10 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeNoException;
 
-import com.google.gwtorm.data.PhoneBookDb;
-import com.google.gwtorm.data.PhoneBookDb2;
 import com.google.gwtorm.data.Address;
 import com.google.gwtorm.data.Person;
+import com.google.gwtorm.data.PhoneBookDb;
+import com.google.gwtorm.data.PhoneBookDb2;
 import com.google.gwtorm.jdbc.Database;
 import com.google.gwtorm.jdbc.JdbcExecutor;
 import com.google.gwtorm.jdbc.JdbcSchema;
@@ -34,22 +34,13 @@
 import org.junit.Before;
 import org.junit.Test;
 
-import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
-import java.util.ArrayList;
 import java.util.Collections;
-import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
-public class DialectPostgreSQLTest {
-  private Connection db;
-  private JdbcExecutor executor;
-  private SqlDialect dialect;
-  private Database<PhoneBookDb> phoneBook;
-  private Database<PhoneBookDb2> phoneBook2;
-
+public class DialectPostgreSQLTest extends SqlDialectTest {
   @Before
   public void setUp() throws Exception {
     Class.forName(org.postgresql.Driver.class.getName());
@@ -227,43 +218,4 @@
     assertTrue(s.contains("bar"));
     assertFalse(s.contains("for"));
   }
-
-  @Test
-  public void testRollbackTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    schema.people().beginTransaction(null);
-    ArrayList<Person> all = new ArrayList<>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.rollback();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(0, r.size());
-  }
-
-  @Test
-  public void testRollbackNoTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    ArrayList<Person> all = new ArrayList<Person>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.commit();
-    schema.rollback();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(1, r.size());
-  }
-
-  @Test
-  public void testCommitTransaction() throws SQLException, OrmException {
-    PhoneBookDb schema = phoneBook.open();
-    schema.updateSchema(executor);
-    schema.people().beginTransaction(null);
-    ArrayList<Person> all = new ArrayList<>();
-    all.add(new Person(new Person.Key("Bob"), 18));
-    schema.people().insert(all);
-    schema.commit();
-    List<Person> r = schema.people().olderThan(10).toList();
-    assertEquals(1, r.size());
-  }
 }
diff --git a/src/test/java/com/google/gwtorm/schema/sql/SqlDialectTest.java b/src/test/java/com/google/gwtorm/schema/sql/SqlDialectTest.java
new file mode 100644
index 0000000..ac8cd46
--- /dev/null
+++ b/src/test/java/com/google/gwtorm/schema/sql/SqlDialectTest.java
@@ -0,0 +1,78 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gwtorm.schema.sql;
+
+import static org.junit.Assert.assertEquals;
+
+import com.google.gwtorm.data.Person;
+import com.google.gwtorm.data.PhoneBookDb;
+import com.google.gwtorm.data.PhoneBookDb2;
+import com.google.gwtorm.jdbc.Database;
+import com.google.gwtorm.jdbc.JdbcExecutor;
+import com.google.gwtorm.server.OrmException;
+
+import org.junit.Test;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class SqlDialectTest {
+  protected JdbcExecutor executor;
+  protected Connection db;
+  protected SqlDialect dialect;
+  protected Database<PhoneBookDb> phoneBook;
+  protected Database<PhoneBookDb2> phoneBook2;
+
+  @Test
+  public void testRollbackTransaction() throws SQLException, OrmException {
+    PhoneBookDb schema = phoneBook.open();
+    schema.updateSchema(executor);
+    schema.people().beginTransaction(null);
+    ArrayList<Person> all = new ArrayList<>();
+    all.add(new Person(new Person.Key("Bob"), 18));
+    schema.people().insert(all);
+    schema.rollback();
+    List<Person> r = schema.people().olderThan(10).toList();
+    assertEquals(0, r.size());
+  }
+
+  @Test
+  public void testRollbackNoTransaction() throws Exception {
+    PhoneBookDb schema = phoneBook.open();
+    schema.updateSchema(executor);
+    ArrayList<Person> all = new ArrayList<>();
+    all.add(new Person(new Person.Key("Bob"), 18));
+    schema.people().insert(all);
+    schema.commit();
+    schema.rollback();
+    List<Person> r = schema.people().olderThan(10).toList();
+    assertEquals(1, r.size());
+  }
+
+  @Test
+  public void testCommitTransaction() throws Exception {
+    PhoneBookDb schema = phoneBook.open();
+    schema.updateSchema(executor);
+    schema.people().beginTransaction(null);
+    ArrayList<Person> all = new ArrayList<>();
+    all.add(new Person(new Person.Key("Bob"), 18));
+    schema.people().insert(all);
+    schema.commit();
+    List<Person> r = schema.people().olderThan(10).toList();
+    assertEquals(1, r.size());
+  }
+}