Further unit tests: getVar()
authorChris Jaekl <cejaekl@yahoo.com>
Wed, 30 Dec 2015 09:35:17 +0000 (18:35 +0900)
committerChris Jaekl <cejaekl@yahoo.com>
Wed, 30 Dec 2015 09:35:17 +0000 (18:35 +0900)
prod/net/jaekl/cfb/store/DbStore.java
prod/net/jaekl/cfb/store/StoreException.java
test/net/jaekl/cfb/store/DbStoreTest.java

index b17a419626a69e4afbb692aaf01157df9fe3c3da..917dc48d55e41857fd2096620b7ddacf5b9f3bcd 100644 (file)
@@ -223,7 +223,7 @@ public class DbStore {
                return getVarId(vars.get(0));
        }
        
-       LocalVariable getVar(Long varId) throws SQLException, TypeMismatchException
+       LocalVariable getVar(Long varId) throws SQLException, TypeMismatchException, StoreException
        {
                if (null == varId) {
                        return null;
@@ -235,7 +235,7 @@ public class DbStore {
                
                List<Row> result = m_driver.select(m_con, columns, tables, conditions);
                if (result.size() < 1) {
-                       throw new SQLException("No variable found for ID " + varId);
+                       throw new StoreException(StoreException.Type.INVALID_VAR_ID, ""+varId);
                }
                if (result.size() > 1) {
                        throw new SQLException("Too many matches (" + result.size() + ") found for variable ID " + varId);
index b7d75816450814da88747a968314aa76e3dd4162..c1c3e785551b21b88cb5de81684ce3147fe3ca31 100644 (file)
@@ -8,7 +8,8 @@ public class StoreException extends CfbException {
        public enum Type {
                UNKNOWN_PATTERN,        // bug pattern type is not found in the message collection 
                UNKNOWN_CATEGORY,       // bug category is not found in the message collection
-               INVALID_LOC_ID          // the specified location ID is not found in the database
+               INVALID_LOC_ID,         // the specified location ID is not found in the database
+               INVALID_VAR_ID          // the specified variable ID is not found in the database
        }
        
        private Type m_type;
index 5c66c225fd38107d7e866d826bf43be269a68616..98656c81872c42af2a7a6466e5be6021d4ecc4c9 100644 (file)
@@ -23,6 +23,7 @@ import net.jaekl.cfb.db.driver.ConnectionMock;
 import net.jaekl.cfb.db.driver.DbDriverMock;
 import net.jaekl.cfb.util.Command;
 import net.jaekl.cfb.xml.BugCollection;
+import net.jaekl.cfb.xml.LocalVariable;
 import net.jaekl.cfb.xml.MessagesXmlData;
 
 import org.junit.Before;
@@ -274,4 +275,21 @@ public class DbStoreTest {
                        assertEquals(StoreException.Type.INVALID_LOC_ID, exc.getType());
                }
        }
+       
+       @Test
+       public void testGetVar_nullReturnsNull() throws SQLException, TypeMismatchException, StoreException {
+               LocalVariable var = m_store.getVar(null);
+               assertNull(var);
+       }
+       
+       @Test
+       public void testGetVar_invalidId() throws SQLException, TypeMismatchException {
+               try {
+                       m_store.getVar(Long.valueOf(-3));
+                       fail("Should have thrown a StoreException");
+               }
+               catch (StoreException exc) {
+                       assertEquals(StoreException.Type.INVALID_VAR_ID, exc.getType());
+               }
+       }
 }