Nikolay Sivov : msxml3/tests: Tests for default properties values.

Alexandre Julliard julliard at winehq.org
Fri Aug 26 10:40:49 CDT 2011


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri Aug 26 08:09:31 2011 +0400

msxml3/tests: Tests for default properties values.

---

 dlls/msxml3/tests/saxreader.c |  176 ++++++++++++++++++++++++++--------------
 1 files changed, 114 insertions(+), 62 deletions(-)

diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c
index e72c4a9..841e6a6 100644
--- a/dlls/msxml3/tests/saxreader.c
+++ b/dlls/msxml3/tests/saxreader.c
@@ -1088,6 +1088,113 @@ static void test_mxwriter_contenthandler(void)
     IMXWriter_Release(writer);
 }
 
+struct msxmlsupported_data_t
+{
+    const GUID *clsid;
+    const char *name;
+    BOOL supported;
+};
+
+static struct msxmlsupported_data_t msxmlsupported_data[] =
+{
+    { &CLSID_MXXMLWriter,   "MXXMLWriter" },
+    { &CLSID_MXXMLWriter30, "MXXMLWriter30" },
+    { &CLSID_MXXMLWriter40, "MXXMLWriter40" },
+    { &CLSID_MXXMLWriter60, "MXXMLWriter60" },
+    { NULL }
+};
+
+static BOOL is_mxwriter_supported(const GUID *clsid, const struct msxmlsupported_data_t *table)
+{
+    while (table->clsid)
+    {
+        if (table->clsid == clsid) return table->supported;
+        table++;
+    }
+    return FALSE;
+}
+
+struct mxwriter_props_t
+{
+    const GUID *clsid;
+    VARIANT_BOOL bom;
+    VARIANT_BOOL disable_escape;
+    VARIANT_BOOL indent;
+    VARIANT_BOOL omitdecl;
+    VARIANT_BOOL standalone;
+    const char *encoding;
+};
+
+static const struct mxwriter_props_t mxwriter_default_props[] =
+{
+    { &CLSID_MXXMLWriter,   VARIANT_TRUE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, "UTF-16" },
+    { &CLSID_MXXMLWriter30, VARIANT_TRUE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, "UTF-16" },
+    { &CLSID_MXXMLWriter40, VARIANT_TRUE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, "UTF-16" },
+    { &CLSID_MXXMLWriter60, VARIANT_TRUE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, VARIANT_FALSE, "UTF-16" },
+    { NULL }
+};
+
+static void test_mxwriter_default_properties(const struct mxwriter_props_t *table)
+{
+    int i = 0;
+
+    while (table->clsid)
+    {
+        IMXWriter *writer;
+        VARIANT_BOOL b;
+        BSTR encoding;
+        HRESULT hr;
+
+        if (!is_mxwriter_supported(table->clsid, msxmlsupported_data))
+        {
+            table++;
+            i++;
+            continue;
+        }
+
+        hr = CoCreateInstance(table->clsid, NULL, CLSCTX_INPROC_SERVER,
+            &IID_IMXWriter, (void**)&writer);
+        EXPECT_HR(hr, S_OK);
+
+        b = !table->bom;
+        hr = IMXWriter_get_byteOrderMark(writer, &b);
+        EXPECT_HR(hr, S_OK);
+        ok(table->bom == b, "test %d: got BOM %d, expected %d\n", i, b, table->bom);
+
+        b = !table->disable_escape;
+        hr = IMXWriter_get_disableOutputEscaping(writer, &b);
+        EXPECT_HR(hr, S_OK);
+        ok(table->disable_escape == b, "test %d: got disable escape %d, expected %d\n", i, b,
+           table->disable_escape);
+
+        b = !table->indent;
+        hr = IMXWriter_get_indent(writer, &b);
+        EXPECT_HR(hr, S_OK);
+        ok(table->indent == b, "test %d: got indent %d, expected %d\n", i, b, table->indent);
+
+        b = !table->omitdecl;
+        hr = IMXWriter_get_omitXMLDeclaration(writer, &b);
+        EXPECT_HR(hr, S_OK);
+        ok(table->omitdecl == b, "test %d: got omitdecl %d, expected %d\n", i, b, table->omitdecl);
+
+        b = !table->standalone;
+        hr = IMXWriter_get_standalone(writer, &b);
+        EXPECT_HR(hr, S_OK);
+        ok(table->standalone == b, "test %d: got standalone %d, expected %d\n", i, b, table->standalone);
+
+        hr = IMXWriter_get_encoding(writer, &encoding);
+        EXPECT_HR(hr, S_OK);
+        ok(!lstrcmpW(encoding, _bstr_(table->encoding)), "test %d: got encoding %s, expected %s\n",
+            i, wine_dbgstr_w(encoding), table->encoding);
+        SysFreeString(encoding);
+
+        IMXWriter_Release(writer);
+
+        table++;
+        i++;
+    }
+}
+
 static void test_mxwriter_properties(void)
 {
     static const WCHAR utf16W[] = {'U','T','F','-','1','6',0};
@@ -1098,6 +1205,8 @@ static void test_mxwriter_properties(void)
     HRESULT hr;
     BSTR str, str2;
 
+    test_mxwriter_default_properties(mxwriter_default_props);
+
     hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER,
             &IID_IMXWriter, (void**)&writer);
     ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
@@ -1105,43 +1214,18 @@ static void test_mxwriter_properties(void)
     hr = IMXWriter_get_disableOutputEscaping(writer, NULL);
     ok(hr == E_POINTER, "got %08x\n", hr);
 
-    b = VARIANT_TRUE;
-    hr = IMXWriter_get_disableOutputEscaping(writer, &b);
-    ok(hr == S_OK, "got %08x\n", hr);
-    ok(b == VARIANT_FALSE, "got %d\n", b);
-
     hr = IMXWriter_get_byteOrderMark(writer, NULL);
     ok(hr == E_POINTER, "got %08x\n", hr);
 
-    b = VARIANT_FALSE;
-    hr = IMXWriter_get_byteOrderMark(writer, &b);
-    ok(hr == S_OK, "got %08x\n", hr);
-    ok(b == VARIANT_TRUE, "got %d\n", b);
-
     hr = IMXWriter_get_indent(writer, NULL);
     ok(hr == E_POINTER, "got %08x\n", hr);
 
-    b = VARIANT_TRUE;
-    hr = IMXWriter_get_indent(writer, &b);
-    ok(hr == S_OK, "got %08x\n", hr);
-    ok(b == VARIANT_FALSE, "got %d\n", b);
-
     hr = IMXWriter_get_omitXMLDeclaration(writer, NULL);
     ok(hr == E_POINTER, "got %08x\n", hr);
 
-    b = VARIANT_TRUE;
-    hr = IMXWriter_get_omitXMLDeclaration(writer, &b);
-    ok(hr == S_OK, "got %08x\n", hr);
-    ok(b == VARIANT_FALSE, "got %d\n", b);
-
     hr = IMXWriter_get_standalone(writer, NULL);
     ok(hr == E_POINTER, "got %08x\n", hr);
 
-    b = VARIANT_TRUE;
-    hr = IMXWriter_get_standalone(writer, &b);
-    ok(hr == S_OK, "got %08x\n", hr);
-    ok(b == VARIANT_FALSE, "got %d\n", b);
-
     /* set and check */
     hr = IMXWriter_put_standalone(writer, VARIANT_TRUE);
     ok(hr == S_OK, "got %08x\n", hr);
@@ -1177,7 +1261,7 @@ static void test_mxwriter_properties(void)
     str = (void*)0xdeadbeef;
     hr = IMXWriter_get_encoding(writer, &str);
     ok(hr == S_OK, "got %08x\n", hr);
-    ok(lstrcmpW(str, utf16W) == 0, "expected empty string, got %s\n", wine_dbgstr_w(str));
+    ok(!lstrcmpW(str, emptyW) == 0, "expected empty string, got %s\n", wine_dbgstr_w(str));
     SysFreeString(str);
 
     /* invalid encoding name */
@@ -1486,22 +1570,6 @@ static const struct writer_startendelement_t writer_startendelement[] = {
     { NULL }
 };
 
-struct msxmlsupported_data_t
-{
-    const GUID *clsid;
-    const char *name;
-    BOOL supported;
-};
-
-static struct msxmlsupported_data_t msxmlsupported_data[] =
-{
-    { &CLSID_MXXMLWriter,   "MXXMLWriter" },
-    { &CLSID_MXXMLWriter30, "MXXMLWriter30" },
-    { &CLSID_MXXMLWriter40, "MXXMLWriter40" },
-    { &CLSID_MXXMLWriter60, "MXXMLWriter60" },
-    { NULL }
-};
-
 static void get_supported_mxwriter_data(struct msxmlsupported_data_t *table)
 {
     while (table->clsid)
@@ -1520,23 +1588,10 @@ static void get_supported_mxwriter_data(struct msxmlsupported_data_t *table)
     }
 }
 
-static BOOL is_mxwriter_supported(const GUID *clsid, const struct msxmlsupported_data_t *table)
-{
-    while (table->clsid)
-    {
-        if (table->clsid == clsid) return table->supported;
-        table++;
-    }
-    return FALSE;
-}
-
 static void test_mxwriter_startendelement_batch(const struct writer_startendelement_t *table)
 {
-    int i;
+    int i = 0;
 
-    get_supported_mxwriter_data(msxmlsupported_data);
-
-    i = 0;
     while (table->clsid)
     {
         ISAXContentHandler *content;
@@ -1928,7 +1983,6 @@ static void test_mxwriter_encoding(void)
 START_TEST(saxreader)
 {
     ISAXXMLReader *reader;
-    IMXWriter *writer;
     HRESULT hr;
 
     hr = CoInitialize(NULL);
@@ -1948,12 +2002,10 @@ START_TEST(saxreader)
     test_saxreader();
     test_encoding();
 
-    hr = CoCreateInstance(&CLSID_MXXMLWriter, NULL, CLSCTX_INPROC_SERVER,
-            &IID_IMXWriter, (void**)&writer);
-    if (hr == S_OK)
+    /* MXXMLWriter tests */
+    get_supported_mxwriter_data(msxmlsupported_data);
+    if (is_mxwriter_supported(&CLSID_MXXMLWriter, msxmlsupported_data))
     {
-        IMXWriter_Release(writer);
-
         test_mxwriter_contenthandler();
         test_mxwriter_startenddocument();
         test_mxwriter_startendelement();




More information about the wine-cvs mailing list