wine/dlls/msi tests/package.c cond.y
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Nov 14 06:29:11 CST 2005
ChangeSet ID: 21258
CVSROOT: /opt/cvs-commit
Module name: wine
Changes by: julliard at winehq.org 2005/11/14 06:29:10
Modified files:
dlls/msi/tests : package.c
dlls/msi : cond.y
Log message:
Mike McCormack <mike at codeweavers.com>
Empty strings are not equal to any number, so all comparisons against
them fail except for tests for non-equalness.
Patch: http://cvs.winehq.org/patch.py?id=21258
Old revision New revision Changes Path
1.11 1.12 +20 -0 wine/dlls/msi/tests/package.c
1.26 1.27 +8 -2 wine/dlls/msi/cond.y
Index: wine/dlls/msi/tests/package.c
diff -u -p wine/dlls/msi/tests/package.c:1.11 wine/dlls/msi/tests/package.c:1.12
--- wine/dlls/msi/tests/package.c:1.11 14 Nov 2005 12:29:10 -0000
+++ wine/dlls/msi/tests/package.c 14 Nov 2005 12:29:10 -0000
@@ -599,6 +599,24 @@ void test_condition(void)
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");
+
+ 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" );
r = MsiEvaluateCondition(hpkg, "bandalmael=0");
ok( r == MSICONDITION_TRUE, "wrong return val\n");
@@ -646,6 +664,8 @@ void test_condition(void)
MsiSetProperty(hpkg, "bandalmael", "0.0" );
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");
MsiCloseHandle( hpkg );
}
Index: wine/dlls/msi/cond.y
diff -u -p wine/dlls/msi/cond.y:1.26 wine/dlls/msi/cond.y:1.27
--- wine/dlls/msi/cond.y:1.26 14 Nov 2005 12:29:10 -0000
+++ wine/dlls/msi/cond.y 14 Nov 2005 12:29:10 -0000
@@ -194,12 +194,18 @@ boolean_factor:
| symbol_s operator value_i
{
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
{
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
{
More information about the wine-cvs
mailing list