diff options
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | Makefile.am | 23 | ||||
-rw-r--r-- | atlocal.in | 24 | ||||
-rwxr-xr-x | build-aux/move-if-change | 17 | ||||
-rw-r--r-- | configure.ac | 8 | ||||
-rw-r--r-- | tests/Makefile.am | 20 | ||||
-rw-r--r-- | tests/data/button.txt | 7 | ||||
-rw-r--r-- | tests/data/columns.txt | 194 | ||||
-rw-r--r-- | tests/data/icon.txt | 4 | ||||
-rw-r--r-- | tests/data/icon/firefox.16.0.2.0.ico.exe | bin | 0 -> 25214 bytes | |||
-rw-r--r-- | tests/data/tables.txt | 41 | ||||
-rw-r--r-- | tests/package.m4.in | 8 | ||||
-rw-r--r-- | tests/runtest.in | 12 | ||||
-rw-r--r-- | tests/testdatabase.ok | 1916 | ||||
-rw-r--r-- | tests/testrecord.ok | 200 | ||||
-rw-r--r-- | tests/testsuite.at | 209 | ||||
-rw-r--r-- | tests/testsuminfo.ok | 91 |
17 files changed, 537 insertions, 2241 deletions
@@ -3,4 +3,8 @@ /config.h.in /config.h.in~ /configure +/tests/package.m4 +/tests/testsuite +/tests/testsuite.dir +/tests/testsuite.log Makefile.in diff --git a/Makefile.am b/Makefile.am index a3da959..bb2516e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,5 @@ ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = libmsi . tests +SUBDIRS = libmsi tests . noinst_HEADERS = include/debug.h dist_include_HEADERS = include/libmsi.h @@ -17,3 +17,24 @@ msibuild_DEPENDENCIES = libmsi/libmsi.la msiinfo_SOURCES = tools/msiinfo.c msiinfo_LDADD = -lmsi $(GLIB_LIBS) $(GSF_LIBS) msiinfo_DEPENDENCIES = libmsi/libmsi.la + +# Autotest support + +dist_noinst_DATA = tests/testsuite.at tests/package.m4 tests/testsuite +DISTCLEANFILES = atconfig atlocal +CLEANFILES = testsuite.log + +check-local: $(srcdir)/tests/testsuite atconfig atlocal + $(SHELL) $(srcdir)/tests/testsuite AUTOTEST_PATH=. $(TESTSUITEFLAGS) + +installcheck-local: $(srcdir)/tests/testsuite atconfig atlocal + $(SHELL) $(srcdir)/tests/testsuite AUTOTEST_PATH=$(bindir) $(TESTSUITEFLAGS) + +clean-local: + -$(SHELL) tests/testsuite --clean + +$(srcdir)/tests/testsuite: tests/testsuite.at tests/package.m4 + cd $(srcdir)/tests && \ + $(AUTOM4TE) --language=autotest -o testsuite.tmp testsuite.at && \ + mv testsuite.tmp testsuite + diff --git a/atlocal.in b/atlocal.in new file mode 100644 index 0000000..bc84b6d --- /dev/null +++ b/atlocal.in @@ -0,0 +1,24 @@ +EXEEXT=@EXEEXT@ +case "@UUID_LIBS@" in + '') have_uuid=no ;; + *) have_uuid=yes ;; +esac + +dos2unix() { + # GNU sed required to build on mingw + sed 's/\r$//' "$@" +} + +_msiinfo() { + WINEDEBUG=-all msiinfo$EXEEXT "$@" > stdout.tmp + rc=$? + case "$1" in + export|extract) cat stdout.tmp ;; + *) dos2unix stdout.tmp ;; + esac + return $rc +} + +_msibuild() { + WINEDEBUG=-all msibuild$EXEEXT "$@" +} diff --git a/build-aux/move-if-change b/build-aux/move-if-change new file mode 100755 index 0000000..03dd02e --- /dev/null +++ b/build-aux/move-if-change @@ -0,0 +1,17 @@ +#!/bin/sh +# Like mv $1 $2, but if the files are the same, just delete $1. +# Status is zero if successful, nonzero otherwise. +# +# Copyright (C) 2011 Free Software Foundation, Inc. +# License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> +# This is free software: you are free to change and redistribute it. +# There is NO WARRANTY, to the extent permitted by law." + +if test -r "$2" && cmp -- "$1" "$2" >/dev/null; then + rm -f -- "$1" +else + if mv -f -- "$1" "$2"; then :; else + # Ignore failure due to a concurrent move-if-change. + test -r "$2" && cmp -- "$1" "$2" >/dev/null && rm -f -- "$1" + fi +fi diff --git a/configure.ac b/configure.ac index 19b8690..47c03cf 100644 --- a/configure.ac +++ b/configure.ac @@ -25,6 +25,12 @@ AS_IF([test "$uuid" = yes], LT_INIT([win32-dll disable-fast-install]) +AM_MISSING_PROG([AUTOM4TE], [autom4te]) +AC_CONFIG_TESTDIR([.]) +AC_CONFIG_FILES([atlocal]) +AC_CONFIG_FILES([tests/package.m4.tmp:tests/package.m4.in], + [$srcdir/build-aux/move-if-change tests/package.m4.tmp $srcdir/tests/package.m4 + cp $srcdir/tests/package.m4 tests/package.m4.tmp]) + AC_CONFIG_FILES([Makefile libmsi/Makefile tests/Makefile]) -AC_CONFIG_FILES([tests/runtest], [chmod +x tests/runtest]) AC_OUTPUT diff --git a/tests/Makefile.am b/tests/Makefile.am index 9da07c5..b10049b 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -8,30 +8,10 @@ testrecord_LDADD = ../libmsi/libmsi.la testdatabase_SOURCES = testdatabase.c testdatabase_LDADD = ../libmsi/libmsi.la -TESTS_ENVIRONMENT = srcdir=$(srcdir) ./runtest - if WIN32 noinst_PROGRAMS += testsuminfo testdatabase_LDADD += -lole32 testsuminfo_SOURCES = testsuminfo.c testsuminfo_LDADD = ../libmsi/libmsi.la -lole32 - -TESTS = \ - testdatabase$(EXEEXT) \ - testrecord$(EXEEXT) \ - testsuminfo$(EXEEXT) - endif - -CLEANFILES = \ - testdatabase.log testdatabase.diff \ - testrecord.log testrecord.diff \ - testsuminfo.log testsuminfo.diff - -EXTRA_DIST = runtest \ - testdatabase.ok \ - testrecord.ok \ - testsuminfo.ok - -.NOTPARALLEL: diff --git a/tests/data/button.txt b/tests/data/button.txt new file mode 100644 index 0000000..6412fe0 --- /dev/null +++ b/tests/data/button.txt @@ -0,0 +1,7 @@ +Property Order Value X Y Width Height Text Help
+s72 i2 s64 i2 i2 i2 i2 L0 L50
+RadioButton Property Order
+IAgree 1 Yes 5 0 250 15 {\DlgFont8}I &accept the terms in the License Agreement
+IAgree 2 No 5 20 250 15 {\DlgFont8}I &do not accept the terms in the License Agreement
+AppsShutdownOption 1 All 5 5 320 15 Automatically &close applications and attempt to restart them after setup is complete.
+AppsShutdownOption 2 None 5 25 320 15 Do ¬ close applications. (A Reboot will be required.)
diff --git a/tests/data/columns.txt b/tests/data/columns.txt new file mode 100644 index 0000000..8e03597 --- /dev/null +++ b/tests/data/columns.txt @@ -0,0 +1,194 @@ +Table Number Name Type
+s64 i2 s64 i2
+_Columns
+AdminExecuteSequence 1 Action 11592
+AdminExecuteSequence 2 Condition 7679
+AdminExecuteSequence 3 Sequence 5378
+AdminUISequence 1 Action 11592
+AdminUISequence 2 Condition 7679
+AdminUISequence 3 Sequence 5378
+AdvtExecuteSequence 1 Action 11592
+AdvtExecuteSequence 2 Condition 7679
+AdvtExecuteSequence 3 Sequence 5378
+BBControl 1 Billboard_ 11570
+BBControl 2 BBControl 11570
+BBControl 3 Type 3378
+BBControl 4 X 1282
+BBControl 5 Y 1282
+BBControl 6 Width 1282
+BBControl 7 Height 1282
+BBControl 8 Attributes 4356
+BBControl 9 Text 7986
+Binary 1 Name 11592
+Binary 2 Data 2304
+CheckBox 1 Property 11592
+CheckBox 2 Value 7488
+Property 1 Property 11592
+Property 2 Value 3840
+ComboBox 1 Property 11592
+ComboBox 2 Order 9474
+ComboBox 3 Value 3392
+ComboBox 4 Text 8000
+Control 1 Dialog_ 11592
+Control 2 Control 11570
+Control 3 Type 3348
+Control 4 X 1282
+Control 5 Y 1282
+Control 6 Width 1282
+Control 7 Height 1282
+Control 8 Attributes 4356
+Control 9 Property 7474
+Control 10 Text 7936
+Control 11 Control_Next 7474
+Control 12 Help 7986
+ActionText 1 Action 11592
+ActionText 2 Description 7936
+ActionText 3 Template 7936
+Icon 1 Name 11592
+Icon 2 Data 2304
+ListBox 1 Property 11592
+ListBox 2 Order 9474
+ListBox 3 Value 3392
+ListBox 4 Text 8000
+ControlCondition 1 Dialog_ 11592
+ControlCondition 2 Control_ 11570
+ControlCondition 3 Action 11570
+ControlCondition 4 Condition 11775
+ControlEvent 1 Dialog_ 11592
+ControlEvent 2 Control_ 11570
+ControlEvent 3 Event 11570
+ControlEvent 4 Argument 11775
+ControlEvent 5 Condition 15871
+ControlEvent 6 Ordering 5378
+Dialog 1 Dialog 11592
+Dialog 2 HCentering 1282
+Dialog 3 VCentering 1282
+Dialog 4 Width 1282
+Dialog 5 Height 1282
+Dialog 6 Attributes 4356
+Dialog 7 Title 8064
+Dialog 8 Control_First 3378
+Dialog 9 Control_Default 7474
+Dialog 10 Control_Cancel 7474
+EventMapping 1 Dialog_ 11592
+EventMapping 2 Control_ 11570
+EventMapping 3 Event 11570
+EventMapping 4 Attribute 3378
+InstallExecuteSequence 1 Action 11592
+InstallExecuteSequence 2 Condition 7679
+InstallExecuteSequence 3 Sequence 5378
+InstallUISequence 1 Action 11592
+InstallUISequence 2 Condition 7679
+InstallUISequence 3 Sequence 5378
+ListView 1 Property 11592
+ListView 2 Order 9474
+ListView 3 Value 3392
+ListView 4 Text 8000
+ListView 5 Binary_ 7496
+RadioButton 1 Property 11592
+RadioButton 2 Order 9474
+RadioButton 3 Value 3392
+RadioButton 4 X 1282
+RadioButton 5 Y 1282
+RadioButton 6 Width 1282
+RadioButton 7 Height 1282
+RadioButton 8 Text 7936
+RadioButton 9 Help 7986
+TextStyle 1 TextStyle 11592
+TextStyle 2 FaceName 3360
+TextStyle 3 Size 1282
+TextStyle 4 Color 4356
+TextStyle 5 StyleBits 5378
+UIText 1 Key 11592
+UIText 2 Text 8191
+_Validation 1 Table 11552
+_Validation 2 Column 11552
+_Validation 3 Nullable 3332
+_Validation 4 MinValue 4356
+_Validation 5 MaxValue 4356
+_Validation 6 KeyTable 7679
+_Validation 7 KeyColumn 5378
+_Validation 8 Category 7456
+_Validation 9 Set 7679
+_Validation 10 Description 7679
+Feature 1 Feature 11558
+Feature 2 Feature_Parent 7462
+Feature 3 Title 8000
+Feature 4 Description 8191
+Feature 5 Display 5378
+Feature 6 Level 1282
+Feature 7 Directory_ 7496
+Feature 8 Attributes 1282
+File 1 File 11592
+File 2 Component_ 3400
+File 3 FileName 4095
+File 4 FileSize 260
+File 5 Version 7496
+File 6 Language 7444
+File 7 Attributes 5378
+File 8 Sequence 1282
+Directory 1 Directory 11592
+Directory 2 Directory_Parent 7496
+Directory 3 DefaultDir 4095
+Component 1 Component 11592
+Component 2 ComponentId 7462
+Component 3 Directory_ 3400
+Component 4 Attributes 1282
+Component 5 Condition 7679
+Component 6 KeyPath 7496
+CustomAction 1 Action 11592
+CustomAction 2 Type 1282
+CustomAction 3 Source 7488
+CustomAction 4 Target 7679
+CustomAction 5 ExtendedType 4356
+Error 1 Error 9474
+Error 2 Message 7936
+FeatureComponents 1 Feature_ 11558
+FeatureComponents 2 Component_ 11592
+LaunchCondition 1 Condition 11775
+LaunchCondition 2 Description 4095
+Media 1 DiskId 9474
+Media 2 LastSequence 1282
+Media 3 DiskPrompt 8000
+Media 4 Cabinet 7679
+Media 5 VolumeLabel 7456
+Media 6 Source 7456
+MsiFileHash 1 File_ 11592
+MsiFileHash 2 Options 1282
+MsiFileHash 3 HashPart1 260
+MsiFileHash 4 HashPart2 260
+MsiFileHash 5 HashPart3 260
+MsiFileHash 6 HashPart4 260
+Registry 1 Registry 11592
+Registry 2 Root 1282
+Registry 3 Key 4095
+Registry 4 Name 8191
+Registry 5 Value 7936
+Registry 6 Component_ 3400
+SelfReg 1 File_ 11592
+SelfReg 2 Cost 5378
+Shortcut 1 Shortcut 11592
+Shortcut 2 Directory_ 3400
+Shortcut 3 Name 3968
+Shortcut 4 Component_ 3400
+Shortcut 5 Target 3400
+Shortcut 6 Arguments 7679
+Shortcut 7 Description 8191
+Shortcut 8 Hotkey 5378
+Shortcut 9 Icon_ 7496
+Shortcut 10 IconIndex 5378
+Shortcut 11 ShowCmd 5378
+Shortcut 12 WkDir 7496
+Shortcut 13 DisplayResourceDLL 7524
+Shortcut 14 DisplayResourceId 4356
+Shortcut 15 DescriptionResourceDLL 7524
+Shortcut 16 DescriptionResourceId 4356
+Upgrade 1 UpgradeCode 11558
+Upgrade 2 VersionMin 15636
+Upgrade 3 VersionMax 15636
+Upgrade 4 Language 15871
+Upgrade 5 Attributes 8452
+Upgrade 6 Remove 7679
+Upgrade 7 ActionProperty 3400
+_MAKEMSI_Cabs 1 Name 11568
+_MAKEMSI_Cabs 2 Data 6400
diff --git a/tests/data/icon.txt b/tests/data/icon.txt new file mode 100644 index 0000000..83dcbc8 --- /dev/null +++ b/tests/data/icon.txt @@ -0,0 +1,4 @@ +Name Data
+s72 v0
+Icon Name
+firefox.16.0.2.0.ico.exe firefox.16.0.2.0.ico.exe
diff --git a/tests/data/icon/firefox.16.0.2.0.ico.exe b/tests/data/icon/firefox.16.0.2.0.ico.exe Binary files differnew file mode 100644 index 0000000..ce218a0 --- /dev/null +++ b/tests/data/icon/firefox.16.0.2.0.ico.exe diff --git a/tests/data/tables.txt b/tests/data/tables.txt new file mode 100644 index 0000000..1cf9b77 --- /dev/null +++ b/tests/data/tables.txt @@ -0,0 +1,41 @@ +Name
+s64
+_Tables
+AdminExecuteSequence
+AdminUISequence
+AdvtExecuteSequence
+BBControl
+Binary
+CheckBox
+Property
+ComboBox
+Control
+ActionText
+Icon
+ListBox
+ControlCondition
+ControlEvent
+Dialog
+EventMapping
+InstallExecuteSequence
+InstallUISequence
+ListView
+RadioButton
+TextStyle
+UIText
+_Validation
+Feature
+File
+Directory
+Component
+CustomAction
+Error
+FeatureComponents
+LaunchCondition
+Media
+MsiFileHash
+Registry
+SelfReg
+Shortcut
+Upgrade
+_MAKEMSI_Cabs
diff --git a/tests/package.m4.in b/tests/package.m4.in new file mode 100644 index 0000000..57ae927 --- /dev/null +++ b/tests/package.m4.in @@ -0,0 +1,8 @@ +# Signature of the current package. +m4_define([AT_PACKAGE_NAME], [@PACKAGE_NAME@]) +m4_define([AT_PACKAGE_TARNAME], [@PACKAGE_TARNAME@]) +m4_define([AT_PACKAGE_VERSION], [@PACKAGE_VERSION@]) +m4_define([AT_PACKAGE_STRING], [@PACKAGE_STRING@]) +m4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@]) +m4_define([AT_PACKAGE_URL], [@PACKAGE_URL@]) + diff --git a/tests/runtest.in b/tests/runtest.in deleted file mode 100644 index f8a3f4e..0000000 --- a/tests/runtest.in +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/bash - -: ${srcdir=$(basename $0)} -: ${EXEEXT=@EXEEXT@} - -base=${1%${EXEEXT}} - -rm -f winetest-db.msi -$1 > $base.log -diff -u $srcdir/$base.ok $base.log | tee $base.diff -test -s $base.diff && exit 1 -exit 0 diff --git a/tests/testdatabase.ok b/tests/testdatabase.ok deleted file mode 100644 index 2141550..0000000 --- a/tests/testdatabase.ok +++ /dev/null @@ -1,1916 +0,0 @@ -ok: res == LIBMSI_RESULT_OPEN_FAILED
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: -1 != access( msifile, F_OK )
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: -1 != access( msifile2, F_OK )
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: -1 == access( msifile2, F_OK )
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: -1 != access( msifile2, F_OK )
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: -1 != access( msifile, F_OK )
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: -1 == access( msifile, F_OK )
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: -1 != access( msifile, F_OK )
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == 0
-ok: res == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 3
-ok: r == false
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf,"Abe")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf,"8675309")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: hrec == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r != LIBMSI_RESULT_SUCCESS
-ok: r != LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 0
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: rec
-ok: check_record( rec, 1, "S255")
-ok: check_record( rec, 2, "S1")
-ok: check_record( rec, 3, "I2")
-ok: check_record( rec, 4, "I2")
-ok: check_record( rec, 5, "I2")
-ok: check_record( rec, 6, "I4")
-ok: check_record( rec, 7, "S0")
-ok: 0x3dff == get_columns_table_type(hdb, "Properties", 1 )
-ok: 0x1d01 == get_columns_table_type(hdb, "Properties", 2 )
-ok: 0x1502 == get_columns_table_type(hdb, "Properties", 3 )
-ok: 0x1502 == get_columns_table_type(hdb, "Properties", 4 )
-ok: 0x1502 == get_columns_table_type(hdb, "Properties", 5 )
-ok: 0x1104 == get_columns_table_type(hdb, "Properties", 6 )
-ok: 0x1d00 == get_columns_table_type(hdb, "Properties", 7 )
-ok: rec
-ok: check_record( rec, 1, "Property")
-ok: check_record( rec, 2, "Value")
-ok: check_record( rec, 3, "Intvalue")
-ok: check_record( rec, 4, "Integervalue")
-ok: check_record( rec, 5, "Shortvalue")
-ok: check_record( rec, 6, "Longvalue")
-ok: check_record( rec, 7, "Longcharvalue")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: rec
-ok: check_record( rec, 1, "S255")
-ok: check_record( rec, 2, "V0")
-ok: 0x3dff == get_columns_table_type(hdb, "Binary", 1 )
-ok: 0x1900 == get_columns_table_type(hdb, "Binary", 2 )
-ok: rec
-ok: check_record( rec, 1, "Name")
-ok: check_record( rec, 2, "Data")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: 0x2d48 == get_columns_table_type(hdb, "UIText", 1 )
-ok: 0x1fff == get_columns_table_type(hdb, "UIText", 2 )
-ok: rec
-ok: check_record( rec, 1, "Key")
-ok: check_record( rec, 2, "Text")
-ok: rec
-ok: check_record( rec, 1, "s72")
-ok: check_record( rec, 2, "L255")
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer,"Name")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer,"s64")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: rec == 0
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: r == LIBMSI_RESULT_INVALID_HANDLE
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: fd != -1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: length == strlen(expected)
-ok: !strcmp(buffer, expected)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: len == STRING_LENGTH
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: rec
-ok: check_record( rec, 1, "s62")
-ok: check_record( rec, 2, "V0")
-ok: rec
-ok: check_record( rec, 1, "Name")
-ok: check_record( rec, 2, "Data")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(file, "data")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "test.txt\n")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(file, "data1")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "test1.txt\n")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(file, "data1")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(file, "Binary.filename1.1")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "test.txt\n")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(file, "filename1")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "test.txt\n")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: check_record( rec, 1, "cond2")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: check_record( rec, 1, "cond3")
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: check_record( rec, 4, "zero.cab")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: check_record( rec, 4, "one.cab")
-ok: 2 == r
-ok: 1 == r
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, "2" )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, "3" )
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 9
-ok: check_record(rec, 1, "FirstPrimaryColumn")
-ok: check_record(rec, 2, "SecondPrimaryColumn")
-ok: check_record(rec, 3, "ShortInt")
-ok: check_record(rec, 4, "ShortIntNullable")
-ok: check_record(rec, 5, "LongInt")
-ok: check_record(rec, 6, "LongIntNullable")
-ok: check_record(rec, 7, "String")
-ok: check_record(rec, 8, "LocalizableString")
-ok: check_record(rec, 9, "LocalizableStringNullable")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 9
-ok: check_record(rec, 1, "s255")
-ok: check_record(rec, 2, "i2")
-ok: check_record(rec, 3, "i2")
-ok: check_record(rec, 4, "I2")
-ok: check_record(rec, 5, "i4")
-ok: check_record(rec, 6, "I4")
-ok: check_record(rec, 7, "S255")
-ok: check_record(rec, 8, "S0")
-ok: check_record(rec, 9, "s0")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: check_record(rec, 1, "stringage")
-ok: check_record(rec, 7, "another string")
-ok: check_record(rec, 8, "localizable")
-ok: check_record(rec, 9, "duh")
-ok: i == 5
-ok: i == 2
-ok: i == MSI_NULL_INTEGER
-ok: i == 2147483640
-ok: i == -2147483640
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: check_record(rec, 1, "PrimaryOne")
-ok: check_record(rec, 2, "PrimaryTwo")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: check_record(rec, 1, "s255")
-ok: check_record(rec, 2, "s255")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: check_record(rec, 1, "papaya")
-ok: check_record(rec, 2, "leaf")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: check_record(rec, 1, "papaya")
-ok: check_record(rec, 2, "flower")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 6
-ok: check_record(rec, 1, "A")
-ok: check_record(rec, 2, "B")
-ok: check_record(rec, 3, "C")
-ok: check_record(rec, 4, "D")
-ok: check_record(rec, 5, "E")
-ok: check_record(rec, 6, "F")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 6
-ok: check_record(rec, 1, "s72")
-ok: check_record(rec, 2, "s72")
-ok: check_record(rec, 3, "s72")
-ok: check_record(rec, 4, "s72")
-ok: check_record(rec, 5, "s72")
-ok: check_record(rec, 6, "s72")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: check_record(rec, 1, "a")
-ok: check_record(rec, 2, "b")
-ok: check_record(rec, 3, "c")
-ok: check_record(rec, 4, "d")
-ok: check_record(rec, 5, "e")
-ok: check_record(rec, 6, "f")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: check_record(rec, 1, "g")
-ok: check_record(rec, 2, "h")
-ok: check_record(rec, 3, "i")
-ok: check_record(rec, 4, "j")
-ok: check_record(rec, 5, "k")
-ok: check_record(rec, 6, "l")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(file, "filename1")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "just some words")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: i == MY_NQUERIES
-ok: i == MY_NQUERIES
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == S_OK
-ok: r == S_OK
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !memcmp(buffer, "naengmyon", 9)
-ok: sz == 9
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "c")
-ok: r == 0x80000000
-ok: r == 5
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "b")
-ok: r == 0x80000000
-ok: r == 0x80000000
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, join_res_first[i].one )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, join_res_first[i].two )
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, join_res_first[i].one )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, join_res_first[i].two )
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, join_res_first[i].one )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, join_res_first[i].two )
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, join_res_first[i].one )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, join_res_first[i].two )
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, join_res_first[i].one )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buf, join_res_first[i].two )
-ok: i == 5
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: i == 24
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: data_correct
-ok: i == 2
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: data_correct
-ok: i == 2
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: data_correct
-ok: i == 1
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: data_correct
-ok: i == 1
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: data_correct
-ok: i == 6
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: data_correct
-ok: i == 3
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: data_correct
-ok: i == 6
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 4
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 4
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 4
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 4
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 4
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 4
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: data_correct
-ok: i == 6
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 6
-ok: count == 6
-ok: count == 6
-ok: count == 6
-ok: count == 6
-ok: count == 6
-ok: data_correct
-ok: i == 6
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: cond == LIBMSI_CONDITION_ERROR
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: cond == LIBMSI_CONDITION_ERROR
-ok: cond == LIBMSI_CONDITION_NONE
-ok: cond == LIBMSI_CONDITION_NONE
-ok: cond == LIBMSI_CONDITION_NONE
-ok: cond == LIBMSI_CONDITION_NONE
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: cond == LIBMSI_CONDITION_TRUE
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: cond == LIBMSI_CONDITION_TRUE
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: cond == LIBMSI_CONDITION_FALSE
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: cond == LIBMSI_CONDITION_NONE
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: cond == LIBMSI_CONDITION_TRUE
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: cond == LIBMSI_CONDITION_NONE
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: 0 == strcmp("G255", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: 0 == strcmp("j2", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: cond == LIBMSI_CONDITION_FALSE
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 8
-ok: check_record(rec, 1, "one")
-ok: check_record(rec, 2, "two")
-ok: check_record(rec, 3, "three")
-ok: check_record(rec, 4, "four")
-ok: check_record(rec, 5, "five")
-ok: check_record(rec, 6, "six")
-ok: check_record(rec, 7, "seven")
-ok: check_record(rec, 8, "eight")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 8
-ok: check_record(rec, 1, "I2")
-ok: check_record(rec, 2, "I2")
-ok: check_record(rec, 3, "I2")
-ok: check_record(rec, 4, "I4")
-ok: check_record(rec, 5, "i2")
-ok: check_record(rec, 6, "i2")
-ok: check_record(rec, 7, "i2")
-ok: check_record(rec, 8, "i4")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == -1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 8
-ok: i == MSI_NULL_INTEGER
-ok: i == MSI_NULL_INTEGER
-ok: i == 2
-ok: i == 4
-ok: i == 5
-ok: i == 6
-ok: i == 7
-ok: i == 8
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(result, "this is text")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strlen(result)
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(result, "this is text")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strlen(result)
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(result, "this is text")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(result, "this is text")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(result, "this is text")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 8
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 8
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 5
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "foo")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "baz")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "bar")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "foo")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "baz")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "baz")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "bar")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "baz")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "baz")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "baz")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "foo")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "bar")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "foo")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "A")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "B")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "C")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "E")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "D")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "E")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "F")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "A")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "apple")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "two")
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "apple")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "two")
-ok: r == 2
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "apple")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "two")
-ok: r == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "banana")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "three")
-ok: r == 3
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 2
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "one")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 2
-ok: r == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "two")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 2
-ok: r == 5
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "five")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: hr == S_OK
-ok: stg != NULL
-ok: hr == S_OK
-ok: stm != NULL
-ok: hr == S_OK
-ok: read == 4
-ok: hr == S_OK
-ok: hr == S_OK
-ok: stm != NULL
-ok: hr == S_OK
-ok: read == 8
-ok: hr == S_OK
-ok: hr == S_OK
-ok: stm != NULL
-ok: hr == S_OK
-ok: read == 24
-ok: !memcmp(buffer, data12, read)
-ok: hr == S_OK
-ok: hr == S_OK
-ok: stm != NULL
-ok: hr == S_OK
-ok: hr == S_OK
-ok: hr == S_OK
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: hr == S_OK
-ok: stg != NULL
-ok: hr == S_OK
-ok: !lstrcmpW(stat.pwcsName, database_table_data[n].name)
-ok: hr == S_OK
-ok: stm != NULL
-ok: hr == S_OK
-ok: count == database_table_data[n].size
-ok: !memcmp(data, check, MAX_PATH)
-ok: !lstrcmpW(stat.pwcsName, database_table_data[n].name)
-ok: hr == S_OK
-ok: stm != NULL
-ok: hr == S_OK
-ok: count == database_table_data[n].size
-ok: !memcmp(data, check, MAX_PATH)
-ok: !lstrcmpW(stat.pwcsName, database_table_data[n].name)
-ok: hr == S_OK
-ok: stm != NULL
-ok: hr == S_OK
-ok: count == database_table_data[n].size
-ok: !memcmp(data, database_table_data[n].data, database_table_data[n].size)
-ok: n == 3
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 3
-ok: val == 4
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 5
-ok: val == 6
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 1
-ok: val == 2
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 1
-ok: val == 12
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 3
-ok: val == 12
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 5
-ok: val == 12
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 1
-ok: val == 14
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 3
-ok: val == 14
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 5
-ok: val == 14
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 1
-ok: val == 10
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 3
-ok: val == 10
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 5
-ok: val == 10
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "dos")
-ok: r == 3
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "two")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "This is a \"string\" ok")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "This is a new 'string' ok")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "\rOne")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "Tw\ro")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "Three\r")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "Table")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "Table2")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "Table3")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "Table")
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "A")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "Table2")
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "A")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "Table3")
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "A")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "hi")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: fd != -1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "\r\n\r\n0\t_ForceCodepage\r\n")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: fd != -1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "\r\n\r\n850\t_ForceCodepage\r\n")
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: hrec
-ok: check_record(hrec, 1, "s62")
-ok: check_record(hrec, 2, "V0")
-ok: hrec
-ok: check_record(hrec, 1, "Name")
-ok: check_record(hrec, 2, "Data")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(file, "stgname")
-ok: r == LIBMSI_RESULT_INVALID_DATA
-ok: !strcmp(buf, "apple")
-ok: size == 0
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: hr == S_OK
-ok: stg != NULL
-ok: hr == S_OK
-ok: inner != NULL
-ok: hr == S_OK
-ok: stm != NULL
-ok: hr == S_OK
-ok: size == 8
-ok: !strcmp(buf, "stgdata")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "One")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "One")
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "A")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "One")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "One")
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "B")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "One")
-ok: r == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "C")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == vals[i][0]
-ok: r == vals[i][1]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == vals[i][0]
-ok: r == vals[i][1]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == vals[i][0]
-ok: r == vals[i][1]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == vals[i][0]
-ok: r == vals[i][1]
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == ordervals[i][0]
-ok: r == ordervals[i][1]
-ok: r == ordervals[i][2]
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("s255", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("I2", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("S255", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("i2", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("i2", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("D", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("E", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("A", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("C", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("B", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("bc", buf)
-ok: r == 3
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("a", buf)
-ok: r == 2
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("T", buf)
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("D", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("T", buf)
-ok: r == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("E", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("T", buf)
-ok: r == 3
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("A", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("T", buf)
-ok: r == 4
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("C", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("T", buf)
-ok: r == 5
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("B", buf)
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("i2", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("S255", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("s255", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("I2", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("i2", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("C", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("A", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("D", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("E", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("B", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("a", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("bc", buf)
-ok: r == 3
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("T", buf)
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("D", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("T", buf)
-ok: r == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("E", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("T", buf)
-ok: r == 3
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("A", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("T", buf)
-ok: r == 4
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("C", buf)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("T", buf)
-ok: r == 5
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp("B", buf)
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 14
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_INT
-ok: int_value == 1252
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_STRING
-ok: size == 18
-ok: !strcmp(str_value, "Installer Database")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_STRING
-ok: !strcmp(str_value, "Installer description")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_STRING
-ok: !strcmp(str_value, "WineHQ")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_STRING
-ok: !strcmp(str_value, "Installer")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_STRING
-ok: !strcmp(str_value, "Installer comments")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_STRING
-ok: !strcmp(str_value, "Intel;1033,2057")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_STRING
-ok: !strcmp(str_value, "{12345678-1234-1234-1234-123456789012}")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_FILETIME
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_FILETIME
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_INT
-ok: int_value == 200
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_INT
-ok: int_value == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_INT
-ok: int_value == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == LIBMSI_PROPERTY_TYPE_STRING
-ok: !strcmp(str_value, "Vim")
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: hdb
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer,"b")
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer,"b")
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: res == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "\2")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "A")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "\1")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "B")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !memcmp(buffer, letter_a_ring, sizeof(letter_a_ring))
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "C")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !memcmp(buffer, letter_a_with_ring, sizeof(letter_a_with_ring))
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "D")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !memcmp(buffer, letter_a_with_ring, sizeof(letter_a_with_ring))
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buffer, "D")
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !memcmp( "text\r\ntext\ntext", buffer, sizeof("text\r\ntext\ntext") - 1 )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !buffer[0]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buffer, "f0" )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !buffer[0]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !buffer[0]
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buffer, "1" )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !buffer[0]
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !buffer[0]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buffer, "1" )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !buffer[0]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buffer, "3" )
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == 3
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buffer, "1" )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !buffer[0]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buffer, "2" )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buffer, "3" )
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !buffer[0]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp( buffer, "4" )
-ok: r == LIBMSI_RESULT_NO_MORE_ITEMS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_BAD_QUERY_SYNTAX
-ok: r == LIBMSI_RESULT_SUCCESS
diff --git a/tests/testrecord.ok b/tests/testrecord.ok deleted file mode 100644 index 28c2439..0000000 --- a/tests/testrecord.ok +++ /dev/null @@ -1,200 +0,0 @@ -ok: r==-1
-ok: r==0
-ok: r == MSI_NULL_INTEGER
-ok: r == LIBMSI_RESULT_INVALID_HANDLE
-ok: r == LIBMSI_RESULT_INVALID_HANDLE
-ok: h==0
-ok: h==0
-ok: r == LIBMSI_RESULT_INVALID_HANDLE
-ok: r == 0
-ok: h!=0
-ok: r==0
-ok: r
-ok: r
-ok: r
-ok: r==0
-ok: r==LIBMSI_RESULT_SUCCESS
-ok: sz==0
-ok: buf[0]==0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r==0
-ok: r==sizeof(unsigned)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: r==0
-ok: r == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == true
-ok: r == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: buf[0] == 0
-ok: sz == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == true
-ok: r == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: buf[0] == 0
-ok: sz == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == MSI_NULL_INTEGER
-ok: r==sizeof str-1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: 0==strcmp(buf,str)
-ok: sz == sizeof str-1
-ok: r == LIBMSI_RESULT_MORE_DATA
-ok: sz == sizeof str-1
-ok: 0==strncmp(buf,str,sizeof str-3)
-ok: buf[sizeof str - 3]==0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz == sizeof str-1
-ok: 0==strcmp(buf,str)
-ok: r == LIBMSI_RESULT_MORE_DATA
-ok: sz == 5
-ok: 0==memcmp(buf,str,4)
-ok: r == LIBMSI_RESULT_MORE_DATA
-ok: sz == 5
-ok: 'x'==buf[0]
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == 42
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == -42
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == MSI_NULL_INTEGER
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == MSI_NULL_INTEGER
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == MSI_NULL_INTEGER
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == MSI_NULL_INTEGER
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == -1530494976
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == 2147483647
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == -2147483647
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == 1
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == MSI_NULL_INTEGER
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == MSI_NULL_INTEGER
-ok: i == LIBMSI_RESULT_SUCCESS
-ok: i == MSI_NULL_INTEGER
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz == 2
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: 0==strcmp(buf,"32")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz == 3
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: 0==strcmp(buf,"-32")
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: r == LIBMSI_RESULT_INVALID_DATATYPE
-ok: sz == sizeof buf
-ok: r == 0
-ok: r == 4
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: h
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz==26
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz==0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz==sizeof buf
-ok: !strncmp(buf,"abcdefghij",10)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz==sizeof buf
-ok: !strncmp(buf,"klmnopqrst",10)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz==6
-ok: !strcmp(buf,"uvwxyz")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz==0
-ok: buf[0]==0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz==26
-ok: r == 26
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: rec != 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "")
-ok: sz == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "")
-ok: sz == 0
-ok: rec != 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: sz == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "5")
-ok: sz == 1
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "-5")
-ok: sz == 2
-ok: rec != 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == 5
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == -5
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: val == MSI_NULL_INTEGER
-ok: rec != 0
-ok: r == MSI_NULL_INTEGER
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "")
-ok: sz == 0
-ok: r == true
-ok: r == MSI_NULL_INTEGER
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == MSI_NULL_INTEGER
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "")
-ok: sz == 0
-ok: r == true
-ok: r == 42
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == MSI_NULL_INTEGER
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "")
-ok: sz == 0
-ok: r == true
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "bologna")
-ok: sz == 7
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == MSI_NULL_INTEGER
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(buf, "drone")
-ok: sz == 5
-ok: r == false
-ok: r == LIBMSI_RESULT_INVALID_TABLE
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r != MSI_NULL_INTEGER && r != 0
-ok: r == false
-ok: r == LIBMSI_RESULT_SUCCESS
diff --git a/tests/testsuite.at b/tests/testsuite.at new file mode 100644 index 0000000..e222d62 --- /dev/null +++ b/tests/testsuite.at @@ -0,0 +1,209 @@ +## Autotest testsuite for msitools. + +# Copyright (C) 2012 Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +m4_include([package.m4]) + +AT_INIT + +# AT_MSIDATA - copy data file from source tree + +m4_define([AT_MSIDATA], [ +dir=`dirname $1` +AS_MKDIR_P([$dir]) +AT_CHECK([cp $abs_srcdir/tests/data/$1 $1])]) + +# AT_DATA_UNQUOTED - define data file while allowing shell variables + +m4_define([AT_DATA_UNQUOTED], +[cat >$1 <<_ATEOF +$2[]_ATEOF +]) + +# AT_CR - literal carriage return + +m4_define([AT_CR], [`echo X | tr X '\015'`]) + +# AT_CHECK_MSIBUILD/AT_CHECK_MSIINFO - add exeext automatically +m4_define([AT_CHECK_MSIBUILD], [ +AT_CHECK([_msibuild ]$@)]) + +m4_define([AT_CHECK_MSIINFO], [ +AT_CHECK([_msiinfo ]$@)]) + +# Cannot use AT_TESTED because of $EXEEXT (Autotest bug) + +AT_BANNER([libmsi tests]) + +AT_SETUP([testdatabase]) +AT_KEYWORDS([testdatabase]) +AT_SKIP_IF([! test -f $abs_builddir/tests/testdatabase$EXEEXT]) +AT_CHECK([tests/testdatabase$EXEEXT], [ignore], [stdout], [ignore]) +AT_CHECK([grep ^FAIL stdout], [1], [], []) +AT_CLEANUP + +AT_SETUP([testrecord]) +AT_KEYWORDS([testrecord]) +AT_SKIP_IF([! test -f $abs_builddir/tests/testrecord$EXEEXT]) +AT_CHECK([tests/testrecord$EXEEXT], [ignore], [stdout], [ignore]) +AT_CHECK([grep ^FAIL stdout], [1], [], []) +AT_CLEANUP + +AT_SETUP([testsuminfo]) +AT_KEYWORDS([testsuminfo]) +AT_SKIP_IF([! test -f $abs_builddir/tests/testsuminfo$EXEEXT]) +AT_CHECK([tests/testsuminfo$EXEEXT], [ignore], [stdout], [ignore]) +AT_CHECK([grep ^FAIL stdout], [1], [], []) +AT_CLEANUP + +AT_BANNER([msibuild]) + +AT_SETUP([Invalid command line]) +AT_CHECK_MSIBUILD([], [1], [ignore], [ignore]) +AT_CHECK_MSIBUILD([out.msi], [1], [ignore], [ignore]) +AT_CHECK([test -f out.msi], [1]) +AT_CLEANUP + +AT_SETUP([Empty MSI]) +AT_CHECK_MSIBUILD([out.msi -s 'Project name']) +AT_CHECK_MSIINFO([suminfo out.msi], [ignore], [stdout]) +AT_CHECK([grep ^Subject stdout], [0], +[Subject: Project name +]) +AT_CHECK([grep ^Template stdout], [0], +[Template: ;1033 +]) +AT_CHECK([grep ^Version stdout], [0], +[Version: 200 (c8) +]) +AT_CLEANUP + +AT_SETUP([Valid UUID]) +AT_SKIP_IF([test $have_uuid = no]) +AT_CHECK_MSIBUILD([out.msi -s 'Project name']) +AT_CHECK_MSIINFO([suminfo out.msi], [ignore], [stdout]) +AT_CHECK([[ + UUID='\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}' + grep -E "^Revision number: $UUID\$" stdout]], [0], +[ignore]) +AT_CLEANUP + +AT_SETUP([UUID does not change]) +AT_SKIP_IF([test $have_uuid = no]) +AT_CHECK_MSIBUILD([out.msi -s 'Project name']) +AT_CHECK_MSIINFO([suminfo out.msi | grep ^Revision > expout], [0]) +AT_CHECK_MSIBUILD([out.msi -s 'Project name2']) +AT_CHECK_MSIINFO([suminfo out.msi], [ignore], [stdout]) +AT_CHECK([grep ^Subject stdout], [0], +[Subject: Project name2 +]) +AT_CHECK_MSIINFO([suminfo out.msi | grep ^Revision], [0], [expout]) +AT_CLEANUP + +AT_SETUP([Add stream]) +AT_DATA([test.txt], [This is test.txt +]) +AT_CHECK_MSIBUILD([out.msi -a Binary.testtxt test.txt]) +AT_CHECK_MSIINFO([streams out.msi | grep -v SummaryInformation], [0], +[Binary.testtxt +]) +cp test.txt expout +AT_CHECK_MSIINFO([extract out.msi Binary.testtxt], [0], [expout]) +AT_CLEANUP + +dnl AT_SETUP([Invalid import table]) +dnl AT_XFAIL_IF(:) +dnl AT_DATA([tables.txt], +dnl [Name +dnl s64 +dnl Binary +dnl ]) +dnl AT_CHECK_MSIBUILD([out.msi -i tables.txt]) +dnl AT_CLEANUP + +AT_SETUP([Add tables]) +AT_DATA([tables.txt], +[Name +s64 +_Tables +Binary +]) +AT_CHECK_MSIBUILD([out.msi -i tables.txt]) +AT_CHECK_MSIINFO([tables out.msi], [0], +[Binary +]) +AT_CLEANUP + +AT_SETUP([Add tables and definitions]) +AT_MSIDATA([tables.txt]) +AT_MSIDATA([columns.txt]) +AT_CHECK_MSIBUILD([out.msi -i tables.txt columns.txt]) +AT_DATA_UNQUOTED([expout], +[Name Data[]AT_CR +s72 v0[]AT_CR +Icon Name[]AT_CR +]) +AT_CHECK_MSIINFO([export out.msi Icon], [0], [expout]) +AT_CLEANUP + +AT_SETUP([Separate invocations]) +AT_MSIDATA([tables.txt]) +AT_MSIDATA([columns.txt]) +AT_CHECK_MSIBUILD([out.msi -i tables.txt]) +AT_CHECK_MSIINFO([tables out.msi > expout]) +AT_CHECK_MSIBUILD([out.msi -i columns.txt]) +AT_CHECK_MSIINFO([tables out.msi], [0], [expout]) +AT_CLEANUP + +AT_SETUP([Add table with data]) +AT_MSIDATA([tables.txt]) +AT_MSIDATA([columns.txt]) +AT_MSIDATA([button.txt]) +AT_CHECK_MSIBUILD([out.msi -i tables.txt columns.txt button.txt]) +cp button.txt expout +AT_CHECK_MSIINFO([export out.msi RadioButton], [0], [expout]) +AT_CLEANUP + +AT_SETUP([Add table with streams]) +AT_MSIDATA([tables.txt]) +AT_MSIDATA([columns.txt]) +AT_MSIDATA([icon.txt]) +AT_MSIDATA([icon/firefox.16.0.2.0.ico.exe]) +AT_CHECK_MSIBUILD([out.msi -i tables.txt columns.txt icon.txt]) +cp icon.txt expout +AT_CHECK_MSIINFO([streams out.msi | grep -v SummaryInformation], [0], +[Icon.firefox.16.0.2.0.ico.exe +]) +cp icon/firefox.16.0.2.0.ico.exe expout +AT_CHECK_MSIINFO([extract out.msi Icon.firefox.16.0.2.0.ico.exe > stdout], [0]) +AT_CHECK([cmp stdout expout]) +AT_CLEANUP + +AT_SETUP([Add tables]) +AT_DATA([tables.txt], +[Name +s64 +_Tables +Binary +]) +AT_CHECK_MSIBUILD([-i out.msi tables.txt]) +AT_CHECK_MSIINFO([tables out.msi], [0], +[Binary +]) +AT_CLEANUP + diff --git a/tests/testsuminfo.ok b/tests/testsuminfo.ok deleted file mode 100644 index 7ba7199..0000000 --- a/tests/testsuminfo.ok +++ /dev/null @@ -1,91 +0,0 @@ -ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_INVALID_HANDLE
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: count == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_UNKNOWN_PROPERTY
-ok: r == LIBMSI_RESULT_UNKNOWN_PROPERTY
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == 0
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: type == 0
-ok: val == 1234
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: buf[0]=='x'
-ok: sz == 0x10
-ok: type == LIBMSI_PROPERTY_TYPE_EMPTY
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH
-ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH
-ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH
-ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH
-ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH
-ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH
-ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: r == LIBMSI_RESULT_INVALID_PARAMETER
-ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH
-ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH
-ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_MORE_DATA
-ok: sz == 4
-ok: type == LIBMSI_PROPERTY_TYPE_STRING
-ok: !strcmp(buf,"M")
-ok: r == LIBMSI_RESULT_MORE_DATA
-ok: sz == 4
-ok: type == LIBMSI_PROPERTY_TYPE_STRING
-ok: !strcmp(buf,"Mik")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_DATATYPE_MISMATCH
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r
-ok: r == S_OK
-ok: r == S_OK
-ok: r == S_OK
-ok: r == S_OK
-ok: r == S_OK
-ok: r == S_OK
-ok: r == S_OK
-ok: r == S_OK
-ok: r == S_OK
-ok: r == S_OK
-ok: INVALID_FILE_ATTRIBUTES != GetFileAttributes(msifile)
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: !strcmp(sval, "") || !strcmp(sval, "7")
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_SUCCESS
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
-ok: r == LIBMSI_RESULT_FUNCTION_FAILED
|