@@ -472,6 +472,76 @@ describe("parseTime", function () {
472472 } ) ;
473473} ) ;
474474
475+ describe ( "parseLength" , function ( ) {
476+ it ( "raises exception for invalid input" , function ( ) {
477+ var p = function ( ) {
478+ utils . parseLength ( "abc" ) ;
479+ } ;
480+ expect ( p ) . toThrow ( ) ;
481+ } ) ;
482+
483+ it ( "handles pixel lengths" , function ( ) {
484+ expect ( utils . parseLength ( "10px" ) ) . toBe ( 10 ) ;
485+ expect ( utils . parseLength ( "100px" ) ) . toBe ( 100 ) ;
486+ expect ( utils . parseLength ( "1000.1px" ) ) . toBe ( 1000 ) ;
487+ expect ( utils . parseLength ( "1000.9px" ) ) . toBe ( 1001 ) ;
488+
489+ expect ( utils . parseLength ( "10 px" ) ) . toBe ( 10 ) ;
490+ } ) ;
491+
492+ it ( "handles percent lengths" , function ( ) {
493+ expect ( utils . parseLength ( "10%" , 1 ) ) . toBe ( 0.1 ) ;
494+ expect ( utils . parseLength ( "10%" , 10 ) ) . toBe ( 1 ) ;
495+ expect ( utils . parseLength ( "10%" , 100 ) ) . toBe ( 10 ) ;
496+ expect ( utils . parseLength ( "10%" , 1000 ) ) . toBe ( 100 ) ;
497+
498+ expect ( utils . parseLength ( "10.1%" , 100 ) ) . toBe ( 10 ) ;
499+ expect ( utils . parseLength ( "10.9%" , 100 ) ) . toBe ( 11 ) ;
500+
501+ expect ( utils . parseLength ( "10 %" , 100 ) ) . toBe ( 10 ) ;
502+ } ) ;
503+
504+ it ( "handles vw lengths" , function ( ) {
505+ jest . replaceProperty ( window , "innerWidth" , 1000 ) ;
506+
507+ expect ( utils . parseLength ( "1vw" ) ) . toBe ( 10 ) ;
508+ expect ( utils . parseLength ( "10vw" ) ) . toBe ( 100 ) ;
509+ expect ( utils . parseLength ( "100vw" ) ) . toBe ( 1000 ) ;
510+
511+ expect ( utils . parseLength ( "10 vw" ) ) . toBe ( 100 ) ;
512+ } ) ;
513+
514+ it ( "handles vh lengths" , function ( ) {
515+ jest . replaceProperty ( window , "innerHeight" , 1000 ) ;
516+
517+ expect ( utils . parseLength ( "1vh" ) ) . toBe ( 10 ) ;
518+ expect ( utils . parseLength ( "10vh" ) ) . toBe ( 100 ) ;
519+ expect ( utils . parseLength ( "100vh" ) ) . toBe ( 1000 ) ;
520+
521+ expect ( utils . parseLength ( "10 vh" ) ) . toBe ( 100 ) ;
522+ } ) ;
523+
524+ it ( "handles vmin lengths" , function ( ) {
525+ jest . replaceProperty ( window , "innerHeight" , 100 ) ;
526+ jest . replaceProperty ( window , "innerWidth" , 200 ) ;
527+ expect ( utils . parseLength ( "10vmin" ) ) . toBe ( 10 ) ;
528+
529+ jest . replaceProperty ( window , "innerHeight" , 100 ) ;
530+ jest . replaceProperty ( window , "innerWidth" , 50 ) ;
531+ expect ( utils . parseLength ( "10vmin" ) ) . toBe ( 5 ) ;
532+ } ) ;
533+
534+ it ( "handles vmax lengths" , function ( ) {
535+ jest . replaceProperty ( window , "innerHeight" , 100 ) ;
536+ jest . replaceProperty ( window , "innerWidth" , 200 ) ;
537+ expect ( utils . parseLength ( "10vmax" ) ) . toBe ( 20 ) ;
538+
539+ jest . replaceProperty ( window , "innerHeight" , 100 ) ;
540+ jest . replaceProperty ( window , "innerWidth" , 50 ) ;
541+ expect ( utils . parseLength ( "10vmax" ) ) . toBe ( 10 ) ;
542+ } ) ;
543+ } ) ;
544+
475545describe ( "get_bounds" , function ( ) {
476546 it ( "returns the bounds values as integer numbers instead of double/float values." , ( ) => {
477547 const el = document . createElement ( "div" ) ;
0 commit comments