summaryrefslogtreecommitdiffstats
path: root/private/oleutest/simpcntr/tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'private/oleutest/simpcntr/tests.cpp')
-rw-r--r--private/oleutest/simpcntr/tests.cpp202
1 files changed, 202 insertions, 0 deletions
diff --git a/private/oleutest/simpcntr/tests.cpp b/private/oleutest/simpcntr/tests.cpp
new file mode 100644
index 000000000..48a535d88
--- /dev/null
+++ b/private/oleutest/simpcntr/tests.cpp
@@ -0,0 +1,202 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: tests.cpp
+//
+// Contents: Implementations of the Upper Layer unit tests for Inplace
+//
+// Classes:
+//
+// Functions: Test1
+//
+// History: dd-mmm-yy Author Comment
+// 27-Apr-94 ricksa author
+//
+//--------------------------------------------------------------------------
+
+#include "pre.h"
+#include "iocs.h"
+#include "ias.h"
+#include "ioipf.h"
+#include "ioips.h"
+#include "app.h"
+#include "site.h"
+#include "doc.h"
+#include "tests.h"
+#include "utaccel.h"
+
+const CLSID CLSID_SimpleServer = {0xbcf6d4a0, 0xbe8c, 0x1068, { 0xb6, 0xd4,
+ 0x00, 0xdd, 0x01, 0x0c, 0x05, 0x09 }};
+
+const TCHAR *pszErrorTitle = TEXT("Unit Test FAILURE");
+
+//+-------------------------------------------------------------------------
+//
+// Function: TestMsgPostThread
+//
+// Synopsis: We use this thread to post messages to the inplace server
+//
+// Arguments: [pvApp] - application object
+//
+// Algorithm: Post key board message for the accelerator for the container
+// and wait 3 seconds to see if we get response. If we do, then
+// continue by posting an accelerator to the embeddinging and
+// waiting three seconds for a response. Finally post messages
+// to everyone telling them the test is over.
+//
+// History: dd-mmm-yy Author Comment
+// 02-May-94 ricksa author
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+extern "C" DWORD TestMsgPostThread(void *pvApp)
+{
+ CSimpleApp *pApp = (CSimpleApp *) pvApp;
+ HRESULT hr = ResultFromScode(E_UNEXPECTED);
+
+ // Send an accelerator bound for the container
+ PostMessage(pApp->m_hwndUIActiveObj, WM_CHAR, SIMPCNTR_UT_ACCEL, 1);
+
+ // Give 6 seconds for chance to process an accelerator
+ for (int i = 0; i < 6; i++)
+ {
+ // Get embedding and container a chance to process the accelerator
+ Sleep(1000);
+
+ // See if it got processed
+ if (pApp->m_fGotUtestAccelerator)
+ {
+ break;
+ }
+ }
+
+ if (pApp->m_fGotUtestAccelerator)
+ {
+ hr = S_OK;
+ }
+ else
+ {
+ // The container did not received the accelerator
+ MessageBox(pApp->m_hAppWnd,
+ TEXT("Container didn't recieve accelerator"),
+ pszErrorTitle, MB_OK);
+ }
+
+ PostMessage(pApp->m_hDriverWnd, WM_TESTEND,
+ SUCCEEDED(hr) ? TEST_SUCCESS : TEST_FAILURE, (LPARAM) hr);
+
+ PostMessage(pApp->m_hAppWnd, WM_SYSCOMMAND, SC_CLOSE, 0L);
+
+ return 0;
+}
+
+
+
+
+//+-------------------------------------------------------------------------
+//
+// Function: Test1
+//
+// Synopsis: Inserts an inplace object into this container
+//
+// Arguments: pApp -- a pointer to the CSimpleApp that we're a part of
+//
+// Algorithm: Create a simple server object. Activate the simple server
+// object. Send the container an accelerator and confirm that
+// the accelerator worked. Send the object an accelerator and
+// make sure that that accelerator worked. Then return the
+// result of the test to the test driver.
+//
+// History: dd-mmm-yy Author Comment
+// 27-Apr-94 ricksa author
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+void Test1(CSimpleApp *pApp)
+{
+ // Create the inplace object
+ HRESULT hr;
+ static FORMATETC formatetc;
+
+ //insert the simple server object
+
+ formatetc.dwAspect = DVASPECT_CONTENT;
+ formatetc.cfFormat = NULL;
+ formatetc.lindex = -1;
+
+ //need to create the client site
+
+ pApp->m_lpDoc->m_lpSite = CSimpleSite::Create(pApp->m_lpDoc);
+
+ hr = OleCreate(
+ CLSID_SimpleServer,
+ IID_IOleObject,
+ OLERENDER_DRAW,
+ &formatetc,
+ &pApp->m_lpDoc->m_lpSite->m_OleClientSite,
+ pApp->m_lpDoc->m_lpSite->m_lpObjStorage,
+ (void **) &(pApp->m_lpDoc->m_lpSite->m_lpOleObject));
+
+ if(hr == NOERROR)
+ {
+ // Activate the inplace object
+ pApp->m_lpDoc->m_lpSite->InitObject(TRUE);
+
+ // Default to unexpected failure
+ hr = ResultFromScode(E_UNEXPECTED);
+
+ if (pApp->m_lpDoc->m_fInPlaceActive)
+ {
+ // Create thread to send windows messages to container and
+ // embedding
+ DWORD dwThreadId;
+
+ HANDLE hThread = CreateThread(
+ NULL, // Security attributes - default
+ 0, // Stack size - default
+ TestMsgPostThread, // Addresss of thread function
+ pApp, // Parameter to thread
+ 0, // Flags - run immediately
+ &dwThreadId); // Thread ID returned - unused.
+
+ if (hThread != NULL)
+ {
+ // Thread was created so tell routine & dump handle
+ // we won't use.
+ hr = S_OK;
+ CloseHandle(hThread);
+ }
+ else
+ {
+ // The container did not received the accelerator
+ MessageBox(pApp->m_hAppWnd,
+ TEXT("Could not create message sending thread"),
+ pszErrorTitle, MB_OK);
+ }
+ }
+ else
+ {
+ // The object did not get activated in place
+ MessageBox(pApp->m_hAppWnd, TEXT("Could not activate in place"),
+ pszErrorTitle, MB_OK);
+ }
+ }
+ else
+ {
+ // We could not create the object
+ MessageBox(pApp->m_hAppWnd, TEXT("Could not create embedding"),
+ pszErrorTitle, MB_OK);
+ }
+
+ if (FAILED(hr))
+ {
+ PostMessage(pApp->m_hDriverWnd, WM_TESTEND,
+ SUCCEEDED(hr) ? TEST_SUCCESS : TEST_FAILURE, (LPARAM) hr);
+ }
+
+ return;
+}