/******************************************************************************* * Copyright (c) 2004 Actuate Corporation. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Actuate Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.birt.report.model.metadata; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Properties; import junit.framework.TestCase; import org.eclipse.birt.report.model.api.ModelException; /** * Test case for MetaDataException. */ public class MetaDataExceptionTest extends TestCase { /* * @see TestCase#setUp() */ protected void setUp( ) throws Exception { super.setUp( ); } /** * Check to see each error code has there description in the * "MetaError.properties". * * @throws IOException * @throws IllegalAccessException * @throws IllegalArgumentException */ public void testCheckMetaErrorConsistency( ) throws IOException, IllegalArgumentException, IllegalAccessException { Properties props = new Properties( ); props.load( MetaDataException.class .getResourceAsStream( MetaDataException.ERROR_FILE ) ); int PUBLIC_FINAL_STATIC = Modifier.PUBLIC | Modifier.FINAL | Modifier.STATIC; boolean success = true; Field[] fields = MetaDataException.class.getDeclaredFields( ); String errorCode = null; for ( int i = 0; i < fields.length; i++ ) { Field field = fields[i]; if ( PUBLIC_FINAL_STATIC == field.getModifiers( ) ) { errorCode = (String) fields[i].get( null ); if ( errorCode.equalsIgnoreCase( ModelException.PLUGIN_ID ) ) continue; if ( !props.containsKey( errorCode ) ) { System.out .println( "MetaDataException ErrorCode: " + errorCode + " not described in 'MetaError.properties'." ); //$NON-NLS-1$ //$NON-NLS-2$ success = false; } } } assertTrue( success ); } }