svn commit: r19889 - trunk/tools/test-i18n-properties: . src src/org src/org/argouml src/org/argouml/i18n

[email protected] Thu, 21 Jun 2012 22:49:50 -0700 (PDT)
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: closettop_nightlybuild
Date: 2012-06-21 22:49:50-0700
New Revision: 19889

Added:
   trunk/tools/test-i18n-properties/
   trunk/tools/test-i18n-properties/.gitignore
   trunk/tools/test-i18n-properties/pom.xml
   trunk/tools/test-i18n-properties/src/
   trunk/tools/test-i18n-properties/src/org/
   trunk/tools/test-i18n-properties/src/org/argouml/
   trunk/tools/test-i18n-properties/src/org/argouml/i18n/
   trunk/tools/test-i18n-properties/src/org/argouml/i18n/CheckKey.java

Log:
Common part for test of i18n files.

Added a test case to be parameterized with all property bundles to be tested.

Submitted-by: Linus Tolke
Change-Id: Idcc51f3e7b1c40fbbb2215fe9e5c96c5f3c55294

Added: trunk/tools/test-i18n-properties/.gitignore
Url: http://argouml.tigris.org/source/browse/argouml/trunk/tools/test-i18n-properties/.gitignore?view=markup&pathrev=19889
==============================================================================
--- (empty file)
+++ trunk/tools/test-i18n-properties/.gitignore	2012-06-21 22:49:50-0700
@@ -0,0 +1 @@
+/target

Added: trunk/tools/test-i18n-properties/pom.xml
Url: http://argouml.tigris.org/source/browse/argouml/trunk/tools/test-i18n-properties/pom.xml?view=markup&pathrev=19889
==============================================================================
--- (empty file)
+++ trunk/tools/test-i18n-properties/pom.xml	2012-06-21 22:49:50-0700
@@ -0,0 +1,36 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.argouml</groupId>
+    <artifactId>parentpom</artifactId>
+    <version>0.35.2</version>
+    <relativePath>../maven/parentpom.xml</relativePath>
+  </parent>
+
+  <artifactId>test-i18n-properties</artifactId>
+  <version>0.35.1-SNAPSHOT</version>
+  <packaging>jar</packaging>
+
+  <properties>
+    <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.8.2</version>
+      <type>jar</type>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+
+  <name>test-i18n-properties</name>
+  <description>
+This is a project with test cases for internationalization.
+  </description>
+</project>

Added: trunk/tools/test-i18n-properties/src/org/argouml/i18n/CheckKey.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/tools/test-i18n-properties/src/org/argouml/i18n/CheckKey.java?view=markup&pathrev=19889
==============================================================================
--- (empty file)
+++ trunk/tools/test-i18n-properties/src/org/argouml/i18n/CheckKey.java	2012-06-21 22:49:50-0700
@@ -0,0 +1,136 @@
+/* $Id$
+ *******************************************************************************
+ * Copyright (c) 2012 Contributors - see below
+ * 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:
+ *    Linus Tolke
+ *******************************************************************************
+ */
+
+package org.argouml.i18n;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+
+/**
+ * Checks the contents of the internationalization property files.
+ * 
+ * This is a test case for property files. 
+ */
+public abstract class CheckKey {
+    /**
+     * Create the list of objects to test.
+     *
+     * @param currentLocale the Locale to test.
+     * @return a Collection of arrays of Objects.
+     */
+    public static Collection<Object[]> getKeysFor(Locale currentLocale) {
+	Collection<Object[]> retval = new ArrayList();
+	for (String bundleName : Arrays.asList(
+					       "aboutbox",
+					       "action",
+					       "button",
+					       "checkbox",
+					       "checklist",
+					       "combobox",
+					       "critics",
+					       "dialog",
+					       "filechooser",
+					       "label",
+					       "menu",
+					       "message",
+					       "misc",
+					       "mnemonic",
+					       "optionpane",
+					       "parsing",
+					       "profile",
+					       "statusmsg",
+					       "tab",
+					       "UMLResourceBundle",
+					       "wfr",
+                                               "cpp" // from cpp project
+					       )) {
+	    try {
+		ResourceBundle labels =
+		    ResourceBundle.getBundle("org.argouml.i18n." + bundleName,
+					     currentLocale);
+		ResourceBundle rootLabels =
+		    ResourceBundle.getBundle("org.argouml.i18n." + bundleName,
+					     Locale.ROOT);
+		for (String key : labels.keySet()) {
+		    retval.add(new Object[] { key, currentLocale, labels, rootLabels });
+		}
+	    } catch (MissingResourceException e) {
+		// There is no such file.
+	    }
+	}
+
+	return retval;
+    }
+
+    private String key;
+    private Locale currentLocale;
+    private ResourceBundle labels;
+    private ResourceBundle rootLabels;
+
+    public CheckKey(String theKey, Locale theLocale,
+		    ResourceBundle theLabels,
+		    ResourceBundle theRootLabels) {
+	key = theKey;
+	currentLocale = theLocale;
+	labels = theLabels;
+	rootLabels = theRootLabels;
+    }
+
+    /**
+     * Check that the key exists among the base keys.
+     */
+    @Test public void localizedKeyIsInOrigin() {
+	try {
+	    assertTrue("Key " + key + " is in use by the underlying application.",
+		       rootLabels.getString(key) instanceof String);
+	} catch (MissingResourceException e) {
+	    fail("Key " + key + " does not exist in root bundle.");
+	}
+    }
+
+    /**
+     * Check that the key is localized.
+     */
+    @Test public void keyIsLocalized() {
+	assertTrue("Key " + key + " localized for " + currentLocale + ".",
+		   labels.getString(key) != rootLabels.getString(key));
+    }
+
+    /**
+     * Check the validity of the localized contents.
+     */
+    @Test public void valueValid() {
+	String str = labels.getString(key);
+
+	for (int i = 0; i < str.length(); i++) {
+	    if (str.charAt(i) == '\n') {
+		continue;
+	    }
+	    if (str.charAt(i) >= 32 && str.charAt(i) < 128) {
+		continue;
+	    }
+	    fail("Char " + i + " of key " + key + " is " 
+		 + str.charAt(i)
+		 + " outside of allowed range in locale "
+		 + currentLocale + ".");
+	}
+    }
+}

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2972567

To unsubscribe from this discussion, e-mail: [[email protected]].