< prev index next >

test/java/text/Format/DateFormat/Bug4322313.java

Print this page




  33 import java.text.*;
  34 import java.util.*;
  35 
  36 public class Bug4322313 extends IntlTest {
  37 
  38     public void Test4322313() {
  39         Locale savedLocale = Locale.getDefault();
  40         TimeZone savedTimeZone = TimeZone.getDefault();
  41         boolean err = false;
  42         long mpm = 60 * 1000;   /* Milliseconds per a minute */
  43 
  44         Locale[] locs = {Locale.US, Locale.JAPAN, Locale.UK, new Locale("ar")};
  45 
  46         String[] formats = {
  47             "z",
  48             "Z",
  49         };
  50 
  51         Object[][] valids = {
  52           /* given ID      offset                format('z'), ('Z')    index */
  53             {"GMT+03:04",  new Long(-184 * mpm), "GMT+03:04", "+0304", new Integer(9)},
  54             {"GMT+13:42",  new Long(-822 * mpm), "GMT+13:42", "+1342", new Integer(9)},
  55             {"GMT+00:00",  new Long(0),          "GMT+00:00", "+0000", new Integer(9)},
  56             {"GMT+1:11",   new Long(-71 * mpm),  "GMT+01:11", "+0111", new Integer(8)},
  57             {"GMT +13:42", new Long(0),          "GMT",       "+0000", new Integer(3)},
  58             {" GMT",       new Long(0),          "GMT",       "+0000", new Integer(4)},
  59             {"+0304",      new Long(-184 * mpm), "GMT+03:04", "+0304", new Integer(5)},
  60             {"+1342",      new Long(-822 * mpm), "GMT+13:42", "+1342", new Integer(5)},
  61             {"+0000",      new Long(0),          "GMT+00:00", "+0000", new Integer(5)},
  62             {" +1342",     new Long(-822 * mpm), "GMT+13:42", "+1342", new Integer(6)},
  63             /* ISO-LATIN-1 digits */
  64             {"GMT+\u0030\u0031:\u0032\u0033", new Long(-83 * mpm), "GMT+01:23", "+0123", new Integer(9)},
  65 
  66            /* In fact, this test case is skipped because TimeZone class can't
  67             * recognize TimeZone IDs like "+00234" or "-00234".
  68             */
  69             {"+00234",     new Long(-23 * mpm), "GMT+00:23", "+0023", new Integer(5)},
  70 
  71             {"GMT-03:04",  new Long(184 * mpm), "GMT-03:04", "-0304", new Integer(9)},
  72             {"GMT-13:42",  new Long(822 * mpm), "GMT-13:42", "-1342", new Integer(9)},
  73             {"GMT-00:00",  new Long(0),         "GMT+00:00", "+0000", new Integer(9)},
  74             {"GMT-1:11",   new Long(71 * mpm),  "GMT-01:11", "-0111", new Integer(8)},
  75             {"GMT -13:42", new Long(0),         "GMT",       "+0000", new Integer(3)},
  76             {"-0304",      new Long(184 * mpm), "GMT-03:04", "-0304", new Integer(5)},
  77             {"-1342",      new Long(822 * mpm), "GMT-13:42", "-1342", new Integer(5)},
  78             {" -1342",     new Long(822 * mpm), "GMT-13:42", "-1342", new Integer(6)},
  79             /* ISO-LATIN-1 digits */
  80             {"GMT-\u0030\u0031:\u0032\u0033", new Long(83 * mpm), "GMT-01:23", "-0123", new Integer(9)},
  81            /* In fact, this test case is skipped because TimeZone class can't
  82             * recognize TimeZone IDs like "+00234" or "-00234".
  83             */
  84             {"-00234",     new Long(23 * mpm),  "GMT+00:23", "-0023", new Integer(5)},
  85         };
  86 
  87         Object[][] invalids = {
  88           /* given ID       error index   */
  89             {"GMT+8",       new Integer(5)},
  90             {"GMT+18",      new Integer(6)},
  91             {"GMT+208",     new Integer(6)},
  92             {"GMT+0304",    new Integer(6)},
  93             {"GMT+42195",   new Integer(5)},
  94             {"GMT+5:8",     new Integer(7)},
  95             {"GMT+23:60",   new Integer(8)},
  96             {"GMT+11:1",    new Integer(8)},
  97             {"GMT+24:13",   new Integer(5)},
  98             {"GMT+421:950", new Integer(5)},
  99             {"GMT+0a:0A",   new Integer(5)},
 100             {"GMT+ 13:42",  new Integer(4)},
 101             {"GMT+13 :42",  new Integer(6)},
 102             {"GMT+13: 42",  new Integer(7)},
 103             {"GMT+-13:42",  new Integer(4)},
 104             {"G M T",       new Integer(0)},
 105             {"+8",          new Integer(2)},
 106             {"+18",         new Integer(3)},
 107             {"+208",        new Integer(4)},
 108             {"+2360",       new Integer(4)},
 109             {"+2413",       new Integer(2)},
 110             {"+42195",      new Integer(2)},
 111             {"+0AbC",       new Integer(2)},
 112             {"+ 1342",      new Integer(1)},
 113             {"+-1342",      new Integer(1)},
 114             {"1342",        new Integer(0)},
 115           /* Arabic-Indic digits */
 116             {"GMT+\u0660\u0661:\u0662\u0663", new Integer(4)},
 117           /* Extended Arabic-Indic digits */
 118             {"GMT+\u06f0\u06f1:\u06f2\u06f3", new Integer(4)},
 119           /* Devanagari digits */
 120             {"GMT+\u0966\u0967:\u0968\u0969", new Integer(4)},
 121           /* Fullwidth digits */
 122             {"GMT+\uFF10\uFF11:\uFF12\uFF13", new Integer(4)},
 123 
 124             {"GMT-8",       new Integer(5)},
 125             {"GMT-18",      new Integer(6)},
 126             {"GMT-208",     new Integer(6)},
 127             {"GMT-0304",    new Integer(6)},
 128             {"GMT-42195",   new Integer(5)},
 129             {"GMT-5:8",     new Integer(7)},
 130             {"GMT-23:60",   new Integer(8)},
 131             {"GMT-11:1",    new Integer(8)},
 132             {"GMT-24:13",   new Integer(5)},
 133             {"GMT-421:950", new Integer(5)},
 134             {"GMT-0a:0A",   new Integer(5)},
 135             {"GMT- 13:42",  new Integer(4)},
 136             {"GMT-13 :42",  new Integer(6)},
 137             {"GMT-13: 42",  new Integer(7)},
 138             {"GMT-+13:42",  new Integer(4)},
 139             {"-8",          new Integer(2)},
 140             {"-18",         new Integer(3)},
 141             {"-208",        new Integer(4)},
 142             {"-2360",       new Integer(4)},
 143             {"-2413",       new Integer(2)},
 144             {"-42195",      new Integer(2)},
 145             {"-0AbC",       new Integer(2)},
 146             {"- 1342",      new Integer(1)},
 147             {"--1342",      new Integer(1)},
 148             {"-802",        new Integer(2)},
 149           /* Arabic-Indic digits */
 150             {"GMT-\u0660\u0661:\u0662\u0663", new Integer(4)},
 151           /* Extended Arabic-Indic digits */
 152             {"GMT-\u06f0\u06f1:\u06f2\u06f3", new Integer(4)},
 153           /* Devanagari digits */
 154             {"GMT-\u0966\u0967:\u0968\u0969", new Integer(4)},
 155           /* Fullwidth digits */
 156             {"GMT-\uFF10\uFF11:\uFF12\uFF13", new Integer(4)},
 157         };
 158 
 159         try {
 160             for (int i=0; i < locs.length; i++) {
 161                 Locale locale = locs[i];
 162                 Locale.setDefault(locale);
 163 
 164                 for (int j=0; j < formats.length; j++) {
 165                     TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
 166                     SimpleDateFormat sdf = new SimpleDateFormat(formats[j]);
 167                     Date date;
 168 
 169                     /* Okay case */
 170                     for (int k=0; k < valids.length; k++) {
 171                         ParsePosition pos = new ParsePosition(0);
 172                         try {
 173                             date = sdf.parse((String)valids[k][0], pos);
 174                         }
 175                         catch (Exception e) {
 176                             err = true;




  33 import java.text.*;
  34 import java.util.*;
  35 
  36 public class Bug4322313 extends IntlTest {
  37 
  38     public void Test4322313() {
  39         Locale savedLocale = Locale.getDefault();
  40         TimeZone savedTimeZone = TimeZone.getDefault();
  41         boolean err = false;
  42         long mpm = 60 * 1000;   /* Milliseconds per a minute */
  43 
  44         Locale[] locs = {Locale.US, Locale.JAPAN, Locale.UK, new Locale("ar")};
  45 
  46         String[] formats = {
  47             "z",
  48             "Z",
  49         };
  50 
  51         Object[][] valids = {
  52           /* given ID      offset                format('z'), ('Z')    index */
  53             {"GMT+03:04",  -184L * mpm, "GMT+03:04", "+0304", 9},
  54             {"GMT+13:42",  -822L * mpm, "GMT+13:42", "+1342", 9},
  55             {"GMT+00:00",   0L,         "GMT+00:00", "+0000", 9},
  56             {"GMT+1:11",   -71L * mpm,  "GMT+01:11", "+0111", 8},
  57             {"GMT +13:42",  0L,         "GMT",       "+0000", 3},
  58             {" GMT",        0L,         "GMT",       "+0000", 4},
  59             {"+0304",      -184L * mpm, "GMT+03:04", "+0304", 5},
  60             {"+1342",      -822L * mpm, "GMT+13:42", "+1342", 5},
  61             {"+0000",       0L,         "GMT+00:00", "+0000", 5},
  62             {" +1342",     -822L * mpm, "GMT+13:42", "+1342", 6},
  63             /* ISO-LATIN-1 digits */
  64             {"GMT+\u0030\u0031:\u0032\u0033", -83L * mpm, "GMT+01:23", "+0123", 9},
  65 
  66            /* In fact, this test case is skipped because TimeZone class can't
  67             * recognize TimeZone IDs like "+00234" or "-00234".
  68             */
  69             {"+00234",     -23L * mpm, "GMT+00:23", "+0023", 5},
  70 
  71             {"GMT-03:04",  184L * mpm, "GMT-03:04", "-0304", 9},
  72             {"GMT-13:42",  822L * mpm, "GMT-13:42", "-1342", 9},
  73             {"GMT-00:00",  0L,         "GMT+00:00", "+0000", 9},
  74             {"GMT-1:11",   71L * mpm,  "GMT-01:11", "-0111", 8},
  75             {"GMT -13:42", 0L,         "GMT",       "+0000", 3},
  76             {"-0304",      184L * mpm, "GMT-03:04", "-0304", 5},
  77             {"-1342",      822L * mpm, "GMT-13:42", "-1342", 5},
  78             {" -1342",     822L * mpm, "GMT-13:42", "-1342", 6},
  79             /* ISO-LATIN-1 digits */
  80             {"GMT-\u0030\u0031:\u0032\u0033", 83L * mpm, "GMT-01:23", "-0123", 9},
  81            /* In fact, this test case is skipped because TimeZone class can't
  82             * recognize TimeZone IDs like "+00234" or "-00234".
  83             */
  84             {"-00234",     23L * mpm,  "GMT+00:23", "-0023", 5},
  85         };
  86 
  87         Object[][] invalids = {
  88           /* given ID       error index   */
  89             {"GMT+8",       5},
  90             {"GMT+18",      6},
  91             {"GMT+208",     6},
  92             {"GMT+0304",    6},
  93             {"GMT+42195",   5},
  94             {"GMT+5:8",     7},
  95             {"GMT+23:60",   8},
  96             {"GMT+11:1",    8},
  97             {"GMT+24:13",   5},
  98             {"GMT+421:950", 5},
  99             {"GMT+0a:0A",   5},
 100             {"GMT+ 13:42",  4},
 101             {"GMT+13 :42",  6},
 102             {"GMT+13: 42",  7},
 103             {"GMT+-13:42",  4},
 104             {"G M T",       0},
 105             {"+8",          2},
 106             {"+18",         3},
 107             {"+208",        4},
 108             {"+2360",       4},
 109             {"+2413",       2},
 110             {"+42195",      2},
 111             {"+0AbC",       2},
 112             {"+ 1342",      1},
 113             {"+-1342",      1},
 114             {"1342",        0},
 115           /* Arabic-Indic digits */
 116             {"GMT+\u0660\u0661:\u0662\u0663", 4},
 117           /* Extended Arabic-Indic digits */
 118             {"GMT+\u06f0\u06f1:\u06f2\u06f3", 4},
 119           /* Devanagari digits */
 120             {"GMT+\u0966\u0967:\u0968\u0969", 4},
 121           /* Fullwidth digits */
 122             {"GMT+\uFF10\uFF11:\uFF12\uFF13", 4},
 123 
 124             {"GMT-8",       5},
 125             {"GMT-18",      6},
 126             {"GMT-208",     6},
 127             {"GMT-0304",    6},
 128             {"GMT-42195",   5},
 129             {"GMT-5:8",     7},
 130             {"GMT-23:60",   8},
 131             {"GMT-11:1",    8},
 132             {"GMT-24:13",   5},
 133             {"GMT-421:950", 5},
 134             {"GMT-0a:0A",   5},
 135             {"GMT- 13:42",  4},
 136             {"GMT-13 :42",  6},
 137             {"GMT-13: 42",  7},
 138             {"GMT-+13:42",  4},
 139             {"-8",          2},
 140             {"-18",         3},
 141             {"-208",        4},
 142             {"-2360",       4},
 143             {"-2413",       2},
 144             {"-42195",      2},
 145             {"-0AbC",       2},
 146             {"- 1342",      1},
 147             {"--1342",      1},
 148             {"-802",        2},
 149           /* Arabic-Indic digits */
 150             {"GMT-\u0660\u0661:\u0662\u0663", 4},
 151           /* Extended Arabic-Indic digits */
 152             {"GMT-\u06f0\u06f1:\u06f2\u06f3", 4},
 153           /* Devanagari digits */
 154             {"GMT-\u0966\u0967:\u0968\u0969", 4},
 155           /* Fullwidth digits */
 156             {"GMT-\uFF10\uFF11:\uFF12\uFF13", 4},
 157         };
 158 
 159         try {
 160             for (int i=0; i < locs.length; i++) {
 161                 Locale locale = locs[i];
 162                 Locale.setDefault(locale);
 163 
 164                 for (int j=0; j < formats.length; j++) {
 165                     TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
 166                     SimpleDateFormat sdf = new SimpleDateFormat(formats[j]);
 167                     Date date;
 168 
 169                     /* Okay case */
 170                     for (int k=0; k < valids.length; k++) {
 171                         ParsePosition pos = new ParsePosition(0);
 172                         try {
 173                             date = sdf.parse((String)valids[k][0], pos);
 174                         }
 175                         catch (Exception e) {
 176                             err = true;


< prev index next >