blob: a067542e0fc95c41ffa8ce8c03557b74f4a86ae1 [file] [log] [blame]
Shih-wei Liaocedee4b2012-08-02 23:13:03 -07001//===- FragmentRefTest ----------------------------------------------------===//
Shih-wei Liao5460a1f2012-03-16 22:41:16 -07002//
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 Liaocedee4b2012-08-02 23:13:03 -07009#include "FragmentRefTest.h"
10
Stephen Hines37b74a32014-11-26 18:48:20 -080011#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 Hinesf33f6de2014-02-14 18:00:16 -080017#include <llvm/ADT/StringRef.h>
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070018
19using namespace mcld;
20using namespace mcld::sys::fs;
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070021using namespace mcldtest;
22
23// Constructor can do set-up work for all test here.
Stephen Hines37b74a32014-11-26 18:48:20 -080024FragmentRefTest::FragmentRefTest() {
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070025}
26
27// Destructor can do clean-up work that doesn't throw exceptions here.
Stephen Hines37b74a32014-11-26 18:48:20 -080028FragmentRefTest::~FragmentRefTest() {
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070029}
30
31// SetUp() will be called immediately before each test.
Stephen Hines37b74a32014-11-26 18:48:20 -080032void FragmentRefTest::SetUp() {
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070033}
34
35// TearDown() will be called immediately after each test.
Stephen Hines37b74a32014-11-26 18:48:20 -080036void FragmentRefTest::TearDown() {
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070037}
38
Stephen Hines37b74a32014-11-26 18:48:20 -080039//============================================================================//
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070040// Testcases
41//
Stephen Hines37b74a32014-11-26 18:48:20 -080042TEST_F(FragmentRefTest, ) {
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070043 Path path(TOPDIR);
44 path.append("unittests/test3.txt");
45 MemoryAreaFactory* areaFactory = new MemoryAreaFactory(1);
Stephen Hines37b74a32014-11-26 18:48:20 -080046 MemoryArea* area =
47 areaFactory->produce(path, FileHandle::OpenMode(FileHandle::ReadWrite),
48 FileHandle::Permission(FileHandle::System));
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070049
Stephen Hinesf33f6de2014-02-14 18:00:16 -080050 llvm::StringRef region = area->request(0, 4096);
Stephen Hines37b74a32014-11-26 18:48:20 -080051 RegionFragment* frag = new RegionFragment(region);
52 FragmentRef* ref = FragmentRef::Create(*frag, 0x0);
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070053
Stephen Hinesf33f6de2014-02-14 18:00:16 -080054 ASSERT_EQ('H', region.data()[0]);
55 ASSERT_TRUE(4096 == region.size());
56 ASSERT_EQ('H', frag->getRegion().data()[0]);
Shih-wei Liao22add6f2012-12-15 17:21:00 -080057 ASSERT_TRUE(4096 == frag->getRegion().size());
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070058 ASSERT_EQ(frag, ref->frag());
Stephen Hines37b74a32014-11-26 18:48:20 -080059 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 Liao5460a1f2012-03-16 22:41:16 -070064
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070065 ASSERT_TRUE(RegionFragment::classof(frag));
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070066
Shih-wei Liao5460a1f2012-03-16 22:41:16 -070067 delete frag;
68 delete areaFactory;
69}