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 19 using namespace mcld; 20 using namespace mcld::sys::fs; 21 using namespace mcldtest; 22 23 // Constructor can do set-up work for all test here. FragmentRefTest()24FragmentRefTest::FragmentRefTest() 25 { 26 } 27 28 // Destructor can do clean-up work that doesn't throw exceptions here. ~FragmentRefTest()29FragmentRefTest::~FragmentRefTest() 30 { 31 } 32 33 // SetUp() will be called immediately before each test. SetUp()34void FragmentRefTest::SetUp() 35 { 36 } 37 38 // TearDown() will be called immediately after each test. TearDown()39void FragmentRefTest::TearDown() 40 { 41 } 42 43 //==========================================================================// 44 // Testcases 45 // 46 TEST_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