@@ -51,21 +51,20 @@ describe(`DateTimeUtil Unit tests`, () => {
51
51
expect ( resDict [ DatePart . Year ] ) . toEqual ( jasmine . objectContaining ( { start : 6 , end : 10 } ) ) ;
52
52
53
53
// TODO
54
- return ;
55
- result = DateTimeUtil . parseDateTimeFormat ( 'dd.MM.yyyyг' ) ;
56
- resDict = reduceToDictionary ( result ) ;
57
- expect ( result . length ) . toEqual ( 6 ) ;
58
- expect ( resDict [ DatePart . Date ] ) . toEqual ( jasmine . objectContaining ( { start : 0 , end : 2 } ) ) ;
59
- expect ( resDict [ DatePart . Month ] ) . toEqual ( jasmine . objectContaining ( { start : 3 , end : 5 } ) ) ;
60
- expect ( resDict [ DatePart . Year ] ) . toEqual ( jasmine . objectContaining ( { start : 6 , end : 10 } ) ) ;
61
- expect ( result [ 5 ] ?. format ) . toEqual ( 'г' ) ;
62
-
63
- result = DateTimeUtil . parseDateTimeFormat ( 'yyyy/MM/d' ) ;
64
- resDict = reduceToDictionary ( result ) ;
65
- expect ( result . length ) . toEqual ( 5 ) ;
66
- expect ( resDict [ DatePart . Year ] ) . toEqual ( jasmine . objectContaining ( { start : 0 , end : 4 } ) ) ;
67
- expect ( resDict [ DatePart . Month ] ) . toEqual ( jasmine . objectContaining ( { start : 5 , end : 7 } ) ) ;
68
- expect ( resDict [ DatePart . Date ] ) . toEqual ( jasmine . objectContaining ( { start : 8 , end : 10 } ) ) ;
54
+ // result = DateTimeUtil.parseDateTimeFormat('dd.MM.yyyyг');
55
+ // resDict = reduceToDictionary(result);
56
+ // expect(result.length).toEqual(6);
57
+ // expect(resDict[DatePart.Date]).toEqual(jasmine.objectContaining({ start: 0, end: 2 }));
58
+ // expect(resDict[DatePart.Month]).toEqual(jasmine.objectContaining({ start: 3, end: 5 }));
59
+ // expect(resDict[DatePart.Year]).toEqual(jasmine.objectContaining({ start: 6, end: 10 }));
60
+ // expect(result[5]?.format).toEqual('г');
61
+
62
+ // result = DateTimeUtil.parseDateTimeFormat('yyyy/MM/d');
63
+ // resDict = reduceToDictionary(result);
64
+ // expect(result.length).toEqual(5);
65
+ // expect(resDict[DatePart.Year]).toEqual(jasmine.objectContaining({ start: 0, end: 4 }));
66
+ // expect(resDict[DatePart.Month]).toEqual(jasmine.objectContaining({ start: 5, end: 7 }));
67
+ // expect(resDict[DatePart.Date]).toEqual(jasmine.objectContaining({ start: 8, end: 10 }));
69
68
} ) ;
70
69
71
70
it ( 'should correctly parse boundary dates' , ( ) => {
@@ -422,30 +421,13 @@ describe(`DateTimeUtil Unit tests`, () => {
422
421
expect ( DateTimeUtil . greaterThanMaxValue ( new Date ( 2010 , 3 , 2 , 15 , 15 , 15 ) , maxValue ) ) . toBeFalse ( ) ;
423
422
expect ( DateTimeUtil . greaterThanMaxValue ( new Date ( 2009 , 3 , 2 , 15 , 15 , 15 ) , maxValue ) ) . toBeFalse ( ) ;
424
423
425
-
426
424
// date excluded
427
425
expect ( DateTimeUtil . lessThanMinValue ( new Date ( 2030 , 3 , 2 , 11 , 10 , 9 ) , minValue , true , false ) ) . toBeTrue ( ) ;
428
426
expect ( DateTimeUtil . greaterThanMaxValue ( new Date ( 2000 , 3 , 2 , 15 , 15 , 16 ) , minValue , true , false ) ) . toBeTrue ( ) ;
429
427
430
428
// time excluded
431
429
expect ( DateTimeUtil . lessThanMinValue ( new Date ( 2009 , 3 , 2 , 11 , 10 , 10 ) , minValue , false , true ) ) . toBeTrue ( ) ;
432
430
expect ( DateTimeUtil . greaterThanMaxValue ( new Date ( 2011 , 3 , 2 , 15 , 15 , 15 ) , minValue , true , false ) ) . toBeTrue ( ) ;
433
-
434
- // falsy values
435
- expect ( DateTimeUtil . lessThanMinValue ( new Date ( NaN ) , new Date ( NaN ) ) ) . toBeFalse ( ) ;
436
- expect ( DateTimeUtil . greaterThanMaxValue ( new Date ( NaN ) , new Date ( NaN ) ) ) . toBeFalse ( ) ;
437
- expect ( DateTimeUtil . lessThanMinValue ( new Date ( NaN ) , null ) ) . toBeFalse ( ) ;
438
- expect ( DateTimeUtil . greaterThanMaxValue ( new Date ( NaN ) , null ) ) . toBeFalse ( ) ;
439
- expect ( DateTimeUtil . lessThanMinValue ( null , new Date ( NaN ) ) ) . toBeFalse ( ) ;
440
- expect ( DateTimeUtil . greaterThanMaxValue ( null , new Date ( NaN ) ) ) . toBeFalse ( ) ;
441
- expect ( DateTimeUtil . lessThanMinValue ( new Date ( NaN ) , undefined ) ) . toBeFalse ( ) ;
442
- expect ( DateTimeUtil . greaterThanMaxValue ( new Date ( NaN ) , undefined ) ) . toBeFalse ( ) ;
443
- expect ( DateTimeUtil . lessThanMinValue ( undefined , new Date ( NaN ) ) ) . toBeFalse ( ) ;
444
- expect ( DateTimeUtil . greaterThanMaxValue ( undefined , new Date ( NaN ) ) ) . toBeFalse ( ) ;
445
- expect ( DateTimeUtil . lessThanMinValue ( new Date ( NaN ) , new Date ( ) ) ) . toBeFalse ( ) ;
446
- expect ( DateTimeUtil . greaterThanMaxValue ( new Date ( NaN ) , new Date ( ) ) ) . toBeFalse ( ) ;
447
- expect ( DateTimeUtil . lessThanMinValue ( new Date ( ) , new Date ( NaN ) ) ) . toBeFalse ( ) ;
448
- expect ( DateTimeUtil . greaterThanMaxValue ( new Date ( ) , new Date ( NaN ) ) ) . toBeFalse ( ) ;
449
431
} ) ;
450
432
451
433
it ( 'should return ValidationErrors for minValue and maxValue' , ( ) => {
@@ -459,46 +441,70 @@ describe(`DateTimeUtil Unit tests`, () => {
459
441
minValue = new Date ( 2010 , 3 , 2 , 10 , 10 , 10 ) ;
460
442
maxValue = new Date ( 2010 , 3 , 2 , 15 , 15 , 15 ) ;
461
443
462
- // TODO: test with time portions as well
463
- return ;
464
- expect ( DateTimeUtil . validateMinMax ( new Date ( 2010 , 3 , 2 , 11 , 11 , 11 ) , minValue , maxValue ) ) . toEqual ( { } ) ;
444
+ expect ( DateTimeUtil . validateMinMax ( new Date ( 2010 , 3 , 2 , 10 , 10 , 10 ) , minValue , maxValue ) ) . toEqual ( { } ) ;
465
445
expect ( DateTimeUtil . validateMinMax ( new Date ( 2010 , 3 , 2 , 9 , 11 , 11 ) , minValue , maxValue ) ) . toEqual ( { minValue : true } ) ;
466
446
expect ( DateTimeUtil . validateMinMax ( new Date ( 2010 , 3 , 2 , 16 , 11 , 11 ) , minValue , maxValue ) ) . toEqual ( { maxValue : true } ) ;
447
+
448
+ // ignore date portion
449
+ expect ( DateTimeUtil . validateMinMax ( new Date ( 2000 , 0 , 1 , 10 , 10 , 10 ) , minValue , maxValue , true , false ) ) . toEqual ( { } ) ;
450
+ expect ( DateTimeUtil . validateMinMax (
451
+ new Date ( 2020 , 10 , 10 , 9 , 10 , 10 ) , minValue , maxValue , true , false ) ) . toEqual ( { minValue : true } ) ;
452
+ expect ( DateTimeUtil . validateMinMax (
453
+ new Date ( 2000 , 0 , 1 , 16 , 0 , 0 ) , minValue , maxValue , true , false ) ) . toEqual ( { maxValue : true } ) ;
454
+
455
+ // ignore time portion
456
+ expect ( DateTimeUtil . validateMinMax ( new Date ( 2010 , 3 , 2 , 9 , 0 , 0 ) , minValue , maxValue , false , true ) ) . toEqual ( { } ) ;
457
+ expect ( DateTimeUtil . validateMinMax (
458
+ new Date ( 2009 , 3 , 2 , 11 , 11 , 11 ) , minValue , maxValue , false , true ) ) . toEqual ( { minValue : true } ) ;
459
+ expect ( DateTimeUtil . validateMinMax (
460
+ new Date ( 2020 , 3 , 2 , 0 , 0 , 0 ) , minValue , maxValue , false , true ) ) . toEqual ( { maxValue : true } ) ;
467
461
} ) ;
468
462
469
- it ( 'should parse dates correctly with parseDate' , ( ) => {
470
- pending ( 'TODO: ISO implementation' ) ;
471
- // // ISO strings and numbers
472
- // expect(DateTimeUtil.parseDate('2012-12-12T12:12:12').getTime()).toEqual(new Date(2012, 11, 12, 12, 12, 12).getTime());
473
- // expect(DateTimeUtil.parseDate(new Date()).getTime()).toEqual(new Date().getTime());
474
- // expect(DateTimeUtil.parseDate(new Date().getTime()).getTime()).toEqual(new Date().getTime());
475
-
476
- // // non ISO strings with mask and no dateTimeParts
477
- // let mask = 'dd/MM/yyyy HH:mm:ss';
478
- // expect(DateTimeUtil.parseDate('12/12/2012 12:12:12', null, mask)
479
- // .getTime()).toEqual(new Date(2012, 11, 12, 12, 12, 12).getTime());
480
- // mask = 'MM-dd-yyyy mm:ss';
481
- // expect(DateTimeUtil.parseDate('06/04/2012 44:12', null, mask).getTime()).toEqual(new Date(2012, 5, 4, 0, 44, 12).getTime());
482
- // mask = 'yy-dd-MM ss:HHmm';
483
- // expect(DateTimeUtil.parseDate('12/12/12 12:12:12', null, mask).getTime()).toEqual(new Date(2012, 11, 12, 12, 12, 12).getTime());
484
- // mask = 'dd///()#yy123/\\\/MM ___ ss(|::HH123456::123123 mm';
485
- // expect(DateTimeUtil.parseDate('12/12/12 12:12:12', null, mask).getTime()).toEqual(new Date(2012, 11, 12, 12, 12, 12).getTime());
486
-
487
- // // non ISO strings with dateTimeParts and no mask
488
- // const dateTimeParts = DateTimeUtil.parseDateTimeFormat(mask);
489
- // expect(DateTimeUtil.parseDate('12/12/12 12:12:12', dateTimeParts).getTime())
490
- // .toEqual(new Date(2012, 11, 12, 12, 12, 12).getTime());
491
-
492
- // // invalid values
493
- // expect(DateTimeUtil.parseDate(undefined)).toEqual(null);
494
- // expect(DateTimeUtil.parseDate(NaN)).toEqual(null);
495
- // expect(DateTimeUtil.parseDate([])).toEqual(null);
496
- // expect(DateTimeUtil.parseDate({})).toEqual(null);
497
- // expect(DateTimeUtil.parseDate('')).toEqual(null);
498
- // expect(DateTimeUtil.parseDate(new Date(NaN))).toEqual(null);
499
- // expect(DateTimeUtil.parseDate(null)).toBeInstanceOf(Date);
500
- // expect(DateTimeUtil.parseDate(true)).toBeInstanceOf(Date);
501
- // expect(DateTimeUtil.parseDate(false)).toBeInstanceOf(Date);
463
+ it ( 'should parse dates correctly with parseIsoDate' , ( ) => {
464
+ const updateDate = ( dateValue : Date , stringValue : string ) : Date => {
465
+ const [ datePart , timePart ] = dateValue . toISOString ( ) . split ( 'T' ) ;
466
+ const newDate = new Date ( `${ datePart } T${ stringValue + timePart . substr ( stringValue . length , timePart . length ) } ` ) ;
467
+ newDate . setMilliseconds ( 0 ) ;
468
+ return newDate ;
469
+ } ;
470
+
471
+ let date = new Date ( ) ;
472
+ date . setMilliseconds ( 0 ) ;
473
+ // full iso string
474
+ expect ( DateTimeUtil . parseIsoDate ( date . toISOString ( ) ) . getTime ( ) ) . toEqual ( date . getTime ( ) ) ;
475
+
476
+ // date only
477
+ expect ( DateTimeUtil . parseIsoDate ( '2012-12-10' ) . getTime ( ) ) . toEqual ( new Date ( '2012-12-10T00:00:00' ) . getTime ( ) ) ;
478
+ expect ( DateTimeUtil . parseIsoDate ( '2023-13-15' ) . getTime ( ) ) . toEqual ( new Date ( '2023-13-15T00:00:00' ) . getTime ( ) ) ;
479
+ expect ( DateTimeUtil . parseIsoDate ( '1524-01-02' ) . getTime ( ) ) . toEqual ( new Date ( '1524-01-02T00:00:00' ) . getTime ( ) ) ;
480
+ expect ( DateTimeUtil . parseIsoDate ( '2012' ) . getTime ( ) ) . toEqual ( new Date ( '2012-01-01T00:00:00' ) . getTime ( ) ) ;
481
+ expect ( DateTimeUtil . parseIsoDate ( '2012-02' ) . getTime ( ) ) . toEqual ( new Date ( '2012-02-01T00:00:00' ) . getTime ( ) ) ;
482
+
483
+ // time only
484
+ date = DateTimeUtil . parseIsoDate ( '12:14' ) ;
485
+ date . setMilliseconds ( 0 ) ;
486
+ expect ( date . getTime ( ) ) . toEqual ( updateDate ( new Date ( ) , '12:14' ) . getTime ( ) ) ;
487
+
488
+ date = DateTimeUtil . parseIsoDate ( '15:18' ) ;
489
+ date . setMilliseconds ( 0 ) ;
490
+ expect ( date . getTime ( ) ) . toEqual ( updateDate ( new Date ( ) , '15:18' ) . getTime ( ) ) ;
491
+
492
+ date = DateTimeUtil . parseIsoDate ( '06:03' ) ;
493
+ date . setMilliseconds ( 0 ) ;
494
+ expect ( date . getTime ( ) ) . toEqual ( updateDate ( new Date ( ) , '06:03' ) . getTime ( ) ) ;
495
+
496
+ date = DateTimeUtil . parseIsoDate ( '00:00' ) ;
497
+ date . setMilliseconds ( 0 ) ;
498
+ expect ( date . getTime ( ) ) . toEqual ( updateDate ( new Date ( ) , '00:00' ) . getTime ( ) ) ;
499
+
500
+ // falsy values
501
+ expect ( DateTimeUtil . parseIsoDate ( '' ) ) . toEqual ( null ) ;
502
+ expect ( DateTimeUtil . parseIsoDate ( 'false' ) ) . toEqual ( null ) ;
503
+ expect ( DateTimeUtil . parseIsoDate ( 'true' ) ) . toEqual ( null ) ;
504
+ expect ( DateTimeUtil . parseIsoDate ( 'NaN' ) ) . toEqual ( null ) ;
505
+ expect ( DateTimeUtil . parseIsoDate ( undefined ) ) . toEqual ( null ) ;
506
+ expect ( DateTimeUtil . parseIsoDate ( null ) ) . toEqual ( null ) ;
507
+ expect ( DateTimeUtil . parseIsoDate ( new Date ( ) . getTime ( ) . toString ( ) ) . getTime ( ) ) . toEqual ( NaN ) ;
502
508
} ) ;
503
509
504
510
it ( 'isValidDate should properly determine if a date is valid or not' , ( ) => {
0 commit comments