1 #include <gtest/gtest.h>
5 #include "core/InformationManager.hxx"
6 #include "core/BasicBlock.hxx"
8 TEST(BasicBlockTest
, deserializeValidInstance
) {
9 QFile
file("testdata/core/BasicBlock/valid.xml");
10 InformationManager manager
;
11 file
.open(QFile::ReadOnly
| QFile::Text
);
12 QXmlStreamReader
reader(&file
);
14 reader
.readNextStartElement();
15 BasicBlock
* block
= BasicBlock::deserialize(reader
, &manager
);
17 ASSERT_NE((void*)NULL
, (void*)block
);
18 EXPECT_EQ(0x403e50, block
->getStartAddress());
19 EXPECT_EQ(0x403e66, block
->getEndAddress());
20 EXPECT_EQ(0x403e50, block
->getNextBlock(0));
21 EXPECT_EQ(0x403e66, block
->getNextBlock(1));
24 TEST(BasicBlockTest
, deserializeInvalidInstance
) {
25 QFile
file("testdata/core/BasicBlock/invalid.xml");
26 InformationManager manager
;
27 file
.open(QFile::ReadOnly
| QFile::Text
);
28 QXmlStreamReader
reader(&file
);
30 reader
.readNextStartElement();
31 BasicBlock
* block
= BasicBlock::deserialize(reader
, &manager
);
33 ASSERT_EQ((void*)NULL
, (void*)block
);
36 TEST(BasicBlockTest
, deserializeThenSerializeIsIdentity
) {
37 QFile
infile("testdata/core/BasicBlock/valid.xml");
38 QTemporaryFile outfile
;
40 InformationManager manager
;
41 infile
.open(QFile::ReadOnly
| QFile::Text
);
43 QXmlStreamReader
reader(&infile
);
44 QXmlStreamWriter
writer(&outfile
);
46 reader
.readNextStartElement();
47 BasicBlock
* block
= BasicBlock::deserialize(reader
, &manager
);
48 block
->serialize(writer
);
53 std::string outtext
= outfile
.readAll().data();
54 outtext
.erase(remove_if(outtext
.begin(), outtext
.end(), isspace
),
57 std::string intext
= infile
.readAll().data();
58 intext
.erase(remove_if(intext
.begin(), intext
.end(), isspace
),
61 ASSERT_STREQ(outtext
.c_str(), intext
.c_str());