[PATCH 1/2] Fix endian-dependent test for good
authorStephan Bergmann <sbergman@redhat.com>
Tue, 19 Jul 2022 08:07:57 +0000 (10:07 +0200)
committerRene Engelhard <rene@debian.org>
Thu, 28 Jul 2022 20:58:57 +0000 (21:58 +0100)
SvmTest::testComment introduced in e10df88b8ae4138862d4dd25c221189878641aa4 "Add
Comment cppunit test to vcl" calls SvmTest::checkComment twice, first for a
programmatically generated svm document, and then for the canned
vcl/qa/cppunit/svm/data/comment.svm.  4f533655dd635dab30574c2a3b3915377124bd60
"this test is endian-dependant" had fixed the endian-dependent check in
SvmTest::checkComment for the first, programmatically generated case, but broke
it for the second, canned case.  As seen on s390x:

> xmltesttools.cxx:171:Assertion
> Test name: SvmTest::testComment
> equality assertion failed
> - Expected: 00540068006500730065002000610072006500200073006f006d00650020007400650073007400200064006100740061
> - Actual  : 540068006500730065002000610072006500200073006f006d0065002000740065007300740020006400610074006100
> - In <>, attribute 'data' of '/metafile/comment[2]' incorrect value.

So just not make the problematic MetaCommentAction payload endian-dependent in
the first place.  (And one wonders why the test even needs to test such a
problematic payload.)

Change-Id: I203dae6545e0d4e63e7c2d521a27c661e1cf633c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137223
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Gbp-Pq: Name svm-test-bigendian.diff

vcl/qa/cppunit/svm/svmtest.cxx

index 91c9128278a7bed3c359e930636f87822a208816..9356b8f5ad6ab693b84b55a084befe0da24d91f8 100644 (file)
@@ -12,6 +12,7 @@
 
 #include <string_view>
 
+#include <osl/endian.h>
 #include <test/bootstrapfixture.hxx>
 #include <test/xmltesttools.hxx>
 #include <vcl/gdimtf.hxx>
@@ -937,14 +938,26 @@ void SvmTest::checkBitmaps(const GDIMetaFile& rMetaFile)
     if (SkiaHelper::isVCLSkiaEnabled())
         return; // TODO SKIA using CRCs is broken (the idea of it)
 
-    assertXPathAttrs(pDoc, "/metafile/bmp[1]", {{"x", "1"}, {"y", "2"}, {"crc", "b8dee5da"}});
+    assertXPathAttrs(pDoc, "/metafile/bmp[1]", {{"x", "1"}, {"y", "2"}, {"crc",
+#if defined OSL_BIGENDIAN
+        "5e01ddcc"
+#else
+        "b8dee5da"
+#endif
+        }});
     assertXPathAttrs(pDoc, "/metafile/bmpscale[1]", {
         {"x", "1"}, {"y", "2"}, {"width", "3"}, {"height", "4"}, {"crc", "281fc589"}
     });
     assertXPathAttrs(pDoc, "/metafile/bmpscalepart[1]", {
         {"destx", "1"}, {"desty", "2"}, {"destwidth", "3"}, {"destheight", "4"},
         {"srcx", "2"},  {"srcy", "1"},  {"srcwidth", "4"},  {"srcheight", "3"},
-        {"crc", "5e01ddcc"}
+        {"crc",
+#if defined OSL_BIGENDIAN
+         "b8dee5da"
+#else
+         "5e01ddcc"
+#endif
+        }
     });
 }
 
@@ -995,6 +1008,16 @@ void SvmTest::checkBitmapExs(const GDIMetaFile& rMetaFile)
     std::vector<OUString> aExpectedCRC;
     aExpectedCRC.insert(aExpectedCRC.end(),
     {
+#if defined OSL_BIGENDIAN
+        "08feb5d3",
+        "281fc589",
+        "b8dee5da",
+        "4df0e464",
+        "186ff868",
+        "33b4a07c", // 4-bit color bitmap - same as 8-bit color bitmap
+        "33b4a07c",
+        "742c3e35",
+#else
         "d8377d4f",
         "281fc589",
         "5e01ddcc",
@@ -1003,6 +1026,7 @@ void SvmTest::checkBitmapExs(const GDIMetaFile& rMetaFile)
         "3c80d829", // 4-bit color bitmap - same as 8-bit color bitmap
         "3c80d829",
         "71efc447",
+#endif
     });
 
     assertXPathAttrs(pDoc, "/metafile/bmpex[1]", {
@@ -2220,15 +2244,9 @@ void SvmTest::checkComment(const GDIMetaFile& rMetafile)
         {"datasize", "48"}
     });
 
-#ifdef OSL_LITENDIAN
     assertXPathAttrs(pDoc, "/metafile/comment[2]", {
         {"data", "540068006500730065002000610072006500200073006f006d0065002000740065007300740020006400610074006100"}
     });
-#else
-    assertXPathAttrs(pDoc, "/metafile/comment[2]", {
-        {"data", "00540068006500730065002000610072006500200073006f006d00650020007400650073007400200064006100740061"}
-    });
-#endif
 
     assertXPathAttrs(pDoc, "/metafile/comment[2]", {
         {"value", "4"}
@@ -2245,11 +2263,13 @@ void SvmTest::testComment()
 
     aGDIMetaFile.AddAction(new MetaCommentAction("Test comment"));
 
-    OUString aString = "These are some test data";
+    using namespace std::literals::string_view_literals;
+    static constexpr auto aString
+        = "T\0h\0e\0s\0e\0 \0a\0r\0e\0 \0s\0o\0m\0e\0 \0t\0e\0s\0t\0 \0d\0a\0t\0a\0"sv;
     aGDIMetaFile.AddAction(new MetaCommentAction("This is a test comment", \
                                                     4, \
-                                                    reinterpret_cast<const sal_uInt8*>(aString.getStr()), \
-                                                    2*aString.getLength() ));
+                                                    reinterpret_cast<const sal_uInt8*>(aString.data()), \
+                                                    aString.length() ));
 
     checkComment(writeAndReadStream(aGDIMetaFile));
     checkComment(readFile(u"comment.svm"));