forked from upstream-mirrors/OpenTracks
e61b065f2b
- fix NPEs in TrackPointCreator.fill() - fix locale dependant tests - wait for UI components - extract utility functions into EspressoUtils
56 lines
1.6 KiB
Java
56 lines
1.6 KiB
Java
package de.dennisguse.opentracks;
|
|
|
|
import android.content.res.Configuration;
|
|
import android.content.res.Resources;
|
|
import android.util.DisplayMetrics;
|
|
|
|
import androidx.test.core.app.ApplicationProvider;
|
|
|
|
import org.junit.rules.TestRule;
|
|
import org.junit.runner.Description;
|
|
import org.junit.runners.model.Statement;
|
|
|
|
import java.util.Locale;
|
|
|
|
public class LocaleRule implements TestRule {
|
|
|
|
private final Locale[] mLocales;
|
|
private Locale mDeviceLocale;
|
|
|
|
|
|
public LocaleRule(Locale... locales) {
|
|
assert locales != null && locales.length > 0;
|
|
mLocales = locales;
|
|
}
|
|
|
|
@Override
|
|
public Statement apply(Statement base, Description description) {
|
|
return new Statement() {
|
|
@Override
|
|
public void evaluate() throws Throwable {
|
|
try {
|
|
mDeviceLocale = Locale.getDefault();
|
|
for (Locale locale : mLocales) {
|
|
setLocale(locale);
|
|
base.evaluate();
|
|
}
|
|
} finally {
|
|
if (mDeviceLocale != null) {
|
|
setLocale(mDeviceLocale);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
private void setLocale(Locale locale) {
|
|
Resources resources = ApplicationProvider.getApplicationContext().getResources();
|
|
Locale.setDefault(locale);
|
|
Configuration config = resources.getConfiguration();
|
|
config.setLocale(locale);
|
|
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
|
|
resources.updateConfiguration(config, displayMetrics);
|
|
}
|
|
|
|
}
|