1cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===- SectionDataTest.cpp ------------------------------------------------===//
2cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//
3cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//                     The MCLinker Project
4cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//
5cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// This file is distributed under the University of Illinois Open Source
6cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// License. See LICENSE.TXT for details.
7cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//
8cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===----------------------------------------------------------------------===//
9cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include "SectionDataTest.h"
10cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/SectionData.h"
1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/LDFileFormat.h"
1337b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/LDSection.h"
14cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
15cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaousing namespace mcld;
16cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaousing namespace mcldtest;
17cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
18cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// Constructor can do set-up work for all test here.
1937b74a387bb3993387029859c2d9d051c41c724eStephen HinesSectionDataTest::SectionDataTest() {
20cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
21cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
22cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// Destructor can do clean-up work that doesn't throw exceptions here.
2337b74a387bb3993387029859c2d9d051c41c724eStephen HinesSectionDataTest::~SectionDataTest() {
24cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
25cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
26cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// SetUp() will be called immediately before each test.
2737b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid SectionDataTest::SetUp() {
28cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
29cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
30cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// TearDown() will be called immediately after each test.
3137b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid SectionDataTest::TearDown() {
32cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
33cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
34cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===----------------------------------------------------------------------===//
35cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// Testcases
36cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===----------------------------------------------------------------------===//
37551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines
3837b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(SectionDataTest, constructor_and_trivial_func) {
3922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
40551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines
4122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  SectionData* s = SectionData::Create(*test);
4237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  EXPECT_TRUE(s->getSection().name() == "test" &&
43cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao              s->getSection().kind() == LDFileFormat::Null);
44551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines
4522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection::Destroy(test);
46cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
47cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
4837b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(SectionDataTest, Fragment_list_and_iterator) {
4922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
5022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  SectionData* s = SectionData::Create(*test);
51cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  EXPECT_TRUE(s->empty());
52cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
5322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  new Fragment(Fragment::Alignment, s);
5422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  new Fragment(Fragment::Alignment, s);
5522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  new Fragment(Fragment::Region, s);
5622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  new Fragment(Fragment::Fillment, s);
5722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  new Fragment(Fragment::Target, s);
58d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao  EXPECT_TRUE(5 == s->size());
59cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
6037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  // iterator
6137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  llvm::iplist<Fragment>::iterator iter = s->begin();
62cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  EXPECT_TRUE(Fragment::Alignment == iter->getKind());
63cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  ++iter;
64cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  EXPECT_TRUE(Fragment::Alignment == iter->getKind());
65cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  ++iter;
66cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  EXPECT_TRUE(Fragment::Region == iter->getKind());
67cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  ++iter;
68cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  EXPECT_TRUE(Fragment::Fillment == iter->getKind());
69cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  ++iter;
70cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  EXPECT_TRUE(Fragment::Target == iter->getKind());
71cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  ++iter;
72cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  EXPECT_TRUE(iter == s->end());
73cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
7422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection::Destroy(test);
75cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
76