@@ -368,6 +368,52 @@ describe('dates', function() {
368
368
expect ( Lib . dateTime2ms ( v , 'chinese' ) ) . toBeUndefined ( v ) ;
369
369
} ) ;
370
370
} ) ;
371
+
372
+ it ( 'Persian calendar should convert right values' , function ( ) {
373
+ var leapYears = [
374
+ 479 , 483 , 487 , 491 , 495 , 499 ,
375
+ 503 , 508 , 512 , 516 , 520 , 524 , 528 , 532 , 536 , 541 , 545 , 549 , 553 , 557 , 561 , 565 , 569 , 574 , 578 , 582 , 586 , 590 , 594 , 598 ,
376
+ 602 , 607 , 611 , 615 , 619 , 623 , 627 , 631 , 636 , 640 , 644 , 648 , 652 , 656 , 660 , 664 , 669 , 673 , 677 , 681 , 685 , 689 , 693 , 697 ,
377
+ 702 , 706 , 710 , 714 , 718 , 722 , 726 , 730 , 735 , 739 , 743 , 747 , 751 , 755 , 759 , 764 , 768 , 772 , 776 , 780 , 784 , 788 , 792 , 797 ,
378
+ 801 , 805 , 809 , 813 , 817 , 821 , 825 , 830 , 834 , 838 , 842 , 846 , 850 , 854 , 858 , 863 , 867 , 871 , 875 , 879 , 883 , 887 , 892 , 896 ,
379
+ 900 , 904 , 908 , 912 , 916 , 920 , 925 , 929 , 933 , 937 , 941 , 945 , 949 , 953 , 958 , 962 , 966 , 970 , 974 , 978 , 982 , 986 , 991 , 995 , 999 ,
380
+ 1003 , 1007 , 1011 , 1015 , 1020 , 1024 , 1028 , 1032 , 1036 , 1040 , 1044 , 1048 , 1053 , 1057 , 1061 , 1065 , 1069 , 1073 , 1077 , 1081 , 1086 , 1090 , 1094 , 1098 ,
381
+ 1102 , 1106 , 1110 , 1114 , 1119 , 1123 , 1127 , 1131 , 1135 , 1139 , 1143 , 1148 , 1152 , 1156 , 1160 , 1164 , 1168 , 1172 , 1176 , 1181 , 1185 , 1189 , 1193 , 1197 ,
382
+ 1201 , 1205 , 1209 , 1214 , 1218 , 1222 , 1226 , 1230 , 1234 , 1238 , 1242 , 1247 , 1251 , 1255 , 1259 , 1263 , 1267 , 1271 , 1276 , 1280 , 1284 , 1288 , 1292 , 1296 ,
383
+ 1300 , 1304 , 1309 , 1313 , 1317 , 1321 , 1325 , 1329 , 1333 , 1337 , 1342 , 1346 , 1350 , 1354 , 1358 , 1362 , 1366 , 1370 , 1375 , 1379 , 1383 , 1387 , 1391 , 1395 , 1399 ,
384
+ 1403 , 1408 , 1412 , 1416 , 1420 , 1424 , 1428 , 1432 , 1437 , 1441 , 1445 , 1449 , 1453 , 1457 , 1461 , 1465 , 1470 , 1474 , 1478 , 1482 , 1486 , 1490 , 1494 , 1498 ,
385
+ 1503 , 1507 , 1511 , 1515 , 1519 , 1523
386
+ ] ;
387
+
388
+ var tests , time ;
389
+
390
+ for ( var y = 1348 ; y < 1525 ; y ++ ) {
391
+ if ( y === 0 ) continue ;
392
+ for ( var m = 1 ; m <= 12 ; m ++ ) {
393
+ for ( var d = 1 ; d <= ( m < 7 ? 31 : 30 ) ; d ++ ) {
394
+ if ( d === 30 && m === 12 && leapYears . indexOf ( y ) !== - 1 ) continue ;
395
+
396
+ if ( y === 1348 && m === 10 && d === 11 ) { // start of unix time in Persian calendar
397
+ tests = [ ] ;
398
+ time = 0 ;
399
+ }
400
+
401
+ if ( tests ) {
402
+ tests . push ( [ [ y , m , d ] . join ( '-' ) , time ] ) ;
403
+ time += 86400000 ;
404
+ }
405
+ }
406
+ }
407
+ }
408
+
409
+ tests . forEach ( function ( v ) {
410
+ var calendar = 'persian' ;
411
+ var dateStr = v [ 0 ] ;
412
+ var ms = v [ 1 ] ;
413
+ expect ( Lib . ms2DateTime ( ms , 0 , calendar ) ) . toBe ( dateStr ) ;
414
+ expect ( Lib . dateTime2ms ( dateStr , calendar ) ) . toBe ( ms ) ;
415
+ } ) ;
416
+ } ) ;
371
417
} ) ;
372
418
373
419
describe ( 'cleanDate' , function ( ) {
0 commit comments