Piotr Caban : msxml3/tests: Added saxreader error handling test.

Alexandre Julliard julliard at winehq.org
Mon Oct 24 13:43:55 CDT 2011


Module: wine
Branch: master
Commit: 5eb6994dc2e3bf48f1b6d3b25feec430b4a27afc
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5eb6994dc2e3bf48f1b6d3b25feec430b4a27afc

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Oct 24 12:55:22 2011 +0200

msxml3/tests: Added saxreader error handling test.

---

 dlls/msxml3/tests/saxreader.c |   70 +++++++++++++++++++++++++++-------------
 1 files changed, 47 insertions(+), 23 deletions(-)

diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c
index c52e03b..e1c20cc 100644
--- a/dlls/msxml3/tests/saxreader.c
+++ b/dlls/msxml3/tests/saxreader.c
@@ -81,7 +81,10 @@ typedef enum _CH {
     CH_CHARACTERS,
     CH_IGNORABLEWHITESPACE,
     CH_PROCESSINGINSTRUCTION,
-    CH_SKIPPEDENTITY
+    CH_SKIPPEDENTITY,
+    EH_ERROR,
+    EH_FATALERROR,
+    EG_IGNORABLEWARNING
 } CH;
 
 static const WCHAR szSimpleXML[] = {
@@ -125,6 +128,7 @@ typedef struct _contenthandlercheck {
     const char *arg1;
     const char *arg2;
     const char *arg3;
+    HRESULT ret;
 } content_handler_test;
 
 static content_handler_test contentHandlerTest1[] = {
@@ -165,6 +169,19 @@ static content_handler_test contentHandlerTest2[] = {
     { CH_ENDTEST }
 };
 
+static content_handler_test contentHandlerTestError[] = {
+    { CH_PUTDOCUMENTLOCATOR, 0, 0, NULL, NULL, NULL, E_FAIL },
+    { EH_FATALERROR, 0, 0, NULL, NULL, NULL, E_FAIL },
+    { CH_ENDTEST }
+};
+
+static content_handler_test contentHandlerTestCallbackResults[] = {
+    { CH_PUTDOCUMENTLOCATOR, 0, 0, NULL, NULL, NULL, S_FALSE },
+    { CH_STARTDOCUMENT, 0, 0, NULL, NULL, NULL, S_FALSE },
+    { EH_FATALERROR, 0, 0, NULL, NULL, NULL, S_FALSE },
+    { CH_ENDTEST }
+};
+
 static content_handler_test *expectCall;
 static ISAXLocator *locator;
 
@@ -248,8 +265,7 @@ static HRESULT WINAPI contentHandler_putDocumentLocator(
     locator = pLocator;
     test_locator(__LINE__, expectCall->line, expectCall->column);
 
-    expectCall++;
-    return S_OK;
+    return (expectCall++)->ret;
 }
 
 static HRESULT WINAPI contentHandler_startDocument(
@@ -260,8 +276,7 @@ static HRESULT WINAPI contentHandler_startDocument(
 
     test_locator(__LINE__, expectCall->line, expectCall->column);
 
-    expectCall++;
-    return S_OK;
+    return (expectCall++)->ret;
 }
 
 static HRESULT WINAPI contentHandler_endDocument(
@@ -272,8 +287,7 @@ static HRESULT WINAPI contentHandler_endDocument(
 
     test_locator(__LINE__, expectCall->line, expectCall->column);
 
-    expectCall++;
-    return S_OK;
+    return (expectCall++)->ret;
 }
 
 static HRESULT WINAPI contentHandler_startPrefixMapping(
@@ -290,8 +304,7 @@ static HRESULT WINAPI contentHandler_startPrefixMapping(
     test_saxstr(__LINE__, pUri, nUri, expectCall->arg2);
     test_locator(__LINE__, expectCall->line, expectCall->column);
 
-    expectCall++;
-    return S_OK;
+    return (expectCall++)->ret;
 }
 
 static HRESULT WINAPI contentHandler_endPrefixMapping(
@@ -305,8 +318,7 @@ static HRESULT WINAPI contentHandler_endPrefixMapping(
     test_saxstr(__LINE__, pPrefix, nPrefix, expectCall->arg1);
     test_locator(__LINE__, expectCall->line, expectCall->column);
 
-    expectCall++;
-    return S_OK;
+    return (expectCall++)->ret;
 }
 
 static HRESULT WINAPI contentHandler_startElement(
@@ -327,8 +339,7 @@ static HRESULT WINAPI contentHandler_startElement(
     test_saxstr(__LINE__, pQName, nQName, expectCall->arg3);
     test_locator(__LINE__, expectCall->line, expectCall->column);
 
-    expectCall++;
-    return S_OK;
+    return (expectCall++)->ret;
 }
 
 static HRESULT WINAPI contentHandler_endElement(
@@ -348,8 +359,7 @@ static HRESULT WINAPI contentHandler_endElement(
     test_saxstr(__LINE__, pQName, nQName, expectCall->arg3);
     test_locator(__LINE__, expectCall->line, expectCall->column);
 
-    expectCall++;
-    return S_OK;
+    return (expectCall++)->ret;
 }
 
 static HRESULT WINAPI contentHandler_characters(
@@ -363,8 +373,7 @@ static HRESULT WINAPI contentHandler_characters(
     test_saxstr(__LINE__, pChars, nChars, expectCall->arg1);
     test_locator(__LINE__, expectCall->line, expectCall->column);
 
-    expectCall++;
-    return S_OK;
+    return (expectCall++)->ret;
 }
 
 static HRESULT WINAPI contentHandler_ignorableWhitespace(
@@ -378,8 +387,7 @@ static HRESULT WINAPI contentHandler_ignorableWhitespace(
     test_saxstr(__LINE__, pChars, nChars, expectCall->arg1);
     test_locator(__LINE__, expectCall->line, expectCall->column);
 
-    expectCall++;
-    return S_OK;
+    return (expectCall++)->ret;
 }
 
 static HRESULT WINAPI contentHandler_processingInstruction(
@@ -396,8 +404,7 @@ static HRESULT WINAPI contentHandler_processingInstruction(
     test_saxstr(__LINE__, pData, nData, expectCall->arg2);
     test_locator(__LINE__, expectCall->line, expectCall->column);
 
-    expectCall++;
-    return S_OK;
+    return (expectCall++)->ret;
 }
 
 static HRESULT WINAPI contentHandler_skippedEntity(
@@ -411,8 +418,7 @@ static HRESULT WINAPI contentHandler_skippedEntity(
     test_saxstr(__LINE__, pName, nName, expectCall->arg1);
     test_locator(__LINE__, expectCall->line, expectCall->column);
 
-    expectCall++;
-    return S_OK;
+    return (expectCall++)->ret;
 }
 
 
@@ -473,6 +479,7 @@ static HRESULT WINAPI isaxerrorHandler_error(
         const WCHAR *pErrorMessage,
         HRESULT hrErrorCode)
 {
+    ok(0, "unexpected call\n");
     return S_OK;
 }
 
@@ -482,6 +489,12 @@ static HRESULT WINAPI isaxerrorHandler_fatalError(
         const WCHAR *pErrorMessage,
         HRESULT hrErrorCode)
 {
+    if(!test_expect_call(EH_FATALERROR))
+        return E_FAIL;
+
+    ok(hrErrorCode == expectCall->ret, "hrErrorCode = %x, expected %x\n", hrErrorCode, expectCall->ret);
+
+    expectCall++;
     return S_OK;
 }
 
@@ -491,6 +504,7 @@ static HRESULT WINAPI isaxerrorHanddler_ignorableWarning(
         const WCHAR *pErrorMessage,
         HRESULT hrErrorCode)
 {
+    ok(0, "unexpected call\n");
     return S_OK;
 }
 
@@ -1141,6 +1155,16 @@ static void test_saxreader(void)
     ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
     test_expect_call(CH_ENDTEST);
 
+    expectCall = contentHandlerTestError;
+    hr = ISAXXMLReader_parseURL(reader, testXmlW);
+    ok(hr == E_FAIL, "Expected E_FAIL, got %08x\n", hr);
+    test_expect_call(CH_ENDTEST);
+
+    expectCall = contentHandlerTestCallbackResults;
+    hr = ISAXXMLReader_parseURL(reader, testXmlW);
+    ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr);
+    test_expect_call(CH_ENDTEST);
+
     DeleteFileA(testXmlA);
 
     hr = CoCreateInstance(&CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER,




More information about the wine-cvs mailing list