@@ -405,6 +405,243 @@ mod tests {
405405 #[ case( "`background-color: ${func()}`" , vec![ ( "background-color" , "func()" , None ) ] ) ]
406406 #[ case( "`background-color: ${(props)=>props.b ? 'a' : 'b'}`" , vec![ ( "background-color" , "((props)=>props.b ? 'a' : 'b')(rest)" , None ) ] ) ]
407407 #[ case( "`background-color: ${(props)=>props.b ? null : undefined}`" , vec![ ( "background-color" , "((props)=>props.b ? null : undefined)(rest)" , None ) ] ) ]
408+ #[ case(
409+ "`color: red; background: blue;`" ,
410+ vec![
411+ ( "color" , "red" , None ) ,
412+ ( "background" , "blue" , None ) ,
413+ ]
414+ ) ]
415+ #[ case(
416+ "`margin:0;padding:0;`" ,
417+ vec![
418+ ( "margin" , "0" , None ) ,
419+ ( "padding" , "0" , None ) ,
420+ ]
421+ ) ]
422+ #[ case(
423+ "`font-size: 16px;`" ,
424+ vec![
425+ ( "font-size" , "16px" , None ) ,
426+ ]
427+ ) ]
428+ #[ case(
429+ "`border: 1px solid #000; color: #fff;`" ,
430+ vec![
431+ ( "border" , "1px solid #000" , None ) ,
432+ ( "color" , "#FFF" , None ) ,
433+ ]
434+ ) ]
435+ #[ case(
436+ "``" ,
437+ vec![ ]
438+ ) ]
439+ #[ case(
440+ "`@media (min-width: 768px) {
441+ border: 1px solid #000;
442+ color: #fff;
443+ }`" ,
444+ vec![
445+ ( "border" , "1px solid #000" , Some ( StyleSelector :: Media {
446+ query: "(min-width:768px)" . to_string( ) ,
447+ selector: None ,
448+ } ) ) ,
449+ ( "color" , "#FFF" , Some ( StyleSelector :: Media {
450+ query: "(min-width:768px)" . to_string( ) ,
451+ selector: None ,
452+ } ) ) ,
453+ ]
454+ ) ]
455+ #[ case(
456+ "`@media (min-width: 768px) and (max-width: 1024px) {
457+ border: 1px solid #000;
458+ color: #fff;
459+ }
460+
461+ @media (min-width: 768px) {
462+ border: 1px solid #000;
463+ color: #fff;
464+ }`" ,
465+ vec![
466+ ( "border" , "1px solid #000" , Some ( StyleSelector :: Media {
467+ query: "(min-width:768px)and (max-width:1024px)" . to_string( ) ,
468+ selector: None ,
469+ } ) ) ,
470+ ( "color" , "#FFF" , Some ( StyleSelector :: Media {
471+ query: "(min-width:768px)and (max-width:1024px)" . to_string( ) ,
472+ selector: None ,
473+ } ) ) ,
474+ ( "border" , "1px solid #000" , Some ( StyleSelector :: Media {
475+ query: "(min-width:768px)" . to_string( ) ,
476+ selector: None ,
477+ } ) ) ,
478+ ( "color" , "#FFF" , Some ( StyleSelector :: Media {
479+ query: "(min-width:768px)" . to_string( ) ,
480+ selector: None ,
481+ } ) ) ,
482+ ]
483+ ) ]
484+ #[ case(
485+ "`@media (min-width: 768px) {
486+ & {
487+ border: 1px solid #fff;
488+ color: #fff;
489+ }
490+ &:hover, &:active, &:nth-child(2) {
491+ border: 1px solid #000;
492+ color: #000;
493+ }
494+ }`" ,
495+ vec![
496+ ( "border" , "1px solid #FFF" , Some ( StyleSelector :: Media {
497+ query: "(min-width:768px)" . to_string( ) ,
498+ selector: None ,
499+ } ) ) ,
500+ ( "color" , "#FFF" , Some ( StyleSelector :: Media {
501+ query: "(min-width:768px)" . to_string( ) ,
502+ selector: None ,
503+ } ) ) ,
504+ ( "border" , "1px solid #000" , Some ( StyleSelector :: Media {
505+ query: "(min-width:768px)" . to_string( ) ,
506+ selector: Some ( "&:hover,&:active,&:nth-child(2)" . to_string( ) ) ,
507+ } ) ) ,
508+ ( "color" , "#000" , Some ( StyleSelector :: Media {
509+ query: "(min-width:768px)" . to_string( ) ,
510+ selector: Some ( "&:hover,&:active,&:nth-child(2)" . to_string( ) ) ,
511+ } ) ) ,
512+ ]
513+ ) ]
514+ #[ case(
515+ "`@media (min-width: 768px) {
516+ & {
517+ border: 1px solid #fff;
518+ color: #fff;
519+ }
520+ &:hover {
521+ border: 1px solid #000;
522+ color: #000;
523+ }
524+ }`" ,
525+ vec![
526+ ( "border" , "1px solid #FFF" , Some ( StyleSelector :: Media {
527+ query: "(min-width:768px)" . to_string( ) ,
528+ selector: None ,
529+ } ) ) ,
530+ ( "color" , "#FFF" , Some ( StyleSelector :: Media {
531+ query: "(min-width:768px)" . to_string( ) ,
532+ selector: None ,
533+ } ) ) ,
534+ ( "border" , "1px solid #000" , Some ( StyleSelector :: Media {
535+ query: "(min-width:768px)" . to_string( ) ,
536+ selector: Some ( "&:hover" . to_string( ) ) ,
537+ } ) ) ,
538+ ( "color" , "#000" , Some ( StyleSelector :: Media {
539+ query: "(min-width:768px)" . to_string( ) ,
540+ selector: Some ( "&:hover" . to_string( ) ) ,
541+ } ) ) ,
542+ ]
543+ ) ]
544+ #[ case(
545+ "`@media (min-width: 768px) {
546+ & {
547+ border: 1px solid #fff;
548+ color: #fff;
549+ }
550+ &:hover {
551+ border: 1px solid #000;
552+ color: #000;
553+ }
554+ }
555+ @media (max-width: 768px) and (min-width: 480px) {
556+ & {
557+ border: 1px solid #fff;
558+ color: #fff;
559+ }
560+ &:hover {
561+ border: 1px solid #000;
562+ color: #000;
563+ }
564+ }`" ,
565+ vec![
566+ ( "border" , "1px solid #FFF" , Some ( StyleSelector :: Media {
567+ query: "(max-width:768px)and (min-width:480px)" . to_string( ) ,
568+ selector: None ,
569+ } ) ) ,
570+ ( "color" , "#FFF" , Some ( StyleSelector :: Media {
571+ query: "(max-width:768px)and (min-width:480px)" . to_string( ) ,
572+ selector: None ,
573+ } ) ) ,
574+ ( "border" , "1px solid #000" , Some ( StyleSelector :: Media {
575+ query: "(max-width:768px)and (min-width:480px)" . to_string( ) ,
576+ selector: Some ( "&:hover" . to_string( ) ) ,
577+ } ) ) ,
578+ ( "color" , "#000" , Some ( StyleSelector :: Media {
579+ query: "(max-width:768px)and (min-width:480px)" . to_string( ) ,
580+ selector: Some ( "&:hover" . to_string( ) ) ,
581+ } ) ) ,
582+ ( "border" , "1px solid #FFF" , Some ( StyleSelector :: Media {
583+ query: "(min-width:768px)" . to_string( ) ,
584+ selector: None ,
585+ } ) ) ,
586+ ( "color" , "#FFF" , Some ( StyleSelector :: Media {
587+ query: "(min-width:768px)" . to_string( ) ,
588+ selector: None ,
589+ } ) ) ,
590+ ( "border" , "1px solid #000" , Some ( StyleSelector :: Media {
591+ query: "(min-width:768px)" . to_string( ) ,
592+ selector: Some ( "&:hover" . to_string( ) ) ,
593+ } ) ) ,
594+ ( "color" , "#000" , Some ( StyleSelector :: Media {
595+ query: "(min-width:768px)" . to_string( ) ,
596+ selector: Some ( "&:hover" . to_string( ) ) ,
597+ } ) ) ,
598+ ]
599+ ) ]
600+ #[ case(
601+ "`@media (min-width: 768px) {
602+ & {
603+ border: 1px solid #fff;
604+ color: #fff;
605+ }
606+ }
607+ @media (max-width: 768px) and (min-width: 480px) {
608+ border: 1px solid #000;
609+ color: #000;
610+ }`" ,
611+ vec![
612+ ( "border" , "1px solid #FFF" , Some ( StyleSelector :: Media {
613+ query: "(min-width:768px)" . to_string( ) ,
614+ selector: None ,
615+ } ) ) ,
616+ ( "color" , "#FFF" , Some ( StyleSelector :: Media {
617+ query: "(min-width:768px)" . to_string( ) ,
618+ selector: None ,
619+ } ) ) ,
620+ ( "border" , "1px solid #000" , Some ( StyleSelector :: Media {
621+ query: "(max-width:768px)and (min-width:480px)" . to_string( ) ,
622+ selector: None ,
623+ } ) ) ,
624+ ( "color" , "#000" , Some ( StyleSelector :: Media {
625+ query: "(max-width:768px)and (min-width:480px)" . to_string( ) ,
626+ selector: None ,
627+ } ) ) ,
628+ ]
629+ ) ]
630+ #[ case(
631+ "`@media (min-width: 768px) {
632+ & {
633+ }
634+ }
635+ @media (max-width: 768px) and (min-width: 480px) {
636+ }`" ,
637+ vec![ ]
638+ ) ]
639+ #[ case(
640+ "`ul { font-family: 'Roboto Hello', sans-serif; }`" ,
641+ vec![
642+ ( "font-family" , "\" Roboto Hello\" ,sans-serif" , Some ( StyleSelector :: Selector ( "ul" . to_string( ) ) ) ) ,
643+ ]
644+ ) ]
408645 fn test_css_to_style_literal (
409646 #[ case] input : & str ,
410647 #[ case] expected : Vec < ( & str , & str , Option < StyleSelector > ) > ,
0 commit comments