1 #include <gtest/gtest.h>
5 #include "core/InformationManager.hxx"
6 #include "core/BasicBlock.hxx"
8 extern char * TEST_DATA_DIRECTORY
;
10 TEST(BasicBlockTest
, deserializeValidInstance
) {
11 QFile
file(QString(TEST_DATA_DIRECTORY
) + "/testdata/core/BasicBlock/valid.xml");
12 InformationManager manager
;
13 file
.open(QFile::ReadOnly
| QFile::Text
);
14 QXmlStreamReader
reader(&file
);
16 reader
.readNextStartElement();
17 BasicBlock
* block
= BasicBlock::deserialize(reader
, &manager
);
19 ASSERT_NE((void*)NULL
, (void*)block
);
20 EXPECT_EQ(0x403e50, block
->getStartAddress());
21 EXPECT_EQ(0x403e66, block
->getEndAddress());
22 EXPECT_EQ(0x403e50, block
->getNextBlock(0));
23 EXPECT_EQ(0x403e66, block
->getNextBlock(1));
26 TEST(BasicBlockTest
, deserializeInvalidInstance
) {
27 QFile
file(QString(TEST_DATA_DIRECTORY
) + "/testdata/core/BasicBlock/invalid.xml");
28 InformationManager manager
;
29 file
.open(QFile::ReadOnly
| QFile::Text
);
30 QXmlStreamReader
reader(&file
);
32 reader
.readNextStartElement();
33 BasicBlock
* block
= BasicBlock::deserialize(reader
, &manager
);
35 ASSERT_EQ((void*)NULL
, (void*)block
);
38 TEST(BasicBlockTest
, deserializeThenSerializeIsIdentity
) {
39 QFile
infile(QString(TEST_DATA_DIRECTORY
) + "/testdata/core/BasicBlock/valid.xml");
40 QTemporaryFile outfile
;
42 InformationManager manager
;
43 infile
.open(QFile::ReadOnly
| QFile::Text
);
45 QXmlStreamReader
reader(&infile
);
46 QXmlStreamWriter
writer(&outfile
);
48 reader
.readNextStartElement();
49 BasicBlock
* block
= BasicBlock::deserialize(reader
, &manager
);
50 block
->serialize(writer
);
55 std::string outtext
= outfile
.readAll().data();
56 outtext
.erase(remove_if(outtext
.begin(), outtext
.end(), isspace
),
59 std::string intext
= infile
.readAll().data();
60 intext
.erase(remove_if(intext
.begin(), intext
.end(), isspace
),
63 ASSERT_STREQ(outtext
.c_str(), intext
.c_str());