137b74a387bb3993387029859c2d9d051c41c724eStephen Hines//===- FragmentTest.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 "FragmentTest.h"
10cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Fragment/Fragment.h"
1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/SectionData.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 HinesFragmentTest::FragmentTest() {
20cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
21cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
22cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// Destructor can do clean-up work that doesn't throw exceptions here.
2337b74a387bb3993387029859c2d9d051c41c724eStephen HinesFragmentTest::~FragmentTest() {
24cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
25cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
26cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// SetUp() will be called immediately before each test.
2737b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid FragmentTest::SetUp() {
28cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
29cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
30cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// TearDown() will be called immediately after each test.
3137b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid FragmentTest::TearDown() {
32cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
33cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
34cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===----------------------------------------------------------------------===//
35cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// Testcases
36551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines
3737b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(FragmentTest, Fragment_constructor) {
3822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
3922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  SectionData* s = SectionData::Create(*test);
4022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  new Fragment(Fragment::Alignment, s);
41cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  EXPECT_TRUE(1 == s->size());
4222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  new Fragment(Fragment::Alignment, s);
4322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  new Fragment(Fragment::Region, s);
4422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  new Fragment(Fragment::Fillment, s);
4522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  new Fragment(Fragment::Target, s);
46d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao  EXPECT_TRUE(5 == s->size());
47cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
4822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection::Destroy(test);
4937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  //  SectionData::Destroy(s);
50cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
51cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
5237b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(FragmentTest, Fragment_trivial_function) {
5322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
5422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  SectionData* s = SectionData::Create(*test);
55cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  Fragment* f = new Fragment(Fragment::Alignment, s);
56551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines
57cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  EXPECT_TRUE(Fragment::Alignment == f->getKind());
58cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
59cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  f->setOffset(5566);
60cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  EXPECT_TRUE(5566 == f->getOffset());
61cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
6237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  // always return true
6337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  EXPECT_TRUE(f->classof(new Fragment(Fragment::Region, s)));
64551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines
6522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection::Destroy(test);
6637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  //  SectionData::Destroy(s);
67cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
68