X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fcore%2Ftests%2FCommentTest.cxx;fp=src%2Fcore%2Ftests%2FCommentTest.cxx;h=870402a71509ec19bfc59882490ea0fe8851b465;hp=0000000000000000000000000000000000000000;hb=3a4fade0292b9b8776c6195467b70a8f25a3b1c7;hpb=4a03650c9b09532ccb9b4578c73746582af852ce diff --git a/src/core/tests/CommentTest.cxx b/src/core/tests/CommentTest.cxx new file mode 100644 index 0000000..870402a --- /dev/null +++ b/src/core/tests/CommentTest.cxx @@ -0,0 +1,79 @@ +#include + +#include "gui/qt.hxx" +#include "core/InformationManager.hxx" +#include "core/BasicBlock.hxx" +#include "core/Comment.hxx" +#include + +extern char * TEST_DATA_DIRECTORY; + +TEST(CommentTest, deserializeValidInstance) { + InformationManager manager; + QDir directory(QString("%1/%2").arg(TEST_DATA_DIRECTORY,"/core/Comment/valid/")); + QStringList filters; + filters << "*.xml"; + directory.setNameFilters(filters); + + for (auto fileinfo : directory.entryInfoList()) { + if (false == fileinfo.isFile()) + continue; + + QFile file(fileinfo.absoluteFilePath()); + file.open(QFile::ReadOnly | QFile::Text); + QXmlStreamReader reader(&file); + reader.readNextStartElement(); + + Comment* c = Comment::deserialize(reader, &manager); + ASSERT_NE((void*)NULL, (void*)c); + EXPECT_EQ(fileinfo.baseName().toULongLong(NULL, 16), c->getAddress()); + } +} + +TEST(CommentTest, deserializeInvalidInstance) { + InformationManager manager; + QDir directory(QString("%1/%2").arg(TEST_DATA_DIRECTORY,"/core/Comment/invalid/")); + QStringList filters; + filters << "*.xml"; + directory.setNameFilters(filters); + + for (auto fileinfo : directory.entryInfoList()) { + if (false == fileinfo.isFile()) + continue; + + QFile file(fileinfo.absoluteFilePath()); + file.open(QFile::ReadOnly | QFile::Text); + QXmlStreamReader reader(&file); + reader.readNextStartElement(); + + Comment* c = Comment::deserialize(reader, &manager); + ASSERT_EQ((void*)NULL, (void*)c); + } +} + +TEST(CommentTest, serializeThenDeserializeIsIdentity) { + InformationManager manager; + Comment* c = manager.newGlobalComment(0x42234223); + + for (QString text : QStringList({"αβγδ", "", "ä"})) { + c->setText(text.toStdString()); + + QTemporaryFile tmpfile; + + { + tmpfile.open(); + QXmlStreamWriter writer(&tmpfile); + c->serialize(writer); + } + tmpfile.seek(0); + { + tmpfile.open(); + QXmlStreamReader reader(&tmpfile); + reader.readNextStartElement(); + Comment* d = Comment::deserialize(reader, &manager); + ASSERT_NE((void*)NULL, (void*)d); + EXPECT_STREQ(c->getText().c_str(), d->getText().c_str()); + EXPECT_EQ(0x42234223, d->getAddress()); + } + } +}