Commit deaae4b8 authored by Mike McCormack's avatar Mike McCormack Committed by Alexandre Julliard

Empty strings are not equal to any number, so all comparisons against

them fail except for tests for non-equalness.
parent a8d9a2a4
...@@ -194,12 +194,18 @@ boolean_factor: ...@@ -194,12 +194,18 @@ boolean_factor:
| symbol_s operator value_i | symbol_s operator value_i
{ {
int num; int num;
$$ = num_from_prop( $1, &num ) && compare_int( num, $2, $3 ); if (num_from_prop( $1, &num ))
$$ = compare_int( num, $2, $3 );
else
$$ = ($2 == COND_NE || $2 == COND_INE );
} }
| value_i operator symbol_s | value_i operator symbol_s
{ {
int num; int num;
$$ = num_from_prop( $3, &num ) && compare_int( $1, $2, num ); if (num_from_prop( $3, &num ))
$$ = compare_int( $1, $2, num );
else
$$ = ($2 == COND_NE || $2 == COND_INE );
} }
| symbol_s operator symbol_s | symbol_s operator symbol_s
{ {
......
...@@ -599,6 +599,24 @@ void test_condition(void) ...@@ -599,6 +599,24 @@ void test_condition(void)
r = MsiEvaluateCondition(hpkg, "bandalmael=0"); r = MsiEvaluateCondition(hpkg, "bandalmael=0");
ok( r == MSICONDITION_FALSE, "wrong return val\n"); ok( r == MSICONDITION_FALSE, "wrong return val\n");
r = MsiEvaluateCondition(hpkg, "bandalmael<>0");
ok( r == MSICONDITION_TRUE, "wrong return val\n");
r = MsiEvaluateCondition(hpkg, "bandalmael<0");
ok( r == MSICONDITION_FALSE, "wrong return val\n");
r = MsiEvaluateCondition(hpkg, "bandalmael>0");
ok( r == MSICONDITION_FALSE, "wrong return val\n");
r = MsiEvaluateCondition(hpkg, "bandalmael>=0");
ok( r == MSICONDITION_FALSE, "wrong return val\n");
r = MsiEvaluateCondition(hpkg, "bandalmael<=0");
ok( r == MSICONDITION_FALSE, "wrong return val\n");
r = MsiEvaluateCondition(hpkg, "bandalmael~<>0");
ok( r == MSICONDITION_TRUE, "wrong return val\n");
MsiSetProperty(hpkg, "bandalmael", "0" ); MsiSetProperty(hpkg, "bandalmael", "0" );
r = MsiEvaluateCondition(hpkg, "bandalmael=0"); r = MsiEvaluateCondition(hpkg, "bandalmael=0");
ok( r == MSICONDITION_TRUE, "wrong return val\n"); ok( r == MSICONDITION_TRUE, "wrong return val\n");
...@@ -646,6 +664,8 @@ void test_condition(void) ...@@ -646,6 +664,8 @@ void test_condition(void)
MsiSetProperty(hpkg, "bandalmael", "0.0" ); MsiSetProperty(hpkg, "bandalmael", "0.0" );
r = MsiEvaluateCondition(hpkg, "bandalmael=0"); r = MsiEvaluateCondition(hpkg, "bandalmael=0");
ok( r == MSICONDITION_FALSE, "wrong return val\n"); ok( r == MSICONDITION_FALSE, "wrong return val\n");
r = MsiEvaluateCondition(hpkg, "bandalmael<>0");
ok( r == MSICONDITION_TRUE, "wrong return val\n");
MsiCloseHandle( hpkg ); MsiCloseHandle( hpkg );
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment