X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fcore%2Ftests%2FBasicBlockTest.cxx;fp=src%2Fcore%2Ftests%2FBasicBlockTest.cxx;h=0980af52f860e545dc3e889e6df309fca28a6461;hp=0000000000000000000000000000000000000000;hb=f7cd60ef2104cf8f74ea06f58906acda4aef3e29;hpb=0bf396504d68739ca2c164d323df477b261974e9 diff --git a/src/core/tests/BasicBlockTest.cxx b/src/core/tests/BasicBlockTest.cxx new file mode 100644 index 0000000..0980af5 --- /dev/null +++ b/src/core/tests/BasicBlockTest.cxx @@ -0,0 +1,62 @@ +#include +#include + +#include "gui/qt.hxx" +#include "core/InformationManager.hxx" +#include "core/BasicBlock.hxx" + +TEST(BasicBlockTest, deserializeValidInstance) { + QFile file("testdata/core/BasicBlock/valid.xml"); + InformationManager manager; + file.open(QFile::ReadOnly | QFile::Text); + QXmlStreamReader reader(&file); + + reader.readNextStartElement(); + BasicBlock* block = BasicBlock::deserialize(reader, &manager); + + ASSERT_NE((void*)NULL, (void*)block); + EXPECT_EQ(0x403e50, block->getStartAddress()); + EXPECT_EQ(0x403e66, block->getEndAddress()); + EXPECT_EQ(0x403e50, block->getNextBlock(0)); + EXPECT_EQ(0x403e66, block->getNextBlock(1)); +} + +TEST(BasicBlockTest, deserializeInvalidInstance) { + QFile file("testdata/core/BasicBlock/invalid.xml"); + InformationManager manager; + file.open(QFile::ReadOnly | QFile::Text); + QXmlStreamReader reader(&file); + + reader.readNextStartElement(); + BasicBlock* block = BasicBlock::deserialize(reader, &manager); + + ASSERT_EQ((void*)NULL, (void*)block); +} + +TEST(BasicBlockTest, deserializeThenSerializeIsIdentity) { + QFile infile("testdata/core/BasicBlock/valid.xml"); + QTemporaryFile outfile; + + InformationManager manager; + infile.open(QFile::ReadOnly | QFile::Text); + outfile.open(); + QXmlStreamReader reader(&infile); + QXmlStreamWriter writer(&outfile); + + reader.readNextStartElement(); + BasicBlock* block = BasicBlock::deserialize(reader, &manager); + block->serialize(writer); + + infile.seek(0); + outfile.seek(0); + + std::string outtext = outfile.readAll().data(); + outtext.erase(remove_if(outtext.begin(), outtext.end(), isspace), + outtext.end()); + + std::string intext = infile.readAll().data(); + intext.erase(remove_if(intext.begin(), intext.end(), isspace), + intext.end()); + + ASSERT_STREQ(outtext.c_str(), intext.c_str()); +}