[Test,Lexer] Add test for distance parsing, fix bug in em (double)

* Parsed as int, not double.
This commit is contained in:
Dave Davenport 2017-04-26 08:05:04 +02:00
parent 7291c1f497
commit 38f91e8953
2 changed files with 61 additions and 4 deletions

View File

@ -369,8 +369,8 @@ if ( queue == NULL ){
return T_PIXEL;
}
<PROPERTIES>{REAL}{EM}{WHITESPACE}{LS_DASH} {
yylval->distance.distance = (double)g_ascii_strtoll(yytext, NULL, 10);
yylval->distance.type = PW_PX;
yylval->distance.distance = (double)g_ascii_strtod(yytext, NULL);
yylval->distance.type = PW_EM;
yylval->distance.style = DASH;
return T_PIXEL;
}
@ -381,8 +381,8 @@ if ( queue == NULL ){
return T_PIXEL;
}
<PROPERTIES>{REAL}{EM}{WHITESPACE}{LS_SOLID} {
yylval->distance.distance = (double)g_ascii_strtoll(yytext, NULL, 10);
yylval->distance.type = PW_PX;
yylval->distance.distance = (double)g_ascii_strtod(yytext, NULL);
yylval->distance.type = PW_EM;
yylval->distance.style = SOLID;
return T_PIXEL;
}

View File

@ -202,6 +202,63 @@ int main ( int argc, char ** argv )
rofi_theme_free ( rofi_theme );
rofi_theme = NULL;
}
{
rofi_theme = NULL;
error = 0;
rofi_theme_parse_string ( "* { sol: 10% solid; dash: 10% dash;}");
TASSERT ( error == 0 );
Distance d = (Distance){ 1, PW_PX, DASH};
Padding pi = (Padding){d,d,d,d};
Padding p = rofi_theme_get_padding ( &wid, "sol", pi);
TASSERT ( p.left.distance == 10 );
TASSERT ( p.left.type == PW_PERCENT );
TASSERT ( p.left.style == SOLID );
p = rofi_theme_get_padding ( &wid, "dash", pi);
TASSERT ( p.left.distance == 10 );
TASSERT ( p.left.type == PW_PERCENT );
TASSERT ( p.left.style == DASH );
TASSERT ( rofi_theme != NULL );
rofi_theme_free ( rofi_theme );
rofi_theme = NULL;
}
{
rofi_theme = NULL;
error = 0;
rofi_theme_parse_string ( "* { sol: 10px solid; dash: 14px dash;}");
TASSERT ( error == 0 );
Distance d = (Distance){ 1, PW_PX, DASH};
Padding pi = (Padding){d,d,d,d};
Padding p = rofi_theme_get_padding ( &wid, "sol", pi);
TASSERT ( p.left.distance == 10 );
TASSERT ( p.left.type == PW_PX);
TASSERT ( p.left.style == SOLID );
p = rofi_theme_get_padding ( &wid, "dash", pi);
TASSERT ( p.left.distance == 14 );
TASSERT ( p.left.type == PW_PX);
TASSERT ( p.left.style == DASH );
TASSERT ( rofi_theme != NULL );
rofi_theme_free ( rofi_theme );
rofi_theme = NULL;
}
{
rofi_theme = NULL;
error = 0;
rofi_theme_parse_string ( "* { sol: 1.3em solid; dash: 1.5em dash;}");
TASSERT ( error == 0 );
Distance d = (Distance){ 1, PW_PX, DASH};
Padding pi = (Padding){d,d,d,d};
Padding p = rofi_theme_get_padding ( &wid, "sol", pi);
TASSERT ( p.left.distance == 1.3 );
TASSERT ( p.left.type == PW_EM );
TASSERT ( p.left.style == SOLID );
p = rofi_theme_get_padding ( &wid, "dash", pi);
TASSERT ( p.left.distance == 1.5 );
TASSERT ( p.left.type == PW_EM );
TASSERT ( p.left.style == DASH );
TASSERT ( rofi_theme != NULL );
rofi_theme_free ( rofi_theme );
rofi_theme = NULL;
}
{
// Test newline and link.