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