From aefc7a5fdf518d3a0c07f848094a41b700150866 Mon Sep 17 00:00:00 2001 From: Sami Vaarala Date: Fri, 25 Jan 2013 22:08:39 +0200 Subject: [PATCH] java case conversion tool for manual testing --- src/CaseConversion.java | 76 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/CaseConversion.java diff --git a/src/CaseConversion.java b/src/CaseConversion.java new file mode 100644 index 00000000..804e50d2 --- /dev/null +++ b/src/CaseConversion.java @@ -0,0 +1,76 @@ +/* + * Helper to test Java case conversion (useful for comparison). + */ + +import java.util.Locale; +import java.util.Properties; + +public class CaseConversion { + public static final String dump(String x) throws Exception { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < x.length(); i++) { + if (i != 0) { sb.append(" "); } + sb.append(String.format("U+%04x", (int) x.charAt(i))); + } + return sb.toString(); + } + + public static final char getCharFromHex(String x) throws Exception { + return Character.toChars(Integer.valueOf(x, 16))[0]; + } + + /* Parse string as is, except recognize backslash followed by 'u' + * (4 hex digit escape), 'x' (2 hex digit escape) and another backslash + * (backslash escape). Note that when using this from a Unix shell, + * backslashes need to be escaped for the shell too. + */ + public static final String parseEscaped(String x) throws Exception { + StringBuffer sb = new StringBuffer(); + for (int i = 0;;) { + if (i == x.length()) { + break; + } else if (i > x.length()) { + throw new Exception("invalid input"); + } + char c = x.charAt(i); + if (c != '\\') { + sb.append(c); + i++; + } else { + c = x.charAt(i + 1); + if (c == 'x') { + sb.append(getCharFromHex(x.substring(i + 2, i + 4))); + i += 4; + } else if (c == 'u') { + sb.append(getCharFromHex(x.substring(i + 2, i + 6))); + i += 6; + } else if (c == '\\') { + sb.append('\\'); + i += 2; + } else { + throw new Exception("invalid input"); + } + } + } + return sb.toString(); + } + + public static final void main(String args[]) throws Exception { + Properties sysProps = System.getProperties(); + Locale locale = new Locale(args[0]); + String inputString = parseEscaped(args[1]); + String uc = inputString.toUpperCase(locale); + String lc = inputString.toLowerCase(locale); + + System.out.println("java.version: " + sysProps.getProperty("java.version")); + System.out.println("java.vendor: " + sysProps.getProperty("java.vendor")); + System.out.println("java.vendor.url: " + sysProps.getProperty("java.vendor.url")); + System.out.println("java.vm.version: " + sysProps.getProperty("java.vm.version")); + System.out.println("java.vm.vendor: " + sysProps.getProperty("java.vm.vendor")); + System.out.println("java.vm.name: " + sysProps.getProperty("java.vm.name")); + System.out.println("Locale: " + locale); + System.out.println("Input: " + dump(inputString)); + System.out.println("toUpperCase: " + dump(uc)); + System.out.println("toLowerCase: " + dump(lc)); + } +}