/* * #! * Ontopia Vizigator * #- * Copyright (C) 2001 - 2013 The Ontopia Project * #- * 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 net.ontopia.topicmaps.viz; import java.io.InputStream; import java.io.IOException; import java.util.List; import java.util.ArrayList; import java.util.Properties; import net.ontopia.utils.StringUtils; import junit.framework.TestCase; public class ResourceBundlesTest extends TestCase { public ResourceBundlesTest(String name) { super(name); } /** * Checks all properties files in a given directory for consistency * against the master file. Note that the properties are loaded from * the classpath. */ public void testTranslationsAreConsistent() throws IOException { String languages[] = { "de", "no", "ja" }; Properties master = loadProperties("messages.properties"); for (int ix = 0; ix < languages.length; ix++) { String file = "messages_" + languages[ix] + ".properties"; Properties trans = loadProperties(file); List missing = new ArrayList(); List extra = new ArrayList(); for (Object prop : trans.keySet()) { if (!master.containsKey(prop)) extra.add(prop); } for (Object prop : master.keySet()) { if (!trans.containsKey(prop)) missing.add(prop); } assertTrue(buildReport(file, missing, extra), missing.isEmpty() && extra.isEmpty()); } } private Properties loadProperties(String file) throws IOException { Properties props = new Properties(); InputStream inputStream = VizController.class.getResourceAsStream(file); props.load(inputStream); inputStream.close(); return props; } /** * Builds a readable error message listing everything that's wrong. */ private String buildReport(String file, List missing, List extra) { String msg = file; if (!missing.isEmpty()) msg += " is missing: " + StringUtils.join(missing, ", "); if (!extra.isEmpty()) msg += " has extra: " + StringUtils.join(extra, ", "); return msg; } }