FragmentRefTest.cpp revision f33f6de54db174aa679a4b6d1e040d37e95541c0
1//===- FragmentRefTest ----------------------------------------------------===// 2// 3// The MCLinker Project 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9#include "FragmentRefTest.h" 10 11#include <mcld/Fragment/FragmentRef.h> 12#include <mcld/Fragment/RegionFragment.h> 13#include <mcld/Support/MemoryAreaFactory.h> 14#include <mcld/Support/FileHandle.h> 15#include <mcld/Support/MemoryRegion.h> 16#include <mcld/Support/Path.h> 17#include <llvm/ADT/StringRef.h> 18 19using namespace mcld; 20using namespace mcld::sys::fs; 21using namespace mcldtest; 22 23// Constructor can do set-up work for all test here. 24FragmentRefTest::FragmentRefTest() 25{ 26} 27 28// Destructor can do clean-up work that doesn't throw exceptions here. 29FragmentRefTest::~FragmentRefTest() 30{ 31} 32 33// SetUp() will be called immediately before each test. 34void FragmentRefTest::SetUp() 35{ 36} 37 38// TearDown() will be called immediately after each test. 39void FragmentRefTest::TearDown() 40{ 41} 42 43//==========================================================================// 44// Testcases 45// 46TEST_F( FragmentRefTest, ) { 47 Path path(TOPDIR); 48 path.append("unittests/test3.txt"); 49 MemoryAreaFactory* areaFactory = new MemoryAreaFactory(1); 50 MemoryArea* area = areaFactory->produce(path, FileHandle::ReadWrite); 51 52 llvm::StringRef region = area->request(0, 4096); 53 RegionFragment *frag = new RegionFragment(region); 54 FragmentRef *ref = FragmentRef::Create(*frag, 0x0); 55 56 ASSERT_EQ('H', region.data()[0]); 57 ASSERT_TRUE(4096 == region.size()); 58 ASSERT_EQ('H', frag->getRegion().data()[0]); 59 ASSERT_TRUE(4096 == frag->getRegion().size()); 60 ASSERT_EQ(frag, ref->frag()); 61 ASSERT_EQ('H', static_cast<RegionFragment*>(ref->frag())->getRegion().data()[0]); 62 ASSERT_TRUE(4096 == static_cast<RegionFragment*>(ref->frag())->getRegion().size()); 63 //ASSERT_EQ('H', ref->deref()[0]); 64 65 ASSERT_TRUE(RegionFragment::classof(frag)); 66 67 delete frag; 68 delete areaFactory; 69} 70 71