Created new test for date format strings

pull/14/head
Tim Su 14 years ago
parent a319a8967b
commit d45dbf4372

@ -3,7 +3,9 @@ package com.todoroo.andlib.test;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
import android.content.res.Configuration;
@ -20,10 +22,23 @@ import android.util.DisplayMetrics;
*/
abstract public class TranslationTests extends TodorooTestCase {
// --- abstract classes
// --- abstract methods
/**
* @return R.string.class
*/
public abstract Class<?> getStringResources();
/**
* @return R.array.class
*/
public abstract Class<?> getArrayResources();
/**
* @return array of fields that are parsed by SimpleDateFormat
*/
public abstract int[] getDateFormatStrings();
// --- tests
private static final class FormatStringData {
@ -142,7 +157,43 @@ abstract public class TranslationTests extends TodorooTestCase {
}
});
assertEquals(failures.toString(), 0, failures.length());
assertEquals(failures.toString(), 0, errorCount(failures));
}
/**
* Test that date formatters parse correctly
*/
public void testDateFormats() throws Exception {
final Resources r = getContext().getResources();
final StringBuilder failures = new StringBuilder();
final int[] dateStrings = getDateFormatStrings();
final Date date = new Date();
forEachLocale(new Runnable() {
public void run() {
Locale locale = r.getConfiguration().locale;
for(int i = 0; i < dateStrings.length; i++) {
try {
String string = r.getString(dateStrings[i]);
try {
new SimpleDateFormat(string).format(date);
} catch (Exception e) {
String name = r.getResourceName(dateStrings[i]);
failures.append(String.format("%s: invalid format string '%s': %s\n",
locale.toString(), name, e.getMessage()));
}
} catch (Exception e) {
String name = r.getResourceName(dateStrings[i]);
failures.append(String.format("%s: error opening %s: %s\n",
locale.toString(), name, e.getMessage()));
}
}
}
});
assertEquals(failures.toString(), 0, errorCount(failures));
}
/**
@ -170,11 +221,25 @@ abstract public class TranslationTests extends TodorooTestCase {
}
}
});
assertEquals(failures.toString(), 0, failures.length());
assertEquals(failures.toString(), 0, errorCount(failures));
}
// --- helper methods
/**
* Count newlines
*/
private int errorCount(StringBuilder failures) {
int count = 0;
int pos = -1;
while(true) {
pos = failures.indexOf("\n", pos + 1);
if(pos == -1)
return count;
count++;
}
}
/**
* @return an array of all string resource id's
*/

@ -17,4 +17,12 @@ public class AstridTranslationTests extends TranslationTests {
return R.string.class;
}
@Override
public int[] getDateFormatStrings() {
return new int[] {
R.string.dateFormatter,
R.string.alarmDateFormatter,
};
}
}

Loading…
Cancel
Save