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