Mike McCormack : msi: Add some more MsiFormatRecord tests.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jun 12 10:02:29 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 7f64332d11d73836180734e180ebfceffaa3bfa9
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=7f64332d11d73836180734e180ebfceffaa3bfa9

Author: Mike McCormack <mike at codeweavers.com>
Date:   Mon Jun 12 15:06:59 2006 +0900

msi: Add some more MsiFormatRecord tests.

---

 dlls/msi/tests/format.c |  115 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 112 insertions(+), 3 deletions(-)

diff --git a/dlls/msi/tests/format.c b/dlls/msi/tests/format.c
index aaa57aa..e776fa6 100644
--- a/dlls/msi/tests/format.c
+++ b/dlls/msi/tests/format.c
@@ -1060,18 +1060,127 @@ static void test_formatrecord(void)
     sz = sizeof buffer;
     r = MsiFormatRecord(0, hrec, buffer, &sz);
     ok( sz == 13, "size wrong\n");
-    ok( 0 == strcmp(buffer,"{[1{{bo}o}}]}"), "wrong output\n");
+    ok( 0 == strcmp(buffer,"{[1{{bo}o}}]}"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
     r = MsiRecordSetString(hrec, 0, "{[1{{b{o}o}}]}");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 14, "size wrong\n");
+    ok( 0 == strcmp(buffer,"{[1{{b{o}o}}]}"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "{ {[1]}");
     r = MsiRecordSetString(hrec, 1, "hoo");
     sz = sizeof buffer;
     r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 5, "size wrong\n");
+    ok( 0 == strcmp(buffer," {hoo"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    /* {} inside a substitution does strange things... */
+    r = MsiRecordSetString(hrec, 0, "[[1]{}]");
+    r = MsiRecordSetString(hrec, 1, "2");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 5, "size wrong\n");
+    ok( 0 == strcmp(buffer,"[[1]]"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "[[1]{}[1]]");
+    r = MsiRecordSetString(hrec, 1, "2");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 6, "size wrong\n");
+    ok( 0 == strcmp(buffer,"[[1]2]"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "[a[1]b[1]c{}d[1]e]");
+    r = MsiRecordSetString(hrec, 1, "2");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
     ok( sz == 14, "size wrong\n");
-    ok( 0 == strcmp(buffer,"{[1{{b{o}o}}]}"), "wrong output\n");
+    ok( 0 == strcmp(buffer,"[a[1]b[1]cd2e]"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    MsiCloseHandle(hrec);
+    r = MsiRecordSetString(hrec, 0, "[a[1]b");
+    r = MsiRecordSetString(hrec, 1, "2");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 6, "size wrong\n");
+    ok( 0 == strcmp(buffer,"[a[1]b"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "a[1]b]");
+    r = MsiRecordSetString(hrec, 1, "2");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 4, "size wrong\n");
+    ok( 0 == strcmp(buffer,"a2b]"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "]a[1]b");
+    r = MsiRecordSetString(hrec, 1, "2");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 4, "size wrong\n");
+    ok( 0 == strcmp(buffer,"]a2b"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "]a[1]b");
+    r = MsiRecordSetString(hrec, 1, "2");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 4, "size wrong\n");
+    ok( 0 == strcmp(buffer,"]a2b"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "\\[1]");
+    r = MsiRecordSetString(hrec, 1, "2");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 2, "size wrong\n");
+    ok( 0 == strcmp(buffer,"\\2"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "\\{[1]}");
+    r = MsiRecordSetString(hrec, 1, "2");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 2, "size wrong\n");
+    ok( 0 == strcmp(buffer,"\\2"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "a{b[1]c}d");
+    r = MsiRecordSetString(hrec, 1, NULL);
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 2, "size wrong\n");
+    ok( 0 == strcmp(buffer,"ad"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "{a[0]b}");
+    r = MsiRecordSetString(hrec, 1, "foo");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 9, "size wrong\n");
+    ok( 0 == strcmp(buffer,"a{a[0]b}b"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "[foo]");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 5, "size wrong\n");
+    ok( 0 == strcmp(buffer,"[foo]"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
+
+    r = MsiRecordSetString(hrec, 0, "{[1][-1][1]}");
+    r = MsiRecordSetString(hrec, 1, "foo");
+    sz = sizeof buffer;
+    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    ok( sz == 12, "size wrong\n");
+    ok( 0 == strcmp(buffer,"{foo[-1]foo}"), "wrong output %s\n",buffer);
+    ok( r == ERROR_SUCCESS, "format failed\n");
 }
 
 static void test_formatrecord_package(void)




More information about the wine-cvs mailing list