Hans Leidekker : webservices/tests: Add tests.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Sep 15 09:50:50 CDT 2015


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Sep 15 11:16:26 2015 +0200

webservices/tests: Add tests.

---

 dlls/webservices/tests/reader.c | 149 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 149 insertions(+)

diff --git a/dlls/webservices/tests/reader.c b/dlls/webservices/tests/reader.c
index 4b247d9..7f43a07 100644
--- a/dlls/webservices/tests/reader.c
+++ b/dlls/webservices/tests/reader.c
@@ -21,6 +21,9 @@
 #include "webservices.h"
 #include "wine/test.h"
 
+static const char data1[] =
+    "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
+
 static void test_WsCreateError(void)
 {
     HRESULT hr;
@@ -183,8 +186,154 @@ static void test_WsCreateHeap(void)
     ok( hr == E_INVALIDARG, "got %08x\n", hr );
 }
 
+static HRESULT set_input( WS_XML_READER *reader, const char *data, ULONG size )
+{
+    WS_XML_READER_TEXT_ENCODING encoding;
+    WS_XML_READER_BUFFER_INPUT input;
+
+    encoding.encoding.encodingType = WS_XML_READER_ENCODING_TYPE_TEXT;
+    encoding.charSet               = WS_CHARSET_UTF8;
+
+    input.input.inputType = WS_XML_READER_INPUT_TYPE_BUFFER;
+    input.encodedData     = (void *)data;
+    input.encodedDataSize = size;
+
+    return WsSetInput( reader, (WS_XML_READER_ENCODING *)&encoding,
+                       (WS_XML_READER_INPUT *)&input, NULL, 0, NULL );
+}
+
+static void test_WsCreateReader(void)
+{
+    HRESULT hr;
+    WS_XML_READER *reader;
+    WS_XML_READER_PROPERTY prop;
+    ULONG size, max_depth, max_attrs, trim_size, buffer_size, max_ns;
+    BOOL allow_fragment, read_decl, in_attr;
+    ULONGLONG row, column;
+    WS_CHARSET charset;
+
+    hr = WsCreateReader( NULL, 0, NULL, NULL ) ;
+    ok( hr == E_INVALIDARG, "got %08x\n", hr );
+
+    reader = NULL;
+    hr = WsCreateReader( NULL, 0, &reader, NULL ) ;
+    ok( hr == S_OK, "got %08x\n", hr );
+    ok( reader != NULL, "reader not set\n" );
+
+    /* can't retrieve properties before input is set */
+    max_depth = 0xdeadbeef;
+    size = sizeof(max_depth);
+    hr = WsGetReaderProperty( reader, WS_XML_READER_PROPERTY_MAX_DEPTH, &max_depth, size, NULL );
+    ok( hr == WS_E_INVALID_OPERATION, "got %08x\n", hr );
+    ok( max_depth == 0xdeadbeef, "max_depth set\n" );
+
+    hr = set_input( reader, data1, sizeof(data1) - 1 );
+    ok( hr == S_OK, "got %08x\n", hr );
+
+    /* check some defaults */
+    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 == 32, "got %u\n", max_depth );
+
+    allow_fragment = TRUE;
+    size = sizeof(allow_fragment);
+    hr = WsGetReaderProperty( reader, WS_XML_READER_PROPERTY_ALLOW_FRAGMENT, &allow_fragment, size, NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+    ok( !allow_fragment, "got %d\n", allow_fragment );
+
+    max_attrs = 0xdeadbeef;
+    size = sizeof(max_attrs);
+    hr = WsGetReaderProperty( reader, WS_XML_READER_PROPERTY_MAX_ATTRIBUTES, &max_attrs, size, NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+    ok( max_attrs == 128, "got %u\n", max_attrs );
+
+    read_decl = FALSE;
+    size = sizeof(read_decl);
+    hr = WsGetReaderProperty( reader, WS_XML_READER_PROPERTY_READ_DECLARATION, &read_decl, size, NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+    ok( read_decl, "got %u\n", read_decl );
+
+    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 );
+
+    size = sizeof(trim_size);
+    hr = WsGetReaderProperty( reader, WS_XML_READER_PROPERTY_UTF8_TRIM_SIZE, &trim_size, size, NULL );
+    todo_wine ok( hr == E_INVALIDARG, "got %08x\n", hr );
+    WsFreeReader( reader );
+
+    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 );
+
+    size = sizeof(buffer_size);
+    hr = WsGetReaderProperty( reader, WS_XML_READER_PROPERTY_STREAM_BUFFER_SIZE, &buffer_size, size, NULL );
+    todo_wine ok( hr == E_INVALIDARG, "got %08x\n", hr );
+    WsFreeReader( reader );
+
+    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 );
+
+    max_ns = 0xdeadbeef;
+    size = sizeof(max_ns);
+    hr = WsGetReaderProperty( reader, WS_XML_READER_PROPERTY_MAX_NAMESPACES, &max_ns, size, NULL );
+    ok( hr == S_OK, "got %08x\n", hr );
+    ok( max_ns == 32, "got %u\n", max_ns );
+    WsFreeReader( reader );
+
+    /* change a property */
+    max_depth = 16;
+    prop.id = WS_XML_READER_PROPERTY_MAX_DEPTH;
+    prop.value = &max_depth;
+    prop.valueSize = sizeof(max_depth);
+    hr = WsCreateReader( &prop, 1, &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 );
+
+    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 );
+
+    /* show that some properties are read-only */
+    row = 1;
+    prop.id = WS_XML_READER_PROPERTY_ROW;
+    prop.value = &row;
+    prop.valueSize = sizeof(row);
+    hr = WsCreateReader( &prop, 1, &reader, NULL ) ;
+    ok( hr == E_INVALIDARG, "got %08x\n", hr );
+
+    column = 1;
+    prop.id = WS_XML_READER_PROPERTY_COLUMN;
+    prop.value = &column;
+    prop.valueSize = sizeof(column);
+    hr = WsCreateReader( &prop, 1, &reader, NULL ) ;
+    ok( hr == E_INVALIDARG, "got %08x\n", hr );
+
+    in_attr = TRUE;
+    prop.id = WS_XML_READER_PROPERTY_IN_ATTRIBUTE;
+    prop.value = &in_attr;
+    prop.valueSize = sizeof(in_attr);
+    hr = WsCreateReader( &prop, 1, &reader, NULL ) ;
+    ok( hr == E_INVALIDARG, "got %08x\n", hr );
+}
+
 START_TEST(reader)
 {
     test_WsCreateError();
     test_WsCreateHeap();
+    test_WsCreateReader();
 }




More information about the wine-cvs mailing list