CSS-Prepare

 view release on metacpan or  search on metacpan

t/06.basic.t  view on Meta::CPAN

    
    @structure = $preparer->parse_string( $input );
    @structure = $preparer->optimise( @structure );
    $output    = $preparer->output_as_string( @structure );
    ok( $output eq $css )
        or say "multiple selectors split apart was:\n" . $output;
}

# multiple occurences of the same property are combined
{
    $input = <<CSS;
div { margin: 0; }
li { margin: 0; }
CSS
    $css = <<CSS;
div,li{margin:0;}
CSS
    
    @structure = $preparer->parse_string( $input );
    @structure = $preparer->optimise( @structure );
    $output    = $preparer->output_as_string( @structure );
    ok( $output eq $css )
        or say "multiple properties combine was:\n" . $output;
}

# matching selectors and properties are combined
{
    $input = <<CSS;
div, li { padding: 0; }
div, li { margin: 0; }
li { color: red; }
CSS
    $css = <<CSS;
div,li{margin:0;padding:0;}
li{color:red;}
CSS
    
    @structure = $preparer->parse_string( $input );
    @structure = $preparer->optimise( @structure );
    $output    = $preparer->output_as_string( @structure );
    ok( $output eq $css )
        or say "matching selectors and properties combine was:\n" . $output;
}

# matching selectors and properties can be split if smaller output
{
    $input = <<CSS;
div, li { padding: 0; }
div, li { margin: 0; }
body { margin: 0; }
CSS
    $css = <<CSS;
body,div,li{margin:0;}
div,li{padding:0;}
CSS
    
    @structure = $preparer->parse_string( $input );
    @structure = $preparer->optimise( @structure );
    $output    = $preparer->output_as_string( @structure );
    ok( $output eq $css )
        or say "split multiple properties was:\n" . $output;
}

# matching selectors and properties can be split if smaller output
{
    $input = <<CSS;
div, li { padding: 0; }
div, li { margin: 0; }
li, fieldset { border: none; }
CSS
    $css = <<CSS;
div,li{margin:0;padding:0;}
fieldset,li{border:none;}
CSS
    
    @structure = $preparer->parse_string( $input );
    @structure = $preparer->optimise( @structure );
    $output    = $preparer->output_as_string( @structure );
    ok( $output eq $css )
        or say "split multiple properties was:\n" . $output;
}

# multiple choices of combinations result in the shortest string
{
    $input = <<CSS;
li { padding: 0; }
div { margin: 0; }
li { margin: 0; }
CSS
    $css = <<CSS;
div,li{margin:0;}
li{padding:0;}
CSS
    
    @structure = $preparer->parse_string( $input );
    @structure = $preparer->optimise( @structure );
    $output    = $preparer->output_as_string( @structure );
    ok( $output eq $css )
        or say "shortest string was:\n" . $output;
}

# existing combinations should be broken apart if it is shorter
{
    $input = <<CSS;
li { margin: 0; padding: 0; }
div { margin: 0; }
CSS
    $css = <<CSS;
div,li{margin:0;}
li{padding:0;}
CSS
    
    @structure = $preparer->parse_string( $input );
    @structure = $preparer->optimise( @structure );
    $output    = $preparer->output_as_string( @structure );
    ok( $output eq $css )
        or say "break existing combinations was:\n" . $output;
}

# complex example with multiple options
{
    $input = <<CSS;
li { margin: 0; }
div { margin: 0; }
li { padding: 0; }
fieldset { border: 1px solid #000; }
li { border: 1px solid #000; }
CSS
    $css = <<CSS;
div,li{margin:0;}
fieldset,li{border:1px solid #000;}
li{padding:0;}
CSS
    
    @structure = $preparer->parse_string( $input );
    @structure = $preparer->optimise( @structure );
    $output    = $preparer->output_as_string( @structure );
    ok( $output eq $css )
        or say "complex options was:\n" . $output;
}



( run in 0.632 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )