Changeset 12820

Show
Ignore:
Timestamp:
03/02/08 21:27:50 (10 months ago)
Author:
peller
Message:

Fix strict mode checking of year < 100CE in dojo.date.parse. Refs #4850. Also remove unsupported whitespace tests and invalid 'es' locale tests. Fixes #5885

Location:
dojo/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • dojo/trunk/date/locale.js

    r12790 r12820  
    424424        }); 
    425425 
    426         var hours = result[3]*1; 
     426        var hours = +result[3]; 
    427427        if(amPm === 'p' && hours < 12){ 
    428428                result[3] = hours + 12; //e.g., 3pm -> 15 
     
    435435 
    436436        var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date 
     437        if(options.strict){ 
     438                dateObject.setFullYear(result[0]); 
     439        } 
    437440 
    438441        // Check for overflow.  The Date() constructor normalizes things like April 32nd... 
  • dojo/trunk/tests/date/locale.js

    r12491 r12820  
    7979 
    8080        var aug_11_2006 = new Date(2006, 7, 11, 0); 
    81         var aug_11_06CE = new Date(2006, 7, 11, 0); 
    82         aug_11_06CE.setFullYear(6); //literally the year 6 C.E. 
    8381 
    8482        //en: 'short' fmt: M/d/yy 
     
    9997        // ...but not in strict mode 
    10098        t.f( Boolean(dojo.date.locale.parse("Aug. 11, 2006", {formatLength:'medium', selector:'date', locale:'en', strict:true}))); 
     99 
    101100        // Note: 06 for year part will be translated literally as the year 6 C.E. 
     101        var aug_11_06CE = new Date(2006, 7, 11, 0); 
     102        aug_11_06CE.setFullYear(6); //literally the year 6 C.E. 
    102103        t.is( aug_11_06CE, dojo.date.locale.parse("Aug 11, 06", {selector:'date', datePattern:'MMM dd, yyyy', strict:true})); 
     104 
    103105        //en: 'long' fmt: MMMM d, yyyy 
    104106        t.is( aug_11_2006, dojo.date.locale.parse("August 11, 2006", {formatLength:'long', selector:'date', locale:'en'})); 
     
    108110        //TODO: wrong day-of-week should fail 
    109111        //t.f( Boolean(dojo.date.locale.parse("Thursday, August 11, 2006", {formatLength:'full', selector:'date', locale:'en'}))); 
    110  
    111         //Whitespace tolerance 
    112         t.is( aug_11_2006, dojo.date.locale.parse(" August 11, 2006", {formatLength:'long', selector:'date', locale:'en'})); 
    113         t.is( aug_11_2006, dojo.date.locale.parse("August  11, 2006", {formatLength:'long', selector:'date', locale:'en'})); 
    114         t.is( aug_11_2006, dojo.date.locale.parse("August 11 , 2006", {formatLength:'long', selector:'date', locale:'en'})); 
    115         t.is( aug_11_2006, dojo.date.locale.parse("August 11,  2006", {formatLength:'long', selector:'date', locale:'en'})); 
    116         t.is( aug_11_2006, dojo.date.locale.parse("August 11, 2006 ", {formatLength:'long', selector:'date', locale:'en'})); 
     112        //TODO: Whitespace tolerance 
     113        //      t.is( aug_11_2006, dojo.date.locale.parse(" August 11, 2006", {formatLength:'long', selector:'date', locale:'en'})); 
     114        //      t.is( aug_11_2006, dojo.date.locale.parse("August  11, 2006", {formatLength:'long', selector:'date', locale:'en'})); 
     115        //      t.is( aug_11_2006, dojo.date.locale.parse("August 11 , 2006", {formatLength:'long', selector:'date', locale:'en'})); 
     116        //      t.is( aug_11_2006, dojo.date.locale.parse("August 11,  2006", {formatLength:'long', selector:'date', locale:'en'})); 
     117        //      t.is( aug_11_2006, dojo.date.locale.parse("August 11, 2006 ", {formatLength:'long', selector:'date', locale:'en'})); 
    117118 
    118119        //Simple Validation Tests 
     
    138139        // ...but not in strict mode 
    139140        t.f( Boolean(dojo.date.locale.parse("11/8/2006", {formatLength:'short', selector:'date', locale:'es', strict:true}))); 
    140         //es: 'medium' fmt: dd-MMM-yy 
    141         t.is( aug_11_2006, dojo.date.locale.parse("11-ago-06", {formatLength:'medium', selector:'date', locale:'es'})); 
    142         t.is( aug_11_2006, dojo.date.locale.parse("11-ago-2006", {formatLength:'medium', selector:'date', locale:'es'}));        
     141        //es: 'medium' fmt: dd-MMM-yy (not anymore as of CLDR 1.5.1) 
     142//      t.is( aug_11_2006, dojo.date.locale.parse("11-ago-06", {formatLength:'medium', selector:'date', locale:'es'})); 
     143//      t.is( aug_11_2006, dojo.date.locale.parse("11-ago-2006", {formatLength:'medium', selector:'date', locale:'es'}));        
    143144        // Tolerate abbreviating period in month part... 
    144         t.is( aug_11_2006, dojo.date.locale.parse("11-ago.-2006", {formatLength:'medium', selector:'date', locale:'es'})); 
    145         // ...but not in strict mode 
    146         t.f( Boolean(dojo.date.locale.parse("11-ago.-2006", {formatLength:'medium', selector:'date', locale:'es', strict:true}))); 
     145//      t.is( aug_11_2006, dojo.date.locale.parse("11-ago.-2006", {formatLength:'medium', selector:'date', locale:'es'})); 
     146        // ...but not in strict mode 
     147//      t.f( Boolean(dojo.date.locale.parse("11-ago.-2006", {formatLength:'medium', selector:'date', locale:'es', strict:true}))); 
    147148        //es: 'long' fmt: d' de 'MMMM' de 'yyyy 
    148149        t.is( aug_11_2006, dojo.date.locale.parse("11 de agosto de 2006", {formatLength:'long', selector:'date', locale:'es'})); 
     
    182183        t.is( aug_11_2006, dojo.date.locale.parse("2006\u5e748\u670811\u65e5\u91d1\u66dc\u65e5", {formatLength:'full', selector:'date', locale:'ja'})); 
    183184 
    184         //Whitespace tolerance 
     185        //TODO: Whitespace tolerance 
    185186        //tolerate ascii space 
    186         t.is( aug_11_2006, dojo.date.locale.parse(" 2006\u5e748\u670811\u65e5\u91d1\u66dc\u65e5 ", {formatLength:'full', selector:'date', locale:'ja'})); 
    187         t.is( aug_11_2006, dojo.date.locale.parse("2006\u5e74 8\u670811\u65e5 \u91d1\u66dc\u65e5", {formatLength:'full', selector:'date', locale:'ja'})); 
     187        //      t.is( aug_11_2006, dojo.date.locale.parse(" 2006\u5e748\u670811\u65e5\u91d1\u66dc\u65e5 ", {formatLength:'full', selector:'date', locale:'ja'})); 
     188        //      t.is( aug_11_2006, dojo.date.locale.parse("2006\u5e74 8\u670811\u65e5 \u91d1\u66dc\u65e5", {formatLength:'full', selector:'date', locale:'ja'})); 
    188189        //tolerate zenkaku space 
    189         t.is( aug_11_2006, dojo.date.locale.parse("\u30002006\u5e748\u670811\u65e5\u91d1\u66dc\u65e5\u3000", {formatLength:'full', selector:'date', locale:'ja'})); 
    190         t.is( aug_11_2006, dojo.date.locale.parse("2006\u5e74\u30008\u670811\u65e5\u3000\u91d1\u66dc\u65e5", {formatLength:'full', selector:'date', locale:'ja'})); 
     190        //      t.is( aug_11_2006, dojo.date.locale.parse("\u30002006\u5e748\u670811\u65e5\u91d1\u66dc\u65e5\u3000", {formatLength:'full', selector:'date', locale:'ja'})); 
     191        //      t.is( aug_11_2006, dojo.date.locale.parse("2006\u5e74\u30008\u670811\u65e5\u3000\u91d1\u66dc\u65e5", {formatLength:'full', selector:'date', locale:'ja'})); 
    191192 
    192193        var apr_11_2006 = new Date(2006, 3, 11, 0);