Shih-wei Liao | cedee4b | 2012-08-02 23:13:03 -0700 | [diff] [blame] | 1 | //===- FragmentRefTest ----------------------------------------------------===// |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 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 | //===----------------------------------------------------------------------===// |
Shih-wei Liao | cedee4b | 2012-08-02 23:13:03 -0700 | [diff] [blame] | 9 | #include "FragmentRefTest.h" |
| 10 | |
Stephen Hines | 37b74a3 | 2014-11-26 18:48:20 -0800 | [diff] [blame] | 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" |
Stephen Hines | f33f6de | 2014-02-14 18:00:16 -0800 | [diff] [blame] | 17 | #include <llvm/ADT/StringRef.h> |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 18 | |
| 19 | using namespace mcld; |
| 20 | using namespace mcld::sys::fs; |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 21 | using namespace mcldtest; |
| 22 | |
| 23 | // Constructor can do set-up work for all test here. |
Stephen Hines | 37b74a3 | 2014-11-26 18:48:20 -0800 | [diff] [blame] | 24 | FragmentRefTest::FragmentRefTest() { |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 25 | } |
| 26 | |
| 27 | // Destructor can do clean-up work that doesn't throw exceptions here. |
Stephen Hines | 37b74a3 | 2014-11-26 18:48:20 -0800 | [diff] [blame] | 28 | FragmentRefTest::~FragmentRefTest() { |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 29 | } |
| 30 | |
| 31 | // SetUp() will be called immediately before each test. |
Stephen Hines | 37b74a3 | 2014-11-26 18:48:20 -0800 | [diff] [blame] | 32 | void FragmentRefTest::SetUp() { |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 33 | } |
| 34 | |
| 35 | // TearDown() will be called immediately after each test. |
Stephen Hines | 37b74a3 | 2014-11-26 18:48:20 -0800 | [diff] [blame] | 36 | void FragmentRefTest::TearDown() { |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 37 | } |
| 38 | |
Stephen Hines | 37b74a3 | 2014-11-26 18:48:20 -0800 | [diff] [blame] | 39 | //============================================================================// |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 40 | // Testcases |
| 41 | // |
Stephen Hines | 37b74a3 | 2014-11-26 18:48:20 -0800 | [diff] [blame] | 42 | TEST_F(FragmentRefTest, ) { |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 43 | Path path(TOPDIR); |
| 44 | path.append("unittests/test3.txt"); |
| 45 | MemoryAreaFactory* areaFactory = new MemoryAreaFactory(1); |
Stephen Hines | 37b74a3 | 2014-11-26 18:48:20 -0800 | [diff] [blame] | 46 | MemoryArea* area = |
| 47 | areaFactory->produce(path, FileHandle::OpenMode(FileHandle::ReadWrite), |
| 48 | FileHandle::Permission(FileHandle::System)); |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 49 | |
Stephen Hines | f33f6de | 2014-02-14 18:00:16 -0800 | [diff] [blame] | 50 | llvm::StringRef region = area->request(0, 4096); |
Stephen Hines | 37b74a3 | 2014-11-26 18:48:20 -0800 | [diff] [blame] | 51 | RegionFragment* frag = new RegionFragment(region); |
| 52 | FragmentRef* ref = FragmentRef::Create(*frag, 0x0); |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 53 | |
Stephen Hines | f33f6de | 2014-02-14 18:00:16 -0800 | [diff] [blame] | 54 | ASSERT_EQ('H', region.data()[0]); |
| 55 | ASSERT_TRUE(4096 == region.size()); |
| 56 | ASSERT_EQ('H', frag->getRegion().data()[0]); |
Shih-wei Liao | 22add6f | 2012-12-15 17:21:00 -0800 | [diff] [blame] | 57 | ASSERT_TRUE(4096 == frag->getRegion().size()); |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 58 | ASSERT_EQ(frag, ref->frag()); |
Stephen Hines | 37b74a3 | 2014-11-26 18:48:20 -0800 | [diff] [blame] | 59 | ASSERT_EQ('H', |
| 60 | static_cast<RegionFragment*>(ref->frag())->getRegion().data()[0]); |
| 61 | ASSERT_TRUE(4096 == |
| 62 | static_cast<RegionFragment*>(ref->frag())->getRegion().size()); |
| 63 | // ASSERT_EQ('H', ref->deref()[0]); |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 64 | |
Shih-wei Liao | cedee4b | 2012-08-02 23:13:03 -0700 | [diff] [blame] | 65 | ASSERT_TRUE(RegionFragment::classof(frag)); |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 66 | |
Shih-wei Liao | 5460a1f | 2012-03-16 22:41:16 -0700 | [diff] [blame] | 67 | delete frag; |
| 68 | delete areaFactory; |
| 69 | } |