@@ -379,6 +379,14 @@ describe('datetimepicker', function() {
379379 expect ( $ . timepicker . timezoneOffsetString ( - 720 , true ) ) . toBe ( '-12:00' ) ;
380380 expect ( $ . timepicker . timezoneOffsetString ( 840 , true ) ) . toBe ( '+14:00' ) ;
381381 } ) ;
382+
383+ it ( 'handles abnormal values reasonably' , function ( ) {
384+ expect ( $ . timepicker . timezoneOffsetString ( null , false ) ) . toBe ( '+0000' ) ;
385+ expect ( $ . timepicker . timezoneOffsetString ( null , true ) ) . toBe ( 'Z' ) ;
386+
387+ expect ( $ . timepicker . timezoneOffsetString ( undefined , false ) ) . toBeUndefined ( ) ;
388+ expect ( $ . timepicker . timezoneOffsetString ( undefined , true ) ) . toBeUndefined ( ) ;
389+ } ) ;
382390 } ) ;
383391
384392 describe ( 'timezoneAdjust' , function ( ) {
@@ -557,7 +565,31 @@ describe('datetimepicker', function() {
557565 } ) ;
558566
559567 describe ( 'timezone' , function ( ) {
560- // TODO: Finish
568+ var nullTimezoneTime = { timezone : null } ,
569+ noTimezoneTime = emptyTime ,
570+ timezoneTime = { timezone : - 240 } ,
571+ noTimezoneOptions = { } ,
572+ timezoneOptions = { timezone : 600 } ;
573+
574+ it ( 'handles z correctly' , function ( ) {
575+ expect ( $ . datepicker . formatTime ( 'z' , timezoneTime , noTimezoneOptions ) ) . toBe ( '-0400' ) ;
576+ expect ( $ . datepicker . formatTime ( 'z' , timezoneTime , timezoneOptions ) ) . toBe ( '-0400' ) ;
577+
578+ expect ( $ . datepicker . formatTime ( 'z' , nullTimezoneTime , timezoneOptions ) ) . toBe ( '+1000' ) ;
579+ expect ( $ . datepicker . formatTime ( 'z' , noTimezoneTime , timezoneOptions ) ) . toBe ( '+1000' ) ;
580+ expect ( $ . datepicker . formatTime ( 'z' , nullTimezoneTime , noTimezoneOptions ) ) . toBe ( '+0000' ) ;
581+ expect ( $ . datepicker . formatTime ( 'z' , noTimezoneTime , noTimezoneOptions ) ) . toBe ( '+0000' ) ;
582+ } ) ;
583+
584+ it ( 'handles Z correctly' , function ( ) {
585+ expect ( $ . datepicker . formatTime ( 'Z' , timezoneTime , noTimezoneOptions ) ) . toBe ( '-04:00' ) ;
586+ expect ( $ . datepicker . formatTime ( 'Z' , timezoneTime , timezoneOptions ) ) . toBe ( '-04:00' ) ;
587+
588+ expect ( $ . datepicker . formatTime ( 'Z' , nullTimezoneTime , timezoneOptions ) ) . toBe ( '+10:00' ) ;
589+ expect ( $ . datepicker . formatTime ( 'Z' , noTimezoneTime , timezoneOptions ) ) . toBe ( '+10:00' ) ;
590+ expect ( $ . datepicker . formatTime ( 'Z' , nullTimezoneTime , noTimezoneOptions ) ) . toBe ( 'Z' ) ;
591+ expect ( $ . datepicker . formatTime ( 'Z' , noTimezoneTime , noTimezoneOptions ) ) . toBe ( 'Z' ) ;
592+ } ) ;
561593 } ) ;
562594
563595 describe ( 'am/pm' , function ( ) {
@@ -589,13 +621,19 @@ describe('datetimepicker', function() {
589621 } ) ;
590622 } ) ;
591623
592- describe ( 'other' , function ( ) {
593- expect ( $ . datepicker . formatTime ( '' ) ) . toBe ( '' ) ;
594- expect ( $ . datepicker . formatTime ( "'abc'" ) ) . toBe ( 'abc' ) ;
595- expect ( $ . datepicker . formatTime ( '"abc"' ) ) . toBe ( '"abc"' ) ;
596- expect ( $ . datepicker . formatTime ( "'" ) ) . toBe ( "'" ) ;
597- expect ( $ . datepicker . formatTime ( "''" ) ) . toBe ( "" ) ;
598- expect ( $ . datepicker . formatTime ( "'abc' h 'def'" ) ) . toBe ( 'abc 12 def' ) ;
624+ describe ( 'literals' , function ( ) {
625+ it ( 'handles literals correctly' , function ( ) {
626+ expect ( $ . datepicker . formatTime ( '' , emptyTime ) ) . toBe ( '' ) ;
627+ expect ( $ . datepicker . formatTime ( "'abc'" , emptyTime ) ) . toBe ( 'abc' ) ;
628+ expect ( $ . datepicker . formatTime ( "'" , emptyTime ) ) . toBe ( "'" ) ;
629+ expect ( $ . datepicker . formatTime ( "''" , emptyTime ) ) . toBe ( "" ) ;
630+ expect ( $ . datepicker . formatTime ( "'abc' h 'def'" , emptyTime ) ) . toBe ( 'abc 12 def' ) ;
631+ } ) ;
632+
633+ it ( 'does not treat double quotes as literals' , function ( ) {
634+ expect ( $ . datepicker . formatTime ( '"ab"' , emptyTime ) ) . toBe ( '"ab"' ) ;
635+ expect ( $ . datepicker . formatTime ( '"abc"' , emptyTime ) ) . toBe ( '"ab000"' ) ;
636+ } ) ;
599637 } ) ;
600638 } ) ;
601639 } ) ;
0 commit comments