1cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===- FragmentRefTest ----------------------------------------------------===// 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// The MCLinker Project 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details. 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 9cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include "FragmentRefTest.h" 10cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 11cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <mcld/LD/FragmentRef.h> 12cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <mcld/LD/RegionFragment.h> 13cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <mcld/Support/MemoryAreaFactory.h> 14cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <mcld/Support/FileHandle.h> 15cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <mcld/Support/Path.h> 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld; 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld::sys::fs; 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld::sys::fs::detail; 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcldtest; 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Constructor can do set-up work for all test here. 23cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei LiaoFragmentRefTest::FragmentRefTest() 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Destructor can do clean-up work that doesn't throw exceptions here. 28cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei LiaoFragmentRefTest::~FragmentRefTest() 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// SetUp() will be called immediately before each test. 33cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaovoid FragmentRefTest::SetUp() 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// TearDown() will be called immediately after each test. 38cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaovoid FragmentRefTest::TearDown() 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//==========================================================================// 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Testcases 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 45cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei LiaoTEST_F( FragmentRefTest, ) { 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao Path path(TOPDIR); 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao path.append("unittests/test3.txt"); 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao MemoryAreaFactory* areaFactory = new MemoryAreaFactory(1); 49affc150dc44fab1911775a49636d0ce85333b634Zonr Chang MemoryArea* area = areaFactory->produce(path, FileHandle::ReadWrite); 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao MemoryRegion* region = area->request(0, 4096); 52cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao RegionFragment *frag = new RegionFragment(*region); 53cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao FragmentRef *ref = new FragmentRef(*frag); 545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ('H', region->getBuffer()[0]); 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(4096, region->size()); 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ('H', frag->getRegion().getBuffer()[0]); 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(4096, frag->getRegion().size()); 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(frag, ref->frag()); 60cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao ASSERT_EQ('H', static_cast<RegionFragment*>(ref->frag())->getRegion().getBuffer()[0]); 61cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao ASSERT_EQ(4096, static_cast<RegionFragment*>(ref->frag())->getRegion().size()); 625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ('H', ref->deref()[0]); 635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 64cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao ASSERT_TRUE(RegionFragment::classof(frag)); 655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete ref; 675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete frag; 685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete areaFactory; 695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 71