From 7f64332d11d73836180734e180ebfceffaa3bfa9 Mon Sep 17 00:00:00 2001 From: Mike McCormack Date: Mon, 12 Jun 2006 15:06:59 +0900 Subject: [PATCH] msi: Add some more MsiFormatRecord tests. --- dlls/msi/tests/format.c | 115 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 112 insertions(+), 3 deletions(-) diff --git a/dlls/msi/tests/format.c b/dlls/msi/tests/format.c index aaa57aacea..e776fa67dc 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) -- 2.32.0.93.g670b81a890