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("test", LDFileFormat::Null, 0, 0);
45
46  SectionData* s = new SectionData(test);
47  EXPECT_TRUE(s->getSection().name() == "test" && \
48              s->getSection().kind() == LDFileFormat::Null);
49
50  s->setAlignment(5566);
51  EXPECT_TRUE(5566 == s->getAlignment());
52
53  delete s;
54}
55
56TEST_F( SectionDataTest, Fragment_list_and_iterator ) {
57  LDSection test("test", LDFileFormat::Null, 0, 0);
58  SectionData* s = new SectionData(test);
59  EXPECT_TRUE(s->empty());
60
61  Fragment* f1 = new Fragment(Fragment::Alignment, s);
62  Fragment* f2 = new Fragment(Fragment::Alignment, s);
63  Fragment* f3 = new Fragment(Fragment::Region, s);
64  Fragment* f4 = new Fragment(Fragment::Fillment, s);
65  Fragment* f5 = new Fragment(Fragment::Relocation, s);
66  Fragment* f6 = new Fragment(Fragment::Target, s);
67  EXPECT_TRUE(6 == s->size());
68
69  //iterator
70  llvm::iplist<Fragment>::iterator iter=s->begin();
71  EXPECT_TRUE(Fragment::Alignment == iter->getKind());
72  ++iter;
73  EXPECT_TRUE(Fragment::Alignment == iter->getKind());
74  ++iter;
75  EXPECT_TRUE(Fragment::Region == iter->getKind());
76  ++iter;
77  EXPECT_TRUE(Fragment::Fillment == iter->getKind());
78  ++iter;
79  EXPECT_TRUE(Fragment::Relocation == iter->getKind());
80  ++iter;
81  EXPECT_TRUE(Fragment::Target == iter->getKind());
82  ++iter;
83  EXPECT_TRUE(iter == s->end());
84
85  delete s;
86}
87