Hans Leidekker : webservices/tests: Add tests.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Sep 16 09:54:07 CDT 2015
Module: wine
Branch: master
Commit: 11d0886f04c973ccc6e69b611497083a82d7dfe3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=11d0886f04c973ccc6e69b611497083a82d7dfe3
Author: Hans Leidekker <hans at codeweavers.com>
Date: Wed Sep 16 11:19:27 2015 +0200
webservices/tests: Add tests.
---
dlls/webservices/tests/reader.c | 121 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 121 insertions(+)
diff --git a/dlls/webservices/tests/reader.c b/dlls/webservices/tests/reader.c
index 7f43a07..e2ab39a 100644
--- a/dlls/webservices/tests/reader.c
+++ b/dlls/webservices/tests/reader.c
@@ -331,9 +331,130 @@ static void test_WsCreateReader(void)
ok( hr == E_INVALIDARG, "got %08x\n", hr );
}
+static void test_WsSetInput(void)
+{
+ HRESULT hr;
+ WS_XML_READER *reader;
+ WS_XML_READER_PROPERTY prop;
+ WS_XML_READER_TEXT_ENCODING enc;
+ WS_XML_READER_BUFFER_INPUT input;
+ WS_CHARSET charset;
+ const WS_XML_NODE *node;
+ ULONG size, max_depth;
+
+ hr = WsCreateReader( NULL, 0, &reader, NULL ) ;
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ hr = WsSetInput( NULL, NULL, NULL, NULL, 0, NULL );
+ ok( hr == E_INVALIDARG, "got %08x\n", hr );
+
+ node = NULL;
+ hr = WsGetReaderNode( reader, &node, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+ ok( node != NULL, "node not set\n" );
+ if (node) ok( node->nodeType == WS_XML_NODE_TYPE_EOF, "got %u\n", node->nodeType );
+
+ enc.encoding.encodingType = WS_XML_READER_ENCODING_TYPE_TEXT;
+ enc.charSet = WS_CHARSET_UTF8;
+
+ input.input.inputType = WS_XML_READER_INPUT_TYPE_BUFFER;
+ input.encodedData = (void *)data1;
+ input.encodedDataSize = sizeof(data1) - 1;
+
+ hr = WsSetInput( reader, (WS_XML_READER_ENCODING *)&enc, (WS_XML_READER_INPUT *)&input, NULL, 0, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ node = NULL;
+ hr = WsGetReaderNode( reader, &node, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+ ok( node != NULL, "node not set\n" );
+ if (node) ok( node->nodeType == WS_XML_NODE_TYPE_BOF, "got %u\n", node->nodeType );
+
+ /* multiple calls are allowed */
+ hr = WsSetInput( reader, (WS_XML_READER_ENCODING *)&enc, (WS_XML_READER_INPUT *)&input, NULL, 0, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ /* charset is detected by WsSetInput */
+ enc.encoding.encodingType = WS_XML_READER_ENCODING_TYPE_TEXT;
+ enc.charSet = WS_CHARSET_AUTO;
+ hr = WsSetInput( reader, (WS_XML_READER_ENCODING *)&enc, (WS_XML_READER_INPUT *)&input, NULL, 0, NULL );
+ todo_wine ok( hr == S_OK, "got %08x\n", hr );
+
+ charset = 0xdeadbeef;
+ size = sizeof(charset);
+ hr = WsGetReaderProperty( reader, WS_XML_READER_PROPERTY_CHARSET, &charset, size, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+ ok( charset == WS_CHARSET_UTF8, "got %u\n", charset );
+
+ enc.encoding.encodingType = WS_XML_READER_ENCODING_TYPE_TEXT;
+ enc.charSet = WS_CHARSET_UTF8;
+
+ /* reader properties can be set with WsSetInput */
+ max_depth = 16;
+ prop.id = WS_XML_READER_PROPERTY_MAX_DEPTH;
+ prop.value = &max_depth;
+ prop.valueSize = sizeof(max_depth);
+ hr = WsSetInput( reader, (WS_XML_READER_ENCODING *)&enc, (WS_XML_READER_INPUT *)&input, &prop, 1, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ max_depth = 0xdeadbeef;
+ size = sizeof(max_depth);
+ hr = WsGetReaderProperty( reader, WS_XML_READER_PROPERTY_MAX_DEPTH, &max_depth, size, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+ ok( max_depth == 16, "got %u\n", max_depth );
+ WsFreeReader( reader );
+}
+
+static void test_WsFillReader(void)
+{
+ HRESULT hr;
+ WS_XML_READER *reader;
+ const WS_XML_NODE *node;
+
+ hr = WsCreateReader( NULL, 0, &reader, NULL ) ;
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ hr = set_input( reader, data1, sizeof(data1) - 1 );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ hr = WsFillReader( reader, sizeof(data1) - 1, NULL, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ hr = set_input( reader, data1, sizeof(data1) - 1 );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ node = NULL;
+ hr = WsGetReaderNode( reader, &node, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+ ok( node != NULL, "node not set\n" );
+ if (node) ok( node->nodeType == WS_XML_NODE_TYPE_BOF, "got %u\n", node->nodeType );
+
+ hr = WsFillReader( NULL, sizeof(data1) - 1, NULL, NULL );
+ ok( hr == E_INVALIDARG, "got %08x\n", hr );
+
+ hr = WsFillReader( reader, sizeof(data1) - 1, NULL, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ node = NULL;
+ hr = WsGetReaderNode( reader, &node, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+ ok( node != NULL, "node not set\n" );
+ if (node) ok( node->nodeType == WS_XML_NODE_TYPE_BOF, "got %u\n", node->nodeType );
+
+ hr = WsFillReader( reader, sizeof(data1) - 1, NULL, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ /* min_size larger than input size */
+ hr = WsFillReader( reader, sizeof(data1), NULL, NULL );
+ ok( hr == S_OK, "got %08x\n", hr );
+ WsFreeReader( reader );
+}
+
START_TEST(reader)
{
test_WsCreateError();
test_WsCreateHeap();
test_WsCreateReader();
+ test_WsSetInput();
+ test_WsFillReader();
}
More information about the wine-cvs
mailing list