1 //===- SectionDataTest.cpp ------------------------------------------------===//
2 //
3 // The MCLinker Project
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 #include "SectionDataTest.h"
10
11 #include "mcld/LD/SectionData.h"
12 #include "mcld/LD/LDFileFormat.h"
13 #include "mcld/LD/LDSection.h"
14
15 using namespace mcld;
16 using namespace mcldtest;
17
18 // Constructor can do set-up work for all test here.
SectionDataTest()19 SectionDataTest::SectionDataTest() {
20 }
21
22 // Destructor can do clean-up work that doesn't throw exceptions here.
~SectionDataTest()23 SectionDataTest::~SectionDataTest() {
24 }
25
26 // SetUp() will be called immediately before each test.
SetUp()27 void SectionDataTest::SetUp() {
28 }
29
30 // TearDown() will be called immediately after each test.
TearDown()31 void SectionDataTest::TearDown() {
32 }
33
34 //===----------------------------------------------------------------------===//
35 // Testcases
36 //===----------------------------------------------------------------------===//
37
TEST_F(SectionDataTest,constructor_and_trivial_func)38 TEST_F(SectionDataTest, constructor_and_trivial_func) {
39 LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
40
41 SectionData* s = SectionData::Create(*test);
42 EXPECT_TRUE(s->getSection().name() == "test" &&
43 s->getSection().kind() == LDFileFormat::Null);
44
45 LDSection::Destroy(test);
46 }
47
TEST_F(SectionDataTest,Fragment_list_and_iterator)48 TEST_F(SectionDataTest, Fragment_list_and_iterator) {
49 LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
50 SectionData* s = SectionData::Create(*test);
51 EXPECT_TRUE(s->empty());
52
53 new Fragment(Fragment::Alignment, s);
54 new Fragment(Fragment::Alignment, s);
55 new Fragment(Fragment::Region, s);
56 new Fragment(Fragment::Fillment, s);
57 new Fragment(Fragment::Target, s);
58 EXPECT_TRUE(5 == s->size());
59
60 // iterator
61 llvm::iplist<Fragment>::iterator iter = s->begin();
62 EXPECT_TRUE(Fragment::Alignment == iter->getKind());
63 ++iter;
64 EXPECT_TRUE(Fragment::Alignment == iter->getKind());
65 ++iter;
66 EXPECT_TRUE(Fragment::Region == iter->getKind());
67 ++iter;
68 EXPECT_TRUE(Fragment::Fillment == iter->getKind());
69 ++iter;
70 EXPECT_TRUE(Fragment::Target == iter->getKind());
71 ++iter;
72 EXPECT_TRUE(iter == s->end());
73
74 LDSection::Destroy(test);
75 }
76