[Libreoffice-commits] libvisio.git: 3 commits - src/lib src/test
Miklos Vajna
vmiklos at collabora.co.uk
Wed Dec 31 06:30:14 PST 2014
src/lib/VSDXMetaData.cpp | 6 ++++++
src/lib/tokens.txt | 1 +
src/test/importtest.cpp | 27 +++++++++++++++++++++++++++
src/test/xmldrawinggenerator.cpp | 24 +++++++++++++++++++++++-
4 files changed, 57 insertions(+), 1 deletion(-)
New commits:
commit 5753f7e98d02bde80d9e712d298372933c4a28e6
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Dec 31 14:43:48 2014 +0100
VSDX: import <cp:category>
Change-Id: If1f520da6d9180862409af63296a1f90bad971e1
diff --git a/src/lib/VSDXMetaData.cpp b/src/lib/VSDXMetaData.cpp
index 8516690..b7e485d 100644
--- a/src/lib/VSDXMetaData.cpp
+++ b/src/lib/VSDXMetaData.cpp
@@ -82,6 +82,9 @@ void libvisio::VSDXMetaData::readCoreProperties(xmlTextReaderPtr reader)
case XML_CP_LASTMODIFIEDBY:
m_metaData.insert("dc:creator", readString(reader, XML_CP_LASTMODIFIEDBY));
break;
+ case XML_CP_CATEGORY:
+ m_metaData.insert("meta:user-defined:category", readString(reader, XML_CP_CATEGORY));
+ break;
default:
break;
}
diff --git a/src/lib/tokens.txt b/src/lib/tokens.txt
index 2d0022b..6b01690 100644
--- a/src/lib/tokens.txt
+++ b/src/lib/tokens.txt
@@ -235,3 +235,4 @@ dcterms:created
dcterms:modified
dc:description
cp:lastModifiedBy
+cp:category
diff --git a/src/test/importtest.cpp b/src/test/importtest.cpp
index ad3722b..3e20d7a 100644
--- a/src/test/importtest.cpp
+++ b/src/test/importtest.cpp
@@ -174,6 +174,7 @@ void ImportTest::testVsdxMetadataTitle()
assertXPath(m_doc, "/document/setDocumentMetaData", "keyword", "mytag");
assertXPath(m_doc, "/document/setDocumentMetaData", "description", "mycomment");
assertXPath(m_doc, "/document/setDocumentMetaData", "creator", "vmiklos modifier");
+ assertXPathContent(m_doc, "/document/setDocumentMetaData/user-defined[@name='category']", "mycategory");
}
void ImportTest::testVsdMetadataTitleMs1252()
commit d6f6a4f6d7444177eaebc00198ed166f30540cbb
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Dec 31 14:41:52 2014 +0100
libvisio::XmlDrawingGenerator: handle user-defined metadata
Change-Id: I63c4cf75009ae8303efd031c66570514180f2d9d
diff --git a/src/test/importtest.cpp b/src/test/importtest.cpp
index 85a7175..ad3722b 100644
--- a/src/test/importtest.cpp
+++ b/src/test/importtest.cpp
@@ -66,6 +66,32 @@ void assertXPath(xmlDocPtr doc, const librevenge::RVNGString &xpath, const libre
CPPUNIT_ASSERT_EQUAL_MESSAGE(message.cstr(), expectedValue, actualValue);
}
+/// Same as the assertXPathContent(), but don't assert: return the string instead.
+librevenge::RVNGString getXPathContent(xmlDocPtr doc, const librevenge::RVNGString &xpath)
+{
+ xmlXPathObjectPtr xpathObject = getXPathNode(doc, xpath);
+ xmlNodeSetPtr nodeset = xpathObject->nodesetval;
+
+ librevenge::RVNGString message("XPath '");
+ message.append(xpath);
+ message.append("': not found.");
+ CPPUNIT_ASSERT_MESSAGE(message.cstr(), xmlXPathNodeSetGetLength(nodeset) > 0);
+
+ xmlNodePtr node = nodeset->nodeTab[0];
+ librevenge::RVNGString s(reinterpret_cast<char *>((node->children[0]).content));
+ xmlXPathFreeObject(xpathObject);
+ return s;
+}
+
+/// Assert that xpath exists, and its content equals to content.
+void assertXPathContent(xmlDocPtr doc, const librevenge::RVNGString &xpath, const librevenge::RVNGString &content)
+{
+ librevenge::RVNGString message("XPath '");
+ message.append(xpath);
+ message.append("': contents of child does not match.");
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(message.cstr(), content, getXPathContent(doc, xpath));
+}
+
/// Paints an XML representation of filename into buffer, then returns the parsed buffer content.
xmlDocPtr parse(const char *filename, xmlBufferPtr buffer)
{
diff --git a/src/test/xmldrawinggenerator.cpp b/src/test/xmldrawinggenerator.cpp
index 5711c64..78484e0 100644
--- a/src/test/xmldrawinggenerator.cpp
+++ b/src/test/xmldrawinggenerator.cpp
@@ -9,6 +9,11 @@
#include "xmldrawinggenerator.h"
+#include <cstring>
+#include <string>
+#include <utility>
+#include <vector>
+
namespace libvisio
{
@@ -45,8 +50,25 @@ void XmlDrawingGenerator::setDocumentMetaData(const librevenge::RVNGPropertyList
{
xmlTextWriterStartElement(m_writer, BAD_CAST("setDocumentMetaData"));
librevenge::RVNGPropertyList::Iter i(propList);
+ std::vector< std::pair<std::string, std::string> > userDefined;
for (i.rewind(); i.next();)
- xmlTextWriterWriteFormatAttribute(m_writer, BAD_CAST(i.key()), "%s", i()->getStr().cstr());
+ {
+ if (strncmp(i.key(), "meta:user-defined:", 18))
+ xmlTextWriterWriteFormatAttribute(m_writer, BAD_CAST(i.key()), "%s", i()->getStr().cstr());
+ else
+ userDefined.push_back(std::make_pair(i.key() + 18, i()->getStr().cstr()));
+ }
+
+ if (!userDefined.empty())
+ {
+ for (size_t idx = 0; idx < userDefined.size(); ++idx)
+ {
+ xmlTextWriterStartElement(m_writer, BAD_CAST("user-defined"));
+ xmlTextWriterWriteAttribute(m_writer, BAD_CAST("name"), BAD_CAST(userDefined[idx].first.c_str()));
+ xmlTextWriterWriteString(m_writer, BAD_CAST(userDefined[idx].second.c_str()));
+ xmlTextWriterEndElement(m_writer);
+ }
+ }
xmlTextWriterEndElement(m_writer);
}
commit ce94c3eda0f65e965001fdb946b3db829fea2fbd
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Dec 31 13:22:11 2014 +0100
VSDXMetaData: missing breaks
Change-Id: I6f1c1827761a532941fc699e912054966561978a
diff --git a/src/lib/VSDXMetaData.cpp b/src/lib/VSDXMetaData.cpp
index fd38811..8516690 100644
--- a/src/lib/VSDXMetaData.cpp
+++ b/src/lib/VSDXMetaData.cpp
@@ -75,10 +75,13 @@ void libvisio::VSDXMetaData::readCoreProperties(xmlTextReaderPtr reader)
break;
case XML_CP_KEYWORDS:
m_metaData.insert("meta:keyword", readString(reader, XML_CP_KEYWORDS));
+ break;
case XML_DC_DESCRIPTION:
m_metaData.insert("dc:description", readString(reader, XML_DC_DESCRIPTION));
+ break;
case XML_CP_LASTMODIFIEDBY:
m_metaData.insert("dc:creator", readString(reader, XML_CP_LASTMODIFIEDBY));
+ break;
default:
break;
}
More information about the Libreoffice-commits
mailing list