1package com.xtremelabs.robolectric.util; 2 3import com.xtremelabs.robolectric.WithTestDefaultsRunner; 4import com.xtremelabs.robolectric.util.DatabaseConfig.DatabaseMap; 5import com.xtremelabs.robolectric.util.DatabaseConfig.NullDatabaseMapException; 6import org.junit.Before; 7import org.junit.Test; 8import org.junit.runner.RunWith; 9 10import java.sql.ResultSet; 11 12import static org.hamcrest.CoreMatchers.equalTo; 13import static org.junit.Assert.assertThat; 14 15@RunWith(WithTestDefaultsRunner.class) 16public class DatabaseConfigTest { 17 18 @Before 19 public void setup() { 20 DatabaseConfig.setDatabaseMap(new H2Map()); 21 } 22 23 @Test 24 public void testSettingDatabaseMapLoadsCorrectly() throws Exception { 25 assertThat(DatabaseConfig.getDatabaseMap().getClass().getName(), equalTo(H2Map.class.getName())); 26 assertThat(DatabaseConfig.isMapLoaded(), equalTo(false)); 27 DatabaseConfig.getMemoryConnection(); //load map 28 assertThat(DatabaseConfig.isMapLoaded(), equalTo(true)); 29 assertThat(DatabaseConfig.getResultSetType(), equalTo(ResultSet.TYPE_SCROLL_INSENSITIVE)); 30 31 H2Map_TypeForwardOnly ForwardOnlyMap = new H2Map_TypeForwardOnly(); 32 DatabaseConfig.setDatabaseMap(ForwardOnlyMap); 33 assertThat(DatabaseConfig.isMapLoaded(), equalTo(false)); 34 assertThat(DatabaseConfig.getDatabaseMap(), equalTo((DatabaseMap) ForwardOnlyMap)); 35 DatabaseConfig.getMemoryConnection(); //load map 36 assertThat(DatabaseConfig.isMapLoaded(), equalTo(true)); 37 assertThat(DatabaseConfig.getDatabaseMap().getClass().getName(), equalTo(H2Map_TypeForwardOnly.class.getName())); 38 assertThat(DatabaseConfig.getResultSetType(), equalTo(ResultSet.TYPE_FORWARD_ONLY)); 39 } 40 41 @Test 42 public void testMapIsNotNull() throws Exception { 43 assertThat(DatabaseConfig.isMapNull(), equalTo(false)); 44 } 45 46 private void setDatabaseMapNull() { 47 DatabaseConfig.setDatabaseMap(null); 48 assertThat(DatabaseConfig.isMapNull(), equalTo(true)); 49 assertThat(DatabaseConfig.isMapLoaded(), equalTo(false)); 50 } 51 52 @Test(expected = NullDatabaseMapException.class) 53 public void testLoadingNullMapThrowsException() throws Exception { 54 setDatabaseMapNull(); 55 DatabaseConfig.getMemoryConnection(); //attempt to load driver for map and throw exception 56 } 57 58 @Test(expected = NullDatabaseMapException.class) 59 public void testGetScrubSQLThrowsExceptionWithNullMap() throws Exception { 60 setDatabaseMapNull(); 61 DatabaseConfig.getScrubSQL(""); 62 } 63 64 @Test(expected = NullDatabaseMapException.class) 65 public void testGetSelectLastInsertIdentityThrowsExceptionWithNullMap() throws Exception { 66 setDatabaseMapNull(); 67 DatabaseConfig.getSelectLastInsertIdentity(); 68 } 69 70 @Test(expected = NullDatabaseMapException.class) 71 public void testGetResultSetTypeThrowsExceptionWithNullMap() throws Exception { 72 setDatabaseMapNull(); 73 DatabaseConfig.getResultSetType(); 74 } 75 76 @Test 77 public void testGetScrubSQL() throws Exception { 78 assertThat(DatabaseConfig.getScrubSQL("autoincrement"), equalTo(DatabaseConfig.getDatabaseMap().getScrubSQL("autoincrement"))); 79 } 80 81 @Test 82 public void testGetSelectLastInsertIdentity() throws Exception { 83 assertThat(DatabaseConfig.getSelectLastInsertIdentity(), equalTo(DatabaseConfig.getDatabaseMap().getSelectLastInsertIdentity())); 84 } 85 86 @Test 87 public void testGetResultSetType() throws Exception { 88 assertThat(DatabaseConfig.getResultSetType(), equalTo(DatabaseConfig.getDatabaseMap().getResultSetType())); 89 } 90} 91