blob: ae93015106a35f00478e068ea97481484933a82f [file] [log] [blame]
Stephen Hines37b74a32014-11-26 18:48:20 -08001//===- FragmentTest.cpp ---------------------------------------------------===//
Shih-wei Liaocedee4b2012-08-02 23:13:03 -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//===----------------------------------------------------------------------===//
9#include "FragmentTest.h"
10
Stephen Hines37b74a32014-11-26 18:48:20 -080011#include "mcld/Fragment/Fragment.h"
12#include "mcld/LD/SectionData.h"
13#include "mcld/LD/LDSection.h"
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070014
15using namespace mcld;
16using namespace mcldtest;
17
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070018// Constructor can do set-up work for all test here.
Stephen Hines37b74a32014-11-26 18:48:20 -080019FragmentTest::FragmentTest() {
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070020}
21
22// Destructor can do clean-up work that doesn't throw exceptions here.
Stephen Hines37b74a32014-11-26 18:48:20 -080023FragmentTest::~FragmentTest() {
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070024}
25
26// SetUp() will be called immediately before each test.
Stephen Hines37b74a32014-11-26 18:48:20 -080027void FragmentTest::SetUp() {
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070028}
29
30// TearDown() will be called immediately after each test.
Stephen Hines37b74a32014-11-26 18:48:20 -080031void FragmentTest::TearDown() {
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070032}
33
34//===----------------------------------------------------------------------===//
35// Testcases
Stephen Hines551ae4e2014-04-24 14:41:24 -070036
Stephen Hines37b74a32014-11-26 18:48:20 -080037TEST_F(FragmentTest, Fragment_constructor) {
Shih-wei Liao22add6f2012-12-15 17:21:00 -080038 LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
39 SectionData* s = SectionData::Create(*test);
40 new Fragment(Fragment::Alignment, s);
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070041 EXPECT_TRUE(1 == s->size());
Shih-wei Liao22add6f2012-12-15 17:21:00 -080042 new Fragment(Fragment::Alignment, s);
43 new Fragment(Fragment::Region, s);
44 new Fragment(Fragment::Fillment, s);
Shih-wei Liao22add6f2012-12-15 17:21:00 -080045 new Fragment(Fragment::Target, s);
Shih-wei Liaod0fbbb22013-01-03 06:23:31 -080046 EXPECT_TRUE(5 == s->size());
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070047
Shih-wei Liao22add6f2012-12-15 17:21:00 -080048 LDSection::Destroy(test);
Stephen Hines37b74a32014-11-26 18:48:20 -080049 // SectionData::Destroy(s);
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070050}
51
Stephen Hines37b74a32014-11-26 18:48:20 -080052TEST_F(FragmentTest, Fragment_trivial_function) {
Shih-wei Liao22add6f2012-12-15 17:21:00 -080053 LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
54 SectionData* s = SectionData::Create(*test);
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070055 Fragment* f = new Fragment(Fragment::Alignment, s);
Stephen Hines551ae4e2014-04-24 14:41:24 -070056
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070057 EXPECT_TRUE(Fragment::Alignment == f->getKind());
58
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070059 f->setOffset(5566);
60 EXPECT_TRUE(5566 == f->getOffset());
61
Stephen Hines37b74a32014-11-26 18:48:20 -080062 // always return true
63 EXPECT_TRUE(f->classof(new Fragment(Fragment::Region, s)));
Stephen Hines551ae4e2014-04-24 14:41:24 -070064
Shih-wei Liao22add6f2012-12-15 17:21:00 -080065 LDSection::Destroy(test);
Stephen Hines37b74a32014-11-26 18:48:20 -080066 // SectionData::Destroy(s);
Shih-wei Liaocedee4b2012-08-02 23:13:03 -070067}