package net.sf.openrocket; import java.util.Collections; import java.util.Locale; import java.util.Set; import java.util.concurrent.atomic.AtomicReference; import java.util.prefs.BackingStoreException; import net.sf.openrocket.formatting.RocketDescriptor; import net.sf.openrocket.formatting.RocketDescriptorImpl; import net.sf.openrocket.l10n.DebugTranslator; import net.sf.openrocket.l10n.ResourceBundleTranslator; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.preset.ComponentPreset; import net.sf.openrocket.preset.ComponentPreset.Type; import net.sf.openrocket.startup.Preferences; import com.google.inject.AbstractModule; import com.google.inject.Provider; public class ServicesForTesting extends AbstractModule { @Override protected void configure() { bind(Preferences.class).to(PreferencesForTesting.class); bind(Translator.class).toProvider(TranslatorProviderForTesting.class); bind(RocketDescriptor.class).to(RocketDescriptorImpl.class); } public static class TranslatorProviderForTesting implements Provider<Translator> { private AtomicReference<Translator> translator = new AtomicReference<Translator>(); @Override public Translator get() { Translator oldTranslator = translator.get(); if (oldTranslator != null) { return oldTranslator; } Locale.setDefault(Locale.US); // Setup the translator Translator newTranslator; newTranslator = new ResourceBundleTranslator("l10n.messages"); if (Locale.getDefault().getLanguage().equals("xx")) { newTranslator = new DebugTranslator(newTranslator); } if (translator.compareAndSet(null, newTranslator)) { return newTranslator; } else { return translator.get(); } } } public static class PreferencesForTesting extends Preferences { private static java.util.prefs.Preferences root = null; @Override public boolean getBoolean(String key, boolean defaultValue) { // TODO Auto-generated method stub return false; } @Override public void putBoolean(String key, boolean value) { // TODO Auto-generated method stub } @Override public int getInt(String key, int defaultValue) { // TODO Auto-generated method stub return 0; } @Override public void putInt(String key, int value) { // TODO Auto-generated method stub } @Override public double getDouble(String key, double defaultValue) { // TODO Auto-generated method stub return 0; } @Override public void putDouble(String key, double value) { // TODO Auto-generated method stub } @Override public String getString(String key, String defaultValue) { // TODO Auto-generated method stub return null; } @Override public void putString(String key, String value) { // TODO Auto-generated method stub } @Override public String getString(String directory, String key, String defaultValue) { // TODO Auto-generated method stub return null; } @Override public void putString(String directory, String key, String value) { // TODO Auto-generated method stub } @Override public void addUserMaterial(Material m) { // TODO Auto-generated method stub } @Override public Set<Material> getUserMaterials() { return Collections.<Material> emptySet(); } @Override public void removeUserMaterial(Material m) { // TODO Auto-generated method stub } @Override public void setComponentFavorite(ComponentPreset preset, Type type, boolean favorite) { // TODO Auto-generated method stub } @Override public Set<String> getComponentFavorites(Type type) { // TODO Auto-generated method stub return null; } @Override public java.util.prefs.Preferences getNode(String nodeName) { return getBaseNode().node(nodeName); } private java.util.prefs.Preferences getBaseNode() { if (root == null) { final String name = "OpenRocket-unittest-" + System.currentTimeMillis(); root = java.util.prefs.Preferences.userRoot().node(name); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { try { root.removeNode(); } catch (BackingStoreException e) { e.printStackTrace(); } } }); } return root; } } }