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; |