1cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===- 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 1122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/Fragment/Fragment.h> 12cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <mcld/LD/SectionData.h> 13cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <mcld/LD/LDSection.h> 14cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 15cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaousing namespace mcld; 16cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaousing namespace mcldtest; 17cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 18cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 19cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// Constructor can do set-up work for all test here. 20cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei LiaoFragmentTest::FragmentTest() 21cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao{ 22cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao} 23cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 24cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// Destructor can do clean-up work that doesn't throw exceptions here. 25cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei LiaoFragmentTest::~FragmentTest() 26cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao{ 27cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao} 28cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 29cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// SetUp() will be called immediately before each test. 30cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaovoid FragmentTest::SetUp() 31cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao{ 32cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao} 33cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 34cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// TearDown() will be called immediately after each test. 35cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaovoid FragmentTest::TearDown() 36cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao{ 37cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao} 38cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 39cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===----------------------------------------------------------------------===// 40cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// Testcases 41cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 42cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei LiaoTEST_F( FragmentTest, Fragment_constructor ) { 4322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0); 4422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao SectionData* s = SectionData::Create(*test); 4522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao new Fragment(Fragment::Alignment, s); 46cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao EXPECT_TRUE(1 == s->size()); 4722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao new Fragment(Fragment::Alignment, s); 4822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao new Fragment(Fragment::Region, s); 4922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao new Fragment(Fragment::Fillment, s); 5022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao new Fragment(Fragment::Target, s); 51d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao EXPECT_TRUE(5 == s->size()); 52cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 5322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao LDSection::Destroy(test); 5422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// SectionData::Destroy(s); 55cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao} 56cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 57cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei LiaoTEST_F( FragmentTest, Fragment_trivial_function ) { 5822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0); 5922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao SectionData* s = SectionData::Create(*test); 60cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao Fragment* f = new Fragment(Fragment::Alignment, s); 61cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 62cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao EXPECT_TRUE(Fragment::Alignment == f->getKind()); 63cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 64cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao f->setOffset(5566); 65cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao EXPECT_TRUE(5566 == f->getOffset()); 66cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 67cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao //always return true 68cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao EXPECT_TRUE(f->classof(new Fragment(Fragment::Region, s)) ); 69cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 7022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao LDSection::Destroy(test); 7122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// SectionData::Destroy(s); 72cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao} 73cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 74cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 75