Package org.apache.jmeter.resources

Source Code of org.apache.jmeter.resources.PackageTest

// $Header: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/resources/PackageTest.java,v 1.8.2.1 2004/05/20 15:23:12 mstover1 Exp $
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* 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 org.apache.jmeter.resources;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
import java.util.MissingResourceException;
import java.util.PropertyResourceBundle;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/*
* Created on Nov 29, 2003
*
* Test the composition of the properties files
* - properties files exist (default, DE, NO, JA)
* - properties files don't have duplicate keys
* - non-default properties files don't have any extra keys.
*
* N.B. If there is a default resource, ResourceBundle does not detect missing resources,
* i.e. the presence of messages.properties means that the ResourceBundle for Locale "XYZ"
* would still be found, and have the same keys as the default. This makes it not very
* useful for checking properties files.
*
* This is why the tests use Class.getResourceAsStream() etc
*
* The tests don't quite follow the normal JUnit test strategy of one test
* per possible failure. This was done in order to make it easier to report
* exactly why the tests failed.
*/

/**
* @version $Revision: 1.8.2.1 $ $Date: 2004/05/20 15:23:12 $
*/
public class PackageTest extends TestCase
{

    //private static List defaultList = null;
    private static PropertyResourceBundle defaultPRB;
   
    // Read resource into ResourceBundle and store in List
    private PropertyResourceBundle getRAS(String res) throws Exception{
      InputStream ras = this.getClass().getResourceAsStream(res);
      return new PropertyResourceBundle(ras);
    }

    //  Read resource file saving the keys
    private void readRF(String res, List l) throws Exception
    {
    InputStream ras = this.getClass().getResourceAsStream(res);
    BufferedReader fileReader =
    new BufferedReader(new InputStreamReader(ras));
         String s;
        while((s=fileReader.readLine())!=null)
        {
             if (s.length() > 0 && !s.startsWith("#"))  {
               l.add(s.substring(0,s.indexOf('=')));
             }
         }
    }
   
    // Helper method to construct resource name
    private static String getResName(String lang){
      if (lang.length()==0){
      return "messages.properties";
      } else {
      return "messages_"+lang.toLowerCase()+".properties";
      }
    }
 
  /*
   * perform the checks on the resources
   *
   */
  private void check(String resname) throws Exception
  {
    ArrayList alf = new ArrayList(500);// holds keys from file
    String res = getResName(resname);
    readRF(res,alf);
    Collections.sort(alf);
   
    // Look for duplicate keys in the file
    String last="";
    for (int i=0;i<alf.size();i++){
      String curr = (String) alf.get(i);
      if (curr.equals(last)){
        subTestFailures++;
        System.out.println("\nDuplicate key ="+curr+" in "+res);
      }
      last=curr;
    }
   
    if (resname.length()==0) // Must be the default resource file
    {
      defaultPRB = getRAS(res);
    }
    else
    {
      // Check all the keys are in the default props file
      Enumeration enum = getRAS(res).getKeys();
      while(enum.hasMoreElements())
      {
        String key = null;
        try
        {
            key = (String)enum.nextElement();
              defaultPRB.getString(key);
        }
        catch (MissingResourceException e)
        {
          subTestFailures++;
          System.out.println("Locale: "+resname+" has unexpected key: "+ key);
        }
      }
    }

    if (subTestFailures > 0) {
      fail("One or more subtests failed");
    }
  }
 
  /*
   * Use a suite to ensure that the default is done first
   */
  public static Test suite(){
    TestSuite ts=new TestSuite();
    ts.addTest(new PackageTest("atestDefault"));
    ts.addTest(new PackageTest("atestDE"));
    ts.addTest(new PackageTest("atestNO"));
    ts.addTest(new PackageTest("atestJA"));
    return ts;
  }

    private int subTestFailures;

    public PackageTest(String string)
    {
        super(string);
        subTestFailures=0;
    }

    public void atestDE() throws Exception
  {
    check("DE");
  }

    public void atestJA() throws Exception
  {
    check("JA");
  }
  public void atestNO() throws Exception
  {
    check("NO");
  }
  public void atestDefault() throws Exception
  {
    check("");
  }
}
TOP

Related Classes of org.apache.jmeter.resources.PackageTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.