vcl/CppunitTest_vcl_svm_test.mk | 1 vcl/qa/cppunit/svm/data/comment.svm |binary vcl/qa/cppunit/svm/svmtest.cxx | 46 ++++++++++++++++++++++++++++++++++-- vcl/source/gdi/mtfxmldump.cxx | 15 ++++++++++- 4 files changed, 59 insertions(+), 3 deletions(-)
New commits: commit e10df88b8ae4138862d4dd25c221189878641aa4 Author: panoskorovesis <[email protected]> AuthorDate: Tue Jun 15 14:32:00 2021 +0300 Commit: Tomaž Vajngerl <[email protected]> CommitDate: Wed Jun 23 08:54:52 2021 +0200 Add Comment cppunit test to vcl. The test creates two MetaCommentActions from the GDIMetafile and checks their attributes and contents. Change-Id: I748a6fa5dcf0dc09359fb48ea0bf3d7ceef3dbcf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117245 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <[email protected]> diff --git a/vcl/CppunitTest_vcl_svm_test.mk b/vcl/CppunitTest_vcl_svm_test.mk index 5d8071c42ff3..727ed121e3f6 100644 --- a/vcl/CppunitTest_vcl_svm_test.mk +++ b/vcl/CppunitTest_vcl_svm_test.mk @@ -35,6 +35,7 @@ $(eval $(call gb_CppunitTest_use_libraries,vcl_svm_test, \ cppu \ cppuhelper \ sal \ + salhelper \ svt \ test \ tl \ diff --git a/vcl/qa/cppunit/svm/data/comment.svm b/vcl/qa/cppunit/svm/data/comment.svm new file mode 100644 index 000000000000..0e2a0f2295d9 Binary files /dev/null and b/vcl/qa/cppunit/svm/data/comment.svm differ diff --git a/vcl/qa/cppunit/svm/svmtest.cxx b/vcl/qa/cppunit/svm/svmtest.cxx index 76725de14603..de0e93363c84 100644 --- a/vcl/qa/cppunit/svm/svmtest.cxx +++ b/vcl/qa/cppunit/svm/svmtest.cxx @@ -21,6 +21,8 @@ #include <vcl/virdev.hxx> #include <vcl/pngwrite.hxx> #include <tools/fract.hxx> +#include <vcl/metaact.hxx> +#include <salhelper/simplereferenceobject.hxx> #include <bitmap/BitmapWriteAccess.hxx> @@ -185,7 +187,7 @@ class SvmTest : public test::BootstrapFixture, public XmlTestTools void checkRefPoint(const GDIMetaFile& rMetaFile); void testRefPoint(); - //void checkComment(const GDIMetaFile& rMetaFile); + void checkComment(const GDIMetaFile& rMetaFile); void testComment(); //void checkLayoutMode(const GDIMetaFile& rMetaFile); @@ -2027,8 +2029,48 @@ void SvmTest::testRefPoint() checkRefPoint(readFile(u"refpoint.svm")); } +void SvmTest::checkComment(const GDIMetaFile& rMetafile) +{ + xmlDocUniquePtr pDoc = dumpMeta(rMetafile); + + assertXPathAttrs(pDoc, "/metafile/comment[1]", { + {"value", "0"} + }); + + assertXPathContent(pDoc, "/metafile/comment[1]/comment[1]", "Test comment"); + + assertXPathAttrs(pDoc, "/metafile/comment[2]", { + {"datasize", "48"} + }); + + assertXPathAttrs(pDoc, "/metafile/comment[2]", { + {"data", "540068006500730065002000610072006500200073006f006d0065002000740065007300740020006400610074006100"} + }); + + assertXPathAttrs(pDoc, "/metafile/comment[2]", { + {"value", "4"} + }); + + assertXPathContent(pDoc, "/metafile/comment[2]/comment[1]", "This is a test comment"); +} + void SvmTest::testComment() -{} +{ + GDIMetaFile aGDIMetaFile; + ScopedVclPtrInstance<VirtualDevice> pVirtualDev; + setupBaseVirtualDevice(*pVirtualDev, aGDIMetaFile); + + aGDIMetaFile.AddAction(new MetaCommentAction("Test comment")); + + OUString aString = "These are some test data"; + aGDIMetaFile.AddAction(new MetaCommentAction("This is a test comment", \ + 4, \ + reinterpret_cast<const sal_uInt8*>(aString.getStr()), \ + 2*aString.getLength() )); + + checkComment(writeAndReadStream(aGDIMetaFile)); + checkComment(readFile(u"comment.svm")); +} void SvmTest::testLayoutMode() {} diff --git a/vcl/source/gdi/mtfxmldump.cxx b/vcl/source/gdi/mtfxmldump.cxx index e5651906ed57..84c280c2eaae 100644 --- a/vcl/source/gdi/mtfxmldump.cxx +++ b/vcl/source/gdi/mtfxmldump.cxx @@ -439,6 +439,17 @@ OUString hex32(sal_uInt32 nNumber) return OUString::createFromAscii(ss.str().c_str()); } +OUString toHexString(const sal_uInt8* nData, sal_uInt32 nDataSize){ + + std::stringstream aStrm; + for (sal_uInt32 i = 0; i < nDataSize; i++) + { + aStrm << std::setw(2) << std::setfill('0') << std::hex << static_cast<int>(nData[i]); + } + + return OUString::createFromAscii(aStrm.str().c_str()); +} + void writePoint(tools::XmlWriter& rWriter, Point const& rPoint) { rWriter.attribute("x", rPoint.X()); @@ -1353,14 +1364,16 @@ void MetafileXmlDump::writeXml(const GDIMetaFile& rMetaFile, tools::XmlWriter& r if (pMetaCommentAction->GetDataSize() > 0) { rWriter.attribute("datasize", pMetaCommentAction->GetDataSize()); + rWriter.attribute("data", toHexString(pMetaCommentAction->GetData(), pMetaCommentAction->GetDataSize())); } + rWriter.attribute("value", pMetaCommentAction->GetValue()); + if (!pMetaCommentAction->GetComment().isEmpty()) { rWriter.startElement("comment"); rWriter.content(pMetaCommentAction->GetComment()); rWriter.endElement(); } - rWriter.endElement(); } break; _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
