SectionDataTest.cpp revision 22add6ff3426df1a85089fe6a6e1597ee3b6f300
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
15using namespace mcld;
16using namespace mcldtest;
17
18
19// Constructor can do set-up work for all test here.
20SectionDataTest::SectionDataTest()
21{
22}
23
24// Destructor can do clean-up work that doesn't throw exceptions here.
25SectionDataTest::~SectionDataTest()
26{
27}
28
29// SetUp() will be called immediately before each test.
30void SectionDataTest::SetUp()
31{
32}
33
34// TearDown() will be called immediately after each test.
35void SectionDataTest::TearDown()
36{
37}
38
39//===----------------------------------------------------------------------===//
40// Testcases
41//===----------------------------------------------------------------------===//
42
43TEST_F( SectionDataTest, constructor_and_trivial_func ) {
44  LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
45
46  SectionData* s = SectionData::Create(*test);
47  EXPECT_TRUE(s->getSection().name() == "test" && \
48              s->getSection().kind() == LDFileFormat::Null);
49
50
51  LDSection::Destroy(test);
52}
53
54TEST_F( SectionDataTest, Fragment_list_and_iterator ) {
55  LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
56  SectionData* s = SectionData::Create(*test);
57  EXPECT_TRUE(s->empty());
58
59  new Fragment(Fragment::Alignment, s);
60  new Fragment(Fragment::Alignment, s);
61  new Fragment(Fragment::Region, s);
62  new Fragment(Fragment::Fillment, s);
63  new Fragment(Fragment::Relocation, s);
64  new Fragment(Fragment::Target, s);
65  EXPECT_TRUE(6 == s->size());
66
67  //iterator
68  llvm::iplist<Fragment>::iterator iter=s->begin();
69  EXPECT_TRUE(Fragment::Alignment == iter->getKind());
70  ++iter;
71  EXPECT_TRUE(Fragment::Alignment == iter->getKind());
72  ++iter;
73  EXPECT_TRUE(Fragment::Region == iter->getKind());
74  ++iter;
75  EXPECT_TRUE(Fragment::Fillment == iter->getKind());
76  ++iter;
77  EXPECT_TRUE(Fragment::Relocation == iter->getKind());
78  ++iter;
79  EXPECT_TRUE(Fragment::Target == iter->getKind());
80  ++iter;
81  EXPECT_TRUE(iter == s->end());
82
83  LDSection::Destroy(test);
84}
85