Home | History | Annotate | Download | only in unittests
      1 //===- SectionDataTest.cpp ------------------------------------------------===//
      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 "SectionDataTest.h"
     10 
     11 #include <mcld/LD/SectionData.h>
     12 #include <mcld/LD/LDFileFormat.h>
     13 #include <mcld/LD/LDSection.h>
     14 
     15 using namespace mcld;
     16 using namespace mcldtest;
     17 
     18 
     19 // Constructor can do set-up work for all test here.
     20 SectionDataTest::SectionDataTest()
     21 {
     22 }
     23 
     24 // Destructor can do clean-up work that doesn't throw exceptions here.
     25 SectionDataTest::~SectionDataTest()
     26 {
     27 }
     28 
     29 // SetUp() will be called immediately before each test.
     30 void SectionDataTest::SetUp()
     31 {
     32 }
     33 
     34 // TearDown() will be called immediately after each test.
     35 void SectionDataTest::TearDown()
     36 {
     37 }
     38 
     39 //===----------------------------------------------------------------------===//
     40 // Testcases
     41 //===----------------------------------------------------------------------===//
     42 
     43 TEST_F( SectionDataTest, constructor_and_trivial_func ) {
     44   LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
     45 
     46   SectionData* s = SectionData::Create(*test);
     47   EXPECT_TRUE(s->getSection().name() == "test" && \
     48               s->getSection().kind() == LDFileFormat::Null);
     49 
     50 
     51   LDSection::Destroy(test);
     52 }
     53 
     54 TEST_F( SectionDataTest, Fragment_list_and_iterator ) {
     55   LDSection* test = LDSection::Create("test", LDFileFormat::Null, 0, 0);
     56   SectionData* s = SectionData::Create(*test);
     57   EXPECT_TRUE(s->empty());
     58 
     59   new Fragment(Fragment::Alignment, s);
     60   new Fragment(Fragment::Alignment, s);
     61   new Fragment(Fragment::Region, s);
     62   new Fragment(Fragment::Fillment, s);
     63   new Fragment(Fragment::Target, s);
     64   EXPECT_TRUE(5 == s->size());
     65 
     66   //iterator
     67   llvm::iplist<Fragment>::iterator iter=s->begin();
     68   EXPECT_TRUE(Fragment::Alignment == iter->getKind());
     69   ++iter;
     70   EXPECT_TRUE(Fragment::Alignment == iter->getKind());
     71   ++iter;
     72   EXPECT_TRUE(Fragment::Region == iter->getKind());
     73   ++iter;
     74   EXPECT_TRUE(Fragment::Fillment == iter->getKind());
     75   ++iter;
     76   EXPECT_TRUE(Fragment::Target == iter->getKind());
     77   ++iter;
     78   EXPECT_TRUE(iter == s->end());
     79 
     80   LDSection::Destroy(test);
     81 }
     82