Index: /trunk/src/VBox/Main/testcase/tstVBoxAPI.cpp
===================================================================
--- /trunk/src/VBox/Main/testcase/tstVBoxAPI.cpp	(revision 50396)
+++ /trunk/src/VBox/Main/testcase/tstVBoxAPI.cpp	(revision 50397)
@@ -25,4 +25,5 @@
 #include <VBox/com/Guid.h>
 #include <VBox/com/ErrorInfo.h>
+#include <VBox/com/errorprint.h>
 #include <VBox/com/VirtualBox.h>
 #include <VBox/sup.h>
@@ -54,101 +55,101 @@
 
 
-static void tstApiIVirtualBox(IVirtualBox *pVBox)
+static BOOL tstApiIVirtualBox(IVirtualBox *pVBox)
 {
-    HRESULT hrc;
+    HRESULT rc;
     Bstr bstrTmp;
     ULONG ulTmp;
 
     RTTestSub(g_hTest, "IVirtualBox::version");
-    hrc = pVBox->COMGETTER(Version)(bstrTmp.asOutParam());
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(Version)(bstrTmp.asOutParam()));
+    if (SUCCEEDED(rc))
         RTTestPassed(g_hTest, "IVirtualBox::version");
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::version failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::version failed", __LINE__);
 
     RTTestSub(g_hTest, "IVirtualBox::versionNormalized");
-    hrc = pVBox->COMGETTER(VersionNormalized)(bstrTmp.asOutParam());
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(VersionNormalized)(bstrTmp.asOutParam()));
+    if (SUCCEEDED(rc))
         RTTestPassed(g_hTest, "IVirtualBox::versionNormalized");
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::versionNormalized failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::versionNormalized failed", __LINE__);
 
     RTTestSub(g_hTest, "IVirtualBox::revision");
-    hrc = pVBox->COMGETTER(Revision)(&ulTmp);
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(Revision)(&ulTmp));
+    if (SUCCEEDED(rc))
         RTTestPassed(g_hTest, "IVirtualBox::revision");
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::revision failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::revision failed", __LINE__);
 
     RTTestSub(g_hTest, "IVirtualBox::packageType");
-    hrc = pVBox->COMGETTER(PackageType)(bstrTmp.asOutParam());
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(PackageType)(bstrTmp.asOutParam()));
+    if (SUCCEEDED(rc))
         RTTestPassed(g_hTest, "IVirtualBox::packageType");
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::packageType failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::packageType failed", __LINE__);
 
     RTTestSub(g_hTest, "IVirtualBox::APIVersion");
-    hrc = pVBox->COMGETTER(APIVersion)(bstrTmp.asOutParam());
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(APIVersion)(bstrTmp.asOutParam()));
+    if (SUCCEEDED(rc))
         RTTestPassed(g_hTest, "IVirtualBox::APIVersion");
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::APIVersion failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::APIVersion failed", __LINE__);
 
     RTTestSub(g_hTest, "IVirtualBox::homeFolder");
-    hrc = pVBox->COMGETTER(HomeFolder)(bstrTmp.asOutParam());
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(HomeFolder)(bstrTmp.asOutParam()));
+    if (SUCCEEDED(rc))
         RTTestPassed(g_hTest, "IVirtualBox::homeFolder");
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::homeFolder failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::homeFolder failed", __LINE__);
 
     RTTestSub(g_hTest, "IVirtualBox::settingsFilePath");
-    hrc = pVBox->COMGETTER(SettingsFilePath)(bstrTmp.asOutParam());
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(SettingsFilePath)(bstrTmp.asOutParam()));
+    if (SUCCEEDED(rc))
         RTTestPassed(g_hTest, "IVirtualBox::settingsFilePath");
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::settingsFilePath failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::settingsFilePath failed", __LINE__);
 
     com::SafeIfaceArray<IGuestOSType> guestOSTypes;
     RTTestSub(g_hTest, "IVirtualBox::guestOSTypes");
-    hrc = pVBox->COMGETTER(GuestOSTypes)(ComSafeArrayAsOutParam(guestOSTypes));
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(GuestOSTypes)(ComSafeArrayAsOutParam(guestOSTypes)));
+    if (SUCCEEDED(rc))
         RTTestPassed(g_hTest, "IVirtualBox::guestOSTypes");
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::guestOSTypes failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::guestOSTypes failed", __LINE__);
 
     /** Create VM */
     RTTestSub(g_hTest, "IVirtualBox::CreateMachine");
     ComPtr<IMachine> ptrMachine;
-    Bstr tstMachineName = "TestMachine";
+    Bstr tstMachineName = "tstVBoxAPI test VM";
     com::SafeArray<BSTR> groups;
     /** Default VM settings */
-    hrc = pVBox->CreateMachine(NULL,                          /** Settings */
-                               tstMachineName.raw(),          /** Name */
-                               ComSafeArrayAsInParam(groups), /** Groups */
-                               NULL,                          /** OS Type */
-                               NULL,                          /** Create flags */
-                               ptrMachine.asOutParam());      /** Machine */
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, CreateMachine(NULL,                          /** Settings */
+                                     tstMachineName.raw(),          /** Name */
+                                     ComSafeArrayAsInParam(groups), /** Groups */
+                                     NULL,                          /** OS Type */
+                                     NULL,                          /** Create flags */
+                                     ptrMachine.asOutParam()));     /** Machine */
+    if (SUCCEEDED(rc))
         RTTestPassed(g_hTest, "IVirtualBox::CreateMachine");
     else
     {
-        RTTestFailed(g_hTest, "%d: IVirtualBox::CreateMachine failed with return value %Rhrc.", __LINE__, hrc);
-        return;
+        RTTestFailed(g_hTest, "%d: IVirtualBox::CreateMachine failed", __LINE__);
+        return FALSE;
     }
 
     RTTestSub(g_hTest, "IVirtualBox::RegisterMachine");
-    hrc = pVBox->RegisterMachine(ptrMachine);
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, RegisterMachine(ptrMachine));
+    if (SUCCEEDED(rc))
         RTTestPassed(g_hTest, "IVirtualBox::RegisterMachine");
     else
     {
-        RTTestFailed(g_hTest, "%d: IVirtualBox::RegisterMachine failed with return value %Rhrc.", __LINE__, hrc);
-        return;
+        RTTestFailed(g_hTest, "%d: IVirtualBox::RegisterMachine failed", __LINE__);
+        return FALSE;
     }
 
     ComPtr<IHost> host;
     RTTestSub(g_hTest, "IVirtualBox::host");
-    hrc = pVBox->COMGETTER(Host)(host.asOutParam());
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(Host)(host.asOutParam()));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add IHost testing here. */
@@ -156,10 +157,10 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::host failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::host failed", __LINE__);
 
     ComPtr<ISystemProperties> sysprop;
     RTTestSub(g_hTest, "IVirtualBox::systemProperties");
-    hrc = pVBox->COMGETTER(SystemProperties)(sysprop.asOutParam());
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(SystemProperties)(sysprop.asOutParam()));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add ISystemProperties testing here. */
@@ -167,10 +168,10 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::systemProperties failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::systemProperties failed", __LINE__);
 
     com::SafeIfaceArray<IMachine> machines;
     RTTestSub(g_hTest, "IVirtualBox::machines");
-    hrc = pVBox->COMGETTER(Machines)(ComSafeArrayAsOutParam(machines));
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(Machines)(ComSafeArrayAsOutParam(machines)));
+    if (SUCCEEDED(rc))
     {
         bool bFound = FALSE;
@@ -180,6 +181,6 @@
             {
                 Bstr tmpName;
-                hrc = machines[i]->COMGETTER(Name)(tmpName.asOutParam());
-                if (SUCCEEDED(hrc))
+                CHECK_ERROR(machines[i], COMGETTER(Name)(tmpName.asOutParam()));
+                if (SUCCEEDED(rc))
                 {
                     if (tmpName == tstMachineName)
@@ -198,11 +199,11 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::machines failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::machines failed", __LINE__);
 
 #if 0 /** Not yet implemented */
     com::SafeIfaceArray<ISharedFolder> sharedFolders;
     RTTestSub(g_hTest, "IVirtualBox::sharedFolders");
-    hrc = pVBox->COMGETTER(SharedFolders)(ComSafeArrayAsOutParam(sharedFolders));
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(SharedFolders)(ComSafeArrayAsOutParam(sharedFolders)));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add ISharedFolders testing here. */
@@ -210,11 +211,11 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::sharedFolders failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::sharedFolders failed", __LINE__);
 #endif
 
     com::SafeIfaceArray<IMedium> hardDisks;
     RTTestSub(g_hTest, "IVirtualBox::hardDisks");
-    hrc = pVBox->COMGETTER(HardDisks)(ComSafeArrayAsOutParam(hardDisks));
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(HardDisks)(ComSafeArrayAsOutParam(hardDisks)));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add hardDisks testing here. */
@@ -222,10 +223,10 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::hardDisks failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::hardDisks failed", __LINE__);
 
     com::SafeIfaceArray<IMedium> DVDImages;
     RTTestSub(g_hTest, "IVirtualBox::DVDImages");
-    hrc = pVBox->COMGETTER(DVDImages)(ComSafeArrayAsOutParam(DVDImages));
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(DVDImages)(ComSafeArrayAsOutParam(DVDImages)));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add DVDImages testing here. */
@@ -233,10 +234,10 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::DVDImages failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::DVDImages failed", __LINE__);
 
     com::SafeIfaceArray<IMedium> floppyImages;
     RTTestSub(g_hTest, "IVirtualBox::floppyImages");
-    hrc = pVBox->COMGETTER(FloppyImages)(ComSafeArrayAsOutParam(floppyImages));
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(FloppyImages)(ComSafeArrayAsOutParam(floppyImages)));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add floppyImages testing here. */
@@ -244,10 +245,10 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::floppyImages failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::floppyImages failed", __LINE__);
 
     com::SafeIfaceArray<IProgress> progressOperations;
     RTTestSub(g_hTest, "IVirtualBox::progressOperations");
-    hrc = pVBox->COMGETTER(ProgressOperations)(ComSafeArrayAsOutParam(progressOperations));
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(ProgressOperations)(ComSafeArrayAsOutParam(progressOperations)));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add IProgress testing here. */
@@ -255,10 +256,10 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::progressOperations failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::progressOperations failed", __LINE__);
 
     ComPtr<IPerformanceCollector> performanceCollector;
     RTTestSub(g_hTest, "IVirtualBox::performanceCollector");
-    hrc = pVBox->COMGETTER(PerformanceCollector)(performanceCollector.asOutParam());
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(PerformanceCollector)(performanceCollector.asOutParam()));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add IPerformanceCollector testing here. */
@@ -266,10 +267,10 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::performanceCollector failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::performanceCollector failed", __LINE__);
 
     com::SafeIfaceArray<IDHCPServer> DHCPServers;
     RTTestSub(g_hTest, "IVirtualBox::DHCPServers");
-    hrc = pVBox->COMGETTER(DHCPServers)(ComSafeArrayAsOutParam(DHCPServers));
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(DHCPServers)(ComSafeArrayAsOutParam(DHCPServers)));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add IDHCPServers testing here. */
@@ -277,10 +278,10 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::DHCPServers failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::DHCPServers failed", __LINE__);
 
     com::SafeIfaceArray<INATNetwork> NATNetworks;
     RTTestSub(g_hTest, "IVirtualBox::NATNetworks");
-    hrc = pVBox->COMGETTER(NATNetworks)(ComSafeArrayAsOutParam(NATNetworks));
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(NATNetworks)(ComSafeArrayAsOutParam(NATNetworks)));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add INATNetworks testing here. */
@@ -288,10 +289,10 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::NATNetworks failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::NATNetworks failed", __LINE__);
 
     ComPtr<IEventSource> eventSource;
     RTTestSub(g_hTest, "IVirtualBox::eventSource");
-    hrc = pVBox->COMGETTER(EventSource)(eventSource.asOutParam());
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(EventSource)(eventSource.asOutParam()));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add IEventSource testing here. */
@@ -299,10 +300,10 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::eventSource failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::eventSource failed", __LINE__);
 
     ComPtr<IExtPackManager> extensionPackManager;
     RTTestSub(g_hTest, "IVirtualBox::extensionPackManager");
-    hrc = pVBox->COMGETTER(ExtensionPackManager)(extensionPackManager.asOutParam());
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(ExtensionPackManager)(extensionPackManager.asOutParam()));
+    if (SUCCEEDED(rc))
     {
         /** @todo Add IExtPackManager testing here. */
@@ -310,25 +311,37 @@
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::extensionPackManager failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::extensionPackManager failed", __LINE__);
 
     com::SafeArray<BSTR> internalNetworks;
     RTTestSub(g_hTest, "IVirtualBox::internalNetworks");
-    hrc = pVBox->COMGETTER(InternalNetworks)(ComSafeArrayAsOutParam(internalNetworks));
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(InternalNetworks)(ComSafeArrayAsOutParam(internalNetworks)));
+    if (SUCCEEDED(rc))
     {
         RTTestPassed(g_hTest, "IVirtualBox::internalNetworks");
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::internalNetworks failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::internalNetworks failed", __LINE__);
 
     com::SafeArray<BSTR> genericNetworkDrivers;
     RTTestSub(g_hTest, "IVirtualBox::genericNetworkDrivers");
-    hrc = pVBox->COMGETTER(GenericNetworkDrivers)(ComSafeArrayAsOutParam(genericNetworkDrivers));
-    if (SUCCEEDED(hrc))
+    CHECK_ERROR(pVBox, COMGETTER(GenericNetworkDrivers)(ComSafeArrayAsOutParam(genericNetworkDrivers)));
+    if (SUCCEEDED(rc))
     {
         RTTestPassed(g_hTest, "IVirtualBox::genericNetworkDrivers");
     }
     else
-        RTTestFailed(g_hTest, "%d: IVirtualBox::genericNetworkDrivers failed with return value %Rhrc.", __LINE__, hrc);
+        RTTestFailed(g_hTest, "%d: IVirtualBox::genericNetworkDrivers failed", __LINE__);
+
+    /** Delete created VM and its files */
+    ComPtr<IMachine> machine;
+    CHECK_ERROR_RET(pVBox, FindMachine(Bstr(tstMachineName).raw(), machine.asOutParam()), FALSE);
+    SafeIfaceArray<IMedium> media;
+    CHECK_ERROR_RET(machine, Unregister(CleanupMode_DetachAllReturnHardDisksOnly,
+                                    ComSafeArrayAsOutParam(media)), FALSE);
+    ComPtr<IProgress> progress;
+    CHECK_ERROR_RET(machine, DeleteConfig(ComSafeArrayAsInParam(media), progress.asOutParam()), FALSE);
+    CHECK_ERROR_RET(progress, WaitForCompletion(-1), FALSE);
+
+    return TRUE;
 }
 
