* SimpleDateFormat localization
@ 2005-02-02 0:58 Andrew John Hughes
0 siblings, 0 replies; only message in thread
From: Andrew John Hughes @ 2005-02-02 0:58 UTC (permalink / raw)
To: mauve-patches
[-- Attachment #1.1: Type: text/plain, Size: 954 bytes --]
I'm committing the attached patch to test that the java.text.SimpleDateFormat
class properly handles localized pattern characters at appopriate points.
Changelog:
2005-02-02 Andrew John Hughes <gnu_andrew@member.fsf.org>
* gnu/testlet/java/text/SimpleDateFormat/Localization.java:
Check that the class properly translates to and from localized
pattern strings, and that the constructor only handles
non-localized patterns.
Thanks,
--
Andrew :-)
Please avoid sending me Microsoft Office (e.g. Word, PowerPoint) attachments.
See http://www.fsf.org/philosophy/no-word-attachments.html
No software patents in Europe -- http://nosoftwarepatents.com
"Value your freedom, or you will lose it, teaches history.
`Don't bother us with politics' respond those who don't want to learn."
-- Richard Stallman
"We've all been part of the biggest beta test the world has ever known --
Windows"
-- Victor Wheatman, Gartner
[-- Attachment #1.2: dateformat-03.diff --]
[-- Type: text/plain, Size: 5253 bytes --]
Index: gnu/testlet/java/text/SimpleDateFormat/Localization.java
===================================================================
RCS file: gnu/testlet/java/text/SimpleDateFormat/Localization.java
diff -N gnu/testlet/java/text/SimpleDateFormat/Localization.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/text/SimpleDateFormat/Localization.java 2 Feb 2005 00:55:21 -0000
@@ -0,0 +1,143 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// This file is part of Mauve.
+
+// Mauve is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// Mauve is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Mauve; see the file COPYING. If not, write to
+// the Free Software Foundation, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA. */
+
+package gnu.testlet.java.text.SimpleDateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+import java.text.SimpleDateFormat;
+
+/**
+ * Check for correct cloning behaviour in the SimpleDateFormat
+ * class.
+ */
+public class Localization
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleDateFormat format = null;
+ String standard = "GyMdkHmsSEDFwWahKzYeugAZ";
+ String pattern = "EEE, d MMM yyyy HH:mm:ss Z";
+ harness.checkPoint("German locale, standard pattern characters " +
+ "in pattern.");
+ try
+ {
+ format = new SimpleDateFormat(pattern, Locale.GERMAN);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ String local = format.getDateFormatSymbols().getLocalPatternChars();
+ harness.check(format.toPattern(), pattern, "Non-localized pattern " +
+ "comes back as is with toPattern().");
+ String localizedPattern = translateLocalizedPattern(pattern,
+ standard,
+ local);
+ harness.check(format.toLocalizedPattern(), localizedPattern,
+ "Non-localized pattern comes back localized with " +
+ "toLocalizedPattern().");
+ harness.checkPoint("German locale, German pattern characters in pattern.");
+ format = null;
+ try
+ {
+ format = new SimpleDateFormat(localizedPattern, Locale.GERMAN);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ try
+ {
+ format = new SimpleDateFormat(pattern, Locale.GERMAN);
+ format.applyLocalizedPattern(localizedPattern);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ local = format.getDateFormatSymbols().getLocalPatternChars();
+ harness.check(format.toLocalizedPattern(), localizedPattern,
+ "Localized pattern comes back as is with " +
+ "toLocalizedPattern().");
+ harness.check(format.toPattern(), pattern,
+ "Localized pattern comes back standardised with " +
+ "toPattern().");
+ }
+
+ /* Taken from GNU Classpath's java.text.SimpleDateFormat */
+ // Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004 Free Software
+ // Foundation, Inc.
+ /* This version has been altered to account for differing char lengths */
+
+ /**
+ * Translates either from or to a localized variant of the pattern
+ * string. For example, in the German locale, 't' (for 'tag') is
+ * used instead of 'd' (for 'date'). This method translates
+ * a localized pattern (such as 'ttt') to a non-localized pattern
+ * (such as 'ddd'), or vice versa. Non-localized patterns use
+ * a standard set of characters, which match those of the U.S. English
+ * locale.
+ *
+ * @param pattern the pattern to translate.
+ * @param oldChars the old set of characters (used in the pattern).
+ * @param newChars the new set of characters (which will be used in the
+ * pattern).
+ * @return a version of the pattern using the characters in
+ * <code>newChars</code>.
+ */
+ private String translateLocalizedPattern(String pattern,
+ String oldChars, String newChars)
+ {
+ int len = pattern.length();
+ StringBuffer buf = new StringBuffer(len);
+ boolean quoted = false;
+ for (int i = 0; i < len; i++)
+ {
+ char ch = pattern.charAt(i);
+ if (ch == '\'')
+ quoted = ! quoted;
+ if (! quoted)
+ {
+ int j = oldChars.indexOf(ch);
+ if ((j >= 0) && j < newChars.length())
+ ch = newChars.charAt(j);
+ }
+ buf.append(ch);
+ }
+ return buf.toString();
+ }
+
+}
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-02-02 0:58 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-02-02 0:58 SimpleDateFormat localization Andrew John Hughes
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).