Home | History | Annotate | Download | only in sql
      1 /*
      2  * Licensed to the Apache Software Foundation (ASF) under one or more
      3  * contributor license agreements.  See the NOTICE file distributed with
      4  * this work for additional information regarding copyright ownership.
      5  * The ASF licenses this file to You under the Apache License, Version 2.0
      6  * (the "License"); you may not use this file except in compliance with
      7  * the License.  You may obtain a copy of the License at
      8  *
      9  *     http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 package org.apache.harmony.sql.tests.java.sql;
     19 
     20 import java.lang.reflect.Field;
     21 import java.lang.reflect.Modifier;
     22 import java.util.HashMap;
     23 
     24 import junit.framework.TestCase;
     25 
     26 public class ConnectionTest extends TestCase {
     27 
     28     /*
     29      * Public statics test
     30      */
     31     public void testPublicStatics() {
     32 
     33         HashMap<String, Integer> thePublicStatics = new HashMap<String, Integer>();
     34         thePublicStatics.put("TRANSACTION_SERIALIZABLE", new Integer(8));
     35         thePublicStatics.put("TRANSACTION_REPEATABLE_READ", new Integer(4));
     36         thePublicStatics.put("TRANSACTION_READ_COMMITTED", new Integer(2));
     37         thePublicStatics.put("TRANSACTION_READ_UNCOMMITTED", new Integer(1));
     38         thePublicStatics.put("TRANSACTION_NONE", new Integer(0));
     39 
     40         /*
     41          * System.out.println( "TRANSACTION_SERIALIZABLE: " +
     42          * Connection.TRANSACTION_SERIALIZABLE ); System.out.println(
     43          * "TRANSACTION_REPEATABLE_READ: " +
     44          * Connection.TRANSACTION_REPEATABLE_READ ); System.out.println(
     45          * "TRANSACTION_READ_COMMITTED: " +
     46          * Connection.TRANSACTION_READ_COMMITTED ); System.out.println(
     47          * "TRANSACTION_READ_UNCOMMITTED: " +
     48          * Connection.TRANSACTION_READ_UNCOMMITTED ); System.out.println(
     49          * "TRANSACTION_NONE: " + Connection.TRANSACTION_NONE );
     50          */
     51 
     52         Class<?> connectionClass;
     53         try {
     54             connectionClass = Class.forName("java.sql.Connection");
     55         } catch (ClassNotFoundException e) {
     56             fail("java.sql.Connection class not found!");
     57             return;
     58         } // end try
     59 
     60         Field[] theFields = connectionClass.getDeclaredFields();
     61         int requiredModifier = Modifier.PUBLIC + Modifier.STATIC
     62                 + Modifier.FINAL;
     63 
     64         int countPublicStatics = 0;
     65         for (Field element : theFields) {
     66             String fieldName = element.getName();
     67             int theMods = element.getModifiers();
     68             if (Modifier.isPublic(theMods) && Modifier.isStatic(theMods)) {
     69                 try {
     70                     Object fieldValue = element.get(null);
     71                     Object expectedValue = thePublicStatics.get(fieldName);
     72                     if (expectedValue == null) {
     73                         fail("Field " + fieldName + " missing!");
     74                     } // end
     75                     assertEquals("Field " + fieldName + " value mismatch: ",
     76                             expectedValue, fieldValue);
     77                     assertEquals("Field " + fieldName + " modifier mismatch: ",
     78                             requiredModifier, theMods);
     79                     countPublicStatics++;
     80                 } catch (IllegalAccessException e) {
     81                     fail("Illegal access to Field " + fieldName);
     82                 } // end try
     83             } // end if
     84         } // end for
     85 
     86     } // end method testPublicStatics
     87 
     88 } // end class ConnectionTest
     89 
     90